C OpenMP并行化随机序列

C OpenMP并行化随机序列,c,openmp,C,Openmp,我想并行化一个循环,它有一个由函数erand48生成的随机数序列。序列的顺序很重要,所以我不能改变它。我试过这个: #pragma omp parallel for for(int i=0; i<5; i++){ printf("%f \n",erand48(vector)); } #pragma omp parallel for 对于(int i=0;i如果执行顺序很重要,则不能并行化循环。当循环并行化时,第二次迭代可以在第一次迭代之前运行 您可以生成所

我想并行化一个循环,它有一个由函数erand48生成的随机数序列。序列的顺序很重要,所以我不能改变它。我试过这个:

   #pragma omp parallel for
   for(int i=0; i<5; i++){
       printf("%f \n",erand48(vector));
   }
#pragma omp parallel for

对于(int i=0;i如果执行顺序很重要,则不能并行化循环。当循环并行化时,第二次迭代可以在第一次迭代之前运行


您可以生成所有随机数,将其存储在一个数组中,然后运行并行循环访问该数组。

问题是,如果生成一个数组,该数组的大小太大,内存不足(进程被终止)你可以试着把它分成几块。先用一个外循环串行地生成一批随机数,然后用并行循环来处理这些随机数。然后再循环生成下一批随机数。继续,直到你完成全部工作。OpenMP无法自动将本质上的顺序代码转换为并行代码。