首页 > 解决方案 > 谁能解释如何在 GCC 中使用 OpenACC?

问题描述

我正在使用 WSL Ubuntu。并使用 GCC 编译我的 C++ 代码。

我正在尝试使用 OpenACC 来并行化我的代码。我听说我可以将 OpenACC 与 GCC 一起使用。

所以在我安装了 Ubuntu 之后,我安装了 GCC。

然后我输入如下:

$ g++ -fopenacc -o t testfile.cpp

据我所知,-fopenacc应该使我能够在我的代码中使用 OpenACC。

但是,我收到一条消息说:

lto-wrapper: fatal error: could not find accel/nvptx-none/mkoffload in /usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ (consider using ‘-B’)

所以我想我错过了一些东西。

有谁知道如何将 OpenACC 与 GCC 一起使用?


编辑:

我试过了:

sudo apt-get install gcc-9-offload-nvptx

然后错误消息现在更改为:

lto1: error: ‘-fcf-protection=full’ is not supported for this target
mkoffload: fatal error: x86_64-linux-gnu-accel-nvptx-none-gcc-9 returned 1 exit status

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

标签: c++linuxgcc

解决方案


在安装 gcc-10-offload-nvptx 后,以下是对我有用的带有 OpenACC 指令的 Tiny C++ 模板代码:

g++ -c -g -O -fopenacc -foffload=nvptx-none -fcf-protection=none -foffload=-misa=sm_35 -fno-stack-protector stencil_acc.cxx

g++ -o stencil_acc -g -O -fopenacc -foffload=nvptx-none -fcf-protection=none -foffload=-misa=sm_35 -fno-stack-protector util.o stencil_acc.o

推荐阅读