请求最简单的OpenMP目标GPU示例

问题描述 投票:0回答:1

有人可以给我一个简单的C ++程序,它使用以Nvidia GPU为目标的OpenMP,并给我编译它的代码吗?

我正在双8核Intel Xeon上运行Ubuntu 19.10。

我已安装的相关软件包包括:

g++-9                       9.2.1-9ubuntu2
gcc-9-offload-nvptx         9.2.1-9ubuntu2
libgomp-plugin-nvptx1:amd64 9.2.1-9ubuntu2 
nvptx-tools                 0.20180301-1   

我花了数小时寻找和尝试建议,其中一些是相互矛盾的,而且其中许多似乎已经过时。例如,我不想编译该编译器。这是我最小的无效示例:

int main() {
  double s;
#pragma omp target teams distribute parallel for reduction(+:s) map(tofrom:s)
  for (int idx = 0; idx < 1000; ++idx) s+= idx;
  std::cout << s << std::endl;
}

我如何编译它:g++ target2.cc -fopenmp -fno-stack-protector

输出:

cc1plus: warning: could not emit HSAIL for the function [-Whsa]
cc1plus: note: support for HSA does not implement non-gridified OpenMP parallel constructs.
munmap_chunk(): invalid pointer
mkoffload: fatal error: x86_64-linux-gnu-accel-nvptx-none-gcc-9 terminated with signal 6 [Aborted], core dumped
compilation terminated.
lto-wrapper: fatal error: /usr/lib/gcc/x86_64-linux-gnu/9//accel/nvptx-none/mkoffload returned 1 exit status
compilation terminated.
/usr/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
[1]    29044 exit 1     g++ target2.cc -fopenmp -fno-stack-protector

帮助?谢谢。

c++ g++ gpu openmp
1个回答
0
投票

我不知道您的gcc-offload包是如何编译的。但是您可以尝试使用(通过添加)编译器标志'-foffload = nvptx-none'。

© www.soinside.com 2019 - 2024. All rights reserved.