同时运行2个不同的函数C ++ Open MP

时间:2016-04-20 00:43:33

标签: c++ openmp

我想同时运行两个绝对不同的功能。 我试过这个来检查它是否有效:

#pragma omp parallel
{
    #pragma omp single nowait
    {
    #pragma omp task
    {
        for (unsigned long long i=0; i<numSteps; i++)
            sum1 = sum1 + 4.0/(1.+ (i + .5)*step*(i + .5)*step);
    }
    #pragma omp task
    {
        for (unsigned long long i=0; i<numSteps; i++)
            sum2 = sum2 + 4.0/(1.+ (i + .5)*step*(i + .5)*step);
    }
    #pragma omp taskwait
    }
}

只有一个周期,它以10秒结束并加载我的cpu超过100%。

我希望在两个不同的内核上同时运行2个周期,它以24秒结束并加载cpu超过200%,但我预计接近10秒。

没有#pragma omp single nowait它会在138s结束计算并加载我的cpu超过400%。

我做错了什么?

0 个答案:

没有答案