我正在使用OpenMP编写并行程序,其中我生成了一个随机浮点数矩阵,然后对其进行一系列计算。我目前想让生成矩阵的步骤并行运行,但是遇到了一个问题,即rand()函数不适合并发运行。我不想使用锁来对rand提供互斥,因为这是循环中唯一要做的事情,按顺序运行可能更有效。有没有什么方法可以高效地并行执行此步骤?以下是当前代码的部分(没有rand上的互斥锁):
#pragma omp parallel default(private)
{
int i= omp_get_thread_num();
for(int j=0; j<cols; j++)
matrix[i][j]= rand()%1000 + (float)(rand()%100)/(float)(rand()%1000);
}