我有这段代码(下面概述)用于并行化矩阵 vector 乘法。但是,每当我运行它时,我发现它仅在一个线程上执行(即使我指定了4个)。我如何分离并行代码的各个部分以在单独的线程上运行。任何帮助将不胜感激。谢谢

int nthreads;
nthreads = 4;
omp_set_num_threads(nthreads);
chunk = m/nthreads;

  #pragma omp parallel for private(i,j,H) schedule(static,chunk)
  for (i=0; i<m; i++ ){
    C[i]=0;
     for (j=0; j<p; j++) {
       int H = omp_get_thread_num();
       C[i] += (A[i+(j*m)]*B[j]);
   }
 }

最佳答案

您是否将此片段包含在#pragma omp parallel{...}中,或者您可能缺少parallel这个词?

09-30 17:46