2020 年 9 月 7 日更新
我在https://gitlab.com/lisanhu2016/rust-openacc-example.git为此添加了一个小示例
这是一个带有自述文件的公共存储库,您应该可以在那里尝试该示例。
我一直链接的库是:nvc、achost、pgm,你可以在build.rs
===
我正在尝试从 rust 代码中调用 openacc 代码,但我遇到了可能与链接有关的问题。我正在使用以下步骤:
bindings.cc
使用 openacc 标志编译-acc -gpu=managed -Minfo=accel
并将其转换为静态库libfoo.a
[ 87%] Building CXX object CMakeFiles/foo.dir/bindings.cc.o
/opt/nvidia/hpc/20.7/Linux_x86_64/20.7/compilers/bin/nvc++ -fast -O3 -DNDEBUG -fPIC -acc -gpu=managed -Minfo=accel -o CMakeFiles/foo.dir/bindings.cc.o -c /usa/lisanhu/tmp/rust-c-ffi-example/bindings.cc
process_batch:
6, Generating copyout(lengths[:array.l]) [if not already present]
Generating implicit copyin(array.data[:]) [if not already present]
Generating Tesla code
10, #pragma acc loop gang, vector(128) /* blockIdx.x threadIdx.x */
6, Generating implicit copyin(array) [if not already present]
[100%] Linking CXX static library libfoo.a
- 编译 rust 代码
libfoo.a
,并动态链接到库nvc
nvcpumath
nvhost
nvdevice
。 - 用一些数据运行代码,它运行。
- 运行代码
PGI_ACC_TIME=1
,没有时间信息 - 运行代码
ncu --set full
,它没有显示内核信息
我想我们可能链接到了错误的库,但我不确定,你能帮我解决这个问题吗?太感谢了!!