使用OpenMP在线程之间划分循环任务

时间:2015-11-13 21:58:09

标签: multithreading openmp

假设我想在威胁(比如说4个线程)之间运行以下循环,这样每个线程都负责计算(N / 4),其中N是矩阵的行数。

#pragma omp parallel num_threads(4) private(i,j,M) shared(Matrix)
{

#pragma omp for schedule(static)
  for(i=0; i<N; i++) 
  {
    for(j=0; j<N; j++)
    {
       M[i][j]= Matrix[i][j] + (Matrix[i][j] * Matrix[j][i]);
    }
  }
}

我的问题是:我应该明确指定每个线程将计算的矩阵的每个块的开头和结尾,还是OpenMP将自动在线程之间分配作业?这个问题背后的原因是我在某处读过OpenMP会自动在线程之间分配作业但是当我实现它时,它给了我错误分段错误。

谢谢。

0 个答案:

没有答案