我一直在尝试使用 gcc(主干版本)卸载,但到目前为止我没有这样做。我按照该站点上使用 nvidia 卸载 OpenACC 的说明编译了 gcc:https ://gcc.gnu.org/wiki/Offloading
我还按照同一网站的说明编译了主机编译器。但是,当我尝试在启用 OpenACC 的情况下编译任何内容时出现错误。为了确保我使用了正确的编译器,我cd
进入了主机编译器的目录并运行了这个:
./g++ main.cpp -fopenacc -foffload=nvptx-none
但是我得到了这个错误:
lto-wrapper: fatal error: problem with building target image for nvptx-none
compilation terminated.
/mnt/home/george/usr/local/gcc-7/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.0/../../../../x86_64-pc-linux-gnu/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
跑步./g++ -v
给了我以下信息:
Using built-in specs.
COLLECT_GCC=../g++
COLLECT_LTO_WRAPPER=/mnt/home/george/usr/local/gcc-7/bin/../libexec/gcc/x86_64-pc-linux-gnu/7.0.0/lto-wrapper
OFFLOAD_TARGET_NAMES=x86_64-intelmicemul-linux-gnu:nvptx-none
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-7-20161211/configure --prefix=/home/george/usr/local/gcc-7 --disable-multilib --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu --enable-offload-targets=x86_64-intelmicemul-linux-gnu=/home/george/usr/local/gcc-7-mic,nvptx-none=/home/george/usr/local/nvptx-tools/nvptx-none --with-cuda-driver=/usr/local/cuda-7.5
Thread model: posix
gcc version 7.0.0 20161211 (experimental) (GCC)`
如果有人能指出导致此错误的确切原因,我将不胜感激。
PS:我还为英特尔麦克风卸载编译了 gcc,但我现在不关心这个。
编辑1:
当我编译主机编译器时,--enable-offload-targets=nvptx-none=XXX
应该指向哪里?编译好的 nvptx 还是 accel 编译器?此外,nvptx-tools
目录包括bin
目录和nvptx-none\bin
目录。目前我将其指向后者。