使用OpenMP填充一个大数组

Populate a large array using OpenMP

本文关键字:一个 数组 OpenMP 填充 使用      更新时间:2023-10-16

我想创建一个大小(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;
}
相关文章: