这些天我正在学习OpenMP。我在互联网上阅读了很多博客,阅读完之后,我对“循环并行化中的线程数”有了一个非常普遍的疑问。以下面的例子为例
int x,y;
#pragma omp parallel for private(y)
for(x=0; x < width; x++)
{
for(y=0; y < height; y++)
{
finalImage[x][y] = RenderPixel(x,y, &sceneData);
}
}
在此示例中,有多少线程用于并行化。它是标准方式还是应该明确说明线程数??
答案 0 :(得分:0)
您必须指定线程数,否则OPENMP将自动使用可用的线程。 您可以打印如下所示的线程数
#pragma omp parallel private(tid)
{
tid=omp_get_thread_num();
if(tid==0){
nthreads=omp_get_num_threads();
printf("Number of threads = %d\n",nthreads);
}
为了运行具有特定数字(此处为2)的线程的程序,在bash中,您可以像以下一样运行
OMP_NUM_THREADS=2 ./program