如何使用openMP将此循环与innerloops并行?

时间:2016-07-21 08:15:34

标签: c++ parallel-processing openmp

我不擅长并行编程,但我需要更快地完成这个循环。我知道如何使用该库,但我不确定输出是否正确,因为输出非常接近零,但不是。

for ( int l = 0; l < s; ++l ) {

    double denonimator_l = 0;

    for (int g = 0; g < G; ++g ) {
        double &pi_gl = pi(g, l) = w[g];

        for (int i = 0; i < p; ++i )
            pi_gl *= P[g](i, Y(l, i) - 1);

        denonimator_l += pi_gl;
    }

    for (int g = 0; g < G; ++g ) {
        double &pi_gl = pi(g, l);
        pi_gl /= denonimator_l;
    }
}

我需要将四个循环并行而不仅仅是第一个循环。

#pragma omp parallel for schedule(dynamic)

所以,我不确定我是否将上面的行放在第一个循环中就足够了。此外,我需要正确的输出,如果我不使用私有变量,我不知道我是否做错了,因为我正在使用读/写操作。

循环不是完全嵌套的,所以我不能使用折叠。

请注意,每个循环都有一个临时循环变量。

0 个答案:

没有答案