自 gcc 7.1 版以来,gcc 支持将 openmp 代码卸载到 nvidia 卡,但我无法使用它。我在 ubuntu 17.10 上,我已经安装了nvptx-tools
包gcc-offload-nvptx
。当我尝试编译 openmp 目标代码时,出现此错误
ptxas /tmp/ccqGsx2p.o, line 383; error : State space mismatch between instruction and address in instruction 'ld'
ptxas /tmp/ccqGsx2p.o, line 456; error : State space mismatch between instruction and address in instruction 'ld'
ptxas /tmp/ccqGsx2p.o, line 383; error : Unknown symbol '__stack_chk_guard'
ptxas /tmp/ccqGsx2p.o, line 383; fatal : Label expected for forward reference of '__stack_chk_guard'
ptxas fatal : Ptx assembly aborted due to errors
nvptx-as: ptxas returned 255 exit status
mkoffload: fatal error: x86_64-linux-gnu-accel-nvptx-none-gcc-7 returned 1 exit status
compilation terminated.
lto-wrapper: fatal error: /usr/lib/gcc/x86_64-linux-gnu/7//accel/nvptx-none/mkoffload returned 1 exit status
compilation terminated.
/usr/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
我无法找到任何解决方案,并且 gcc 中支持 nvptx 的 openmp 几乎没有文档