CUDA PTX,驱动程序api - 如何在执行后从内核获取全局变量

时间:2016-01-21 19:17:19

标签: c++ c cuda ptx

这是内核代码的一部分 - 为每个线程声明变量和所需的操作

.global.f32 sum = 0.0
.reg.f32 reg;
atom.global.add.f32 reg, [sum], val;

我想在每个线程中将不同的变量添加到全局变量sum中。 我假设上面发布的代码是正确的 - 一切都顺利编译。但是我将全局变量的值反馈给主机有问题。

在内核执行后,我有以下代码用于主机。

CUdeviceptr hostSumPtr;
size_t bytes;
cuModuleGetGlobal(&hostSumPtr, &bytes, hModule, "sum");

但返回错误代码500“CUDA_ERROR_NOT_FOUND”

有没有办法获取内核中向主机声明的全局变量的值,还是通过不同的方法绕过这个问题?

1 个答案:

答案 0 :(得分:1)

有3个问题:

  1. 全局变量应在内核范围之外声明。
  2. 架构必须设置为sm_30及以上(这仅适用于此特定情况,详细信息未显示)
  3. 内核版本必须设置为3.0及以上(这也仅适用于此特定情况和问题中未显示的详细信息)
  4. 问题已解决。