我们可以将OpenMp卸载到任何Intel GPU吗?

时间:2015-07-03 12:52:02

标签: gpu openmp intel gpgpu

我正在使用Ubuntu 14.04。

  1. 有没有办法使用openMp并将并行代码卸载到英特尔GPU中,如英特尔高清显卡?
  2. 如果是:

    1. 我需要哪个icc版本? (我可以用gcc吗?)

    2. 支持哪些英特尔处理器?

2 个答案:

答案 0 :(得分:2)

据我所知,您只能在Intel MIC / Xeon Phi上卸载OpenMP代码。
但是在(接近?)未来的OpenMP 4应该提供这种功能(见post)。

因此,我认为英特尔高清显卡上的GPGPU只能用OpenCL和英特尔CILK完成。

答案 1 :(得分:0)

某些OpenMP 4构造使用英特尔C / C ++编译器在英特尔GPU上运行。

我在Xeon E3上测试了以下代码,可能是Haswell(v3)代,以及英特尔编译器版本15或16(可能是后者)。我在Linux上测试过,发现它在Mac上不受支持。

void vadd4(int n, float * RESTRICT a, float * RESTRICT b, float * RESTRICT c)
{
#if defined(_OPENMP) && (_OPENMP >= 201307)
    //#pragma omp target teams distribute map(to:n,a[0:n],b[0:n]) map(from:c[0:n])
    #pragma omp target map(to:n,a[0:n],b[0:n]) map(from:c[0:n])
    #pragma omp parallel for simd
#else
    #warning No OpenMP target/simd support!
    #pragma omp parallel for
#endif
    for(int i = 0; i < n; i++)
        c[i] = a[i] + b[i];
}

我用来评估英特尔GPU计算软件的完整测试代码是https://github.com/jeffhammond/HPCInfo/blob/master/openmp/offload/test_vadd.c

不幸的是,distribute目标不支持teams-qopenmp-offload=gfx,因此需要一些预处理来生成功能可移植的代码。

其他文件包括:

免责声明:我在英特尔工作,但具有研究能力。我不负责实施或支持英特尔编译器或英特尔GPU软件。