gpt4 book ai didi

rust - 从 Rust 调用 OpenACC 代码不在 GPU 上运行

转载 作者:行者123 更新时间:2023-12-03 11:37:00 26 4
gpt4 key购买 nike

2020 年 9 月 7 日更新
我在 https://gitlab.com/lisanhu2016/rust-openacc-example.git 添加了一个小例子。
这是一个带有 README 的公共(public)存储库,您应该可以在那里尝试该示例。
我一直链接的库是: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
  • 使用 libfoo.a 编译 rust 代码, 并动态链接到库 nvc nvcpumath nvhost nvdevice .
  • 用一些数据运行代码,它运行。
  • 使用 PGI_ACC_TIME=1 运行代码,没有时间信息
  • 使用 ncu --set full 运行代码,它显示没有内核信息

  • 我想我们可能链接到了错误的库,但我不确定,你能帮我解决这个问题吗?非常感谢!!

    最佳答案

    我通过 OpenACC Slack channel 与三虎合作。有两个问题。
    首先,由于他没有与 PGI/NV 链接,他需要添加“-gpu=nordc”标志。 RDC 需要在被 Rust 链接时不执行的设备链接步骤。
    其次,由于“数据”数组是由 Rust 分配的,它不会被放入 CUDA 统一内存中。因此,他需要使用“process_array”例程将其添加到 OpenACC 数据区域。

    关于rust - 从 Rust 调用 OpenACC 代码不在 GPU 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63758643/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com