#include #include #include #include #include #include #include using namespace hpc; using namespace hpc::aux; using namespace hpc::matvec; template < template class MatrixA, typename T, typename RandomEnginePool, Require< Ge> > = true > void randomInit(MatrixA& A, RandomEnginePool& repool) { using EngineType = typename RandomEnginePool::EngineType; RandomEngineGuard guard(repool); std::uniform_real_distribution uniform(-100, 100); auto& engine = guard.get(); for (auto [i, j, Aij]: A) { Aij = uniform(engine); (void) i; (void) j; // suppress gcc warning } } template < template class MatrixA, typename T, typename RandomEnginePool, Require< Ge> > = true > void mt_randomInit(MatrixA& A, RandomEnginePool& repool) { #pragma omp parallel for for (std::size_t row = 0; row < A.numRows(); ++row) { auto A_ = A.block(row, 0).dim(1, A.numCols()); randomInit(A_, repool); } } int main() { RandomEnginePool repool(4); GeMatrix A(1051, 781); mt_randomInit(A, repool); }