使用OpenMP填充一个大数组
Populate a large array using OpenMP
我想创建一个大小(10^7(的1D数组,并希望随机填充它。是否可以创建大小10^6的每个10个阵列,随机填充它们,然后使用OpenMP合并成一个数组?
std::random_device rd{};
std::mt19937 rng{rd()};
std::bernoulli_distribution distribution(p);
int array_size = 10000000, N = 50;
array = new uint64_t[array_size];
#pragma omp parallel
{
#pragma omp parallel for
for(int i = 0; i < (array_size); i++){
uint64_t rn = 0;
for(int j = 0; j < N; j++){
rn = ((rn<<1)+(distribution(rng)?1:0));
}
array[i] = rn;
}
}
由于它是一个数组,只需将随机分配放在部分即可完成工作。OpenMP库将负责执行Paralelly。
std::random_device rd{};
std::mt19937 rng{rd()};
std::bernoulli_distribution distribution(p);
int array_size = 10000000, N = 50;
array = new uint64_t[array_size];
#pragma omp parallel for firstprivate(array_size)
{
for(int i = 0; i < (array_size); i++)
array[i] = rn;
}