c++ - OpenMP 矩阵 vector 乘法仅在一个线程上执行

标签 c++ multithreading parallel-processing openmp mex

我有这段代码(概述如下)用于并行化矩阵 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 这个词?

关于c++ - OpenMP 矩阵 vector 乘法仅在一个线程上执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30708068/

相关文章:

c++ - C++ 标准在哪里描述了指向基元的指针的转换?

c# - 调用 UI-Element 时线程运行缓慢

C# BackgroundWorker的文化

python - 并行运行所有文件的命令

python - ipcluster3.exe 创建进程失败

clock_gettime() 对比。 gettimeofday() 用于测量 OpenMP 执行时间

c++ - 如何计算递归函数?

c++ - OpenCV 3.2.0 无法访问 xfeatures2d 中的 SURF/SIFT

c++ - 如何在 Linux C/C++ 程序中支持多语言?

c# - 为什么每个人都说 SpinLock 更快?