c++ - 谁能解释如何在 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
解决方案
在安装 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
推荐阅读
- r - 创建函数以返回具有最大观察数的变量
- python - 在集合字典中对具有相同值的所有键进行分组
- swift - 从共享 Userdefaults 获取值时崩溃
- excel - Refreshing Power Query without saving document
- python - Splitting train test and validation by code
- docusignapi - DocuSign Recipient and Custom Fields
- angular - how to remove mapbox labels?
- express - express 中的 cookie-session 是否与 JWT 令牌本质上相同?
- django - Counting all items linked to foreign key
- c - c语言中的reduce函数