pragma omp parallel for vs.pragma omp parallel 在C++与OpenMP中,之间有什么不同 #pragma omp parallel for for(int i=0; i<N; i++) { ...
pragma omp parallel for vs.pragma omp parallel 在C++与OpenMP中,之间有什么不同pragma omp parallel for vs.pragma omp parallel 在C++与OpenMP中,之间有什么不同 #pragma omp parallel for for(int i=0; i<N; i++) { ... ,c++,openmp,C++,Openmp,pragma omp parallel for vs.pragma omp parallel 在C++与OpenMP中,之间有什么不同 #pragma omp parallel for for(int i=0; i<N; i++) { ... } #pragma omp parallel for 对于(int i=0;i#pragma omp parallel for(int i=0;第二种情况下,每个线程都指向同一个作业(整个for循环)。第一种情况下,线程之间共享工作,因此每个
#pragma omp parallel for
for(int i=0; i<N; i++) {
...
}
#pragma omp parallel for
对于(int i=0;i#pragma omp parallel
for(int i=0;第二种情况下,每个线程都指向同一个作业(整个for循环)。第一种情况下,线程之间共享工作,因此每个线程执行N/t
迭代,其中t
是线程数。我明白了;这就是我需要的。因此,第一个选项(\pragma omp parallel
)将总共执行N次读取*N次迭代,循环中任何形式为vec[i]=result;
的语句都会把一切搞砸。@FranciscoJ.R.Ruiz这是正确的。如果这个答案是您的问题,请随意将其标记为答案:)当然!非常感谢。
#pragma omp parallel
for(int i=0; i<N; i++) {
...
}
#pragma omp parallel
for(int i=0; i<N; i++) {
...
}
#pragma omp parallel
{
#pragma omp for
for( int i=0; i < N; ++i )
{
}
#pragma omp for
for( int i=0; i < N; ++i )
{
}
}