OpenMP 4可以并行运行目标区域吗?

时间:2017-08-11 08:28:59

标签: gpu openmp offloading

从OpenMP 4中读取一些教程,我发现target个区域可以使用task子句参与CPU depend的相同依赖关系图。

编写CPU task时,我们知道它们可以同时运行。但这可能在GPU上有用吗? GPU可以同时运行多个target区域吗?

我尝试使用此代码:

#include <omp.h>
#include <stdio.h>

int main(){
    int i;

    #pragma omp parallel
    #pragma omp single
    {

    #pragma omp task private(i)
    #pragma omp target
    {
        for(i=0; i<100; i++)
            printf("1 %d\n", i);
    }

    #pragma omp task private(i)
    #pragma omp target
    {
        for(i=0; i<100; i++)
            printf("2 %d\n", i);
    }


    #pragma omp task private(i)
    #pragma omp target
    {
        for(i=0; i<100; i++)
            printf("3 %d\n", i);
    }
    }

    #pragma omp taskwait

}

虽然task以任意顺序执行,但target区域以原子方式执行,一次执行一个区域。

0 个答案:

没有答案