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