我正在开发一个科学的CUDA应用程序,我在GPU上有几个数据字段。我在Visual Studio 15中开发并使用NVIDIAs Nsight 5.4来调试GPU代码。我希望能够在内核中设置断点并检查内存。我通过一个包含指针的结构将设备数据指针传递给内核。
此屏幕截图显示了我的Visual Studio所描述的问题。
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
struct Param {
int* a;
int* b;
};
__global__ void kernel(Param param)
{
*param.a = 5;
*param.b = -5;
printf("a: %p, b: %p\n", param.a, param.b);
}
int main()
{
Param param;
cudaMalloc( ¶m.a, sizeof(int) );
cudaMalloc( ¶m.b, sizeof(int) );
kernel<<<1,1>>>(param);
return 0;
}
我很乐意为你们提供帮助。如果问题也出现在其他配置上,也许你可以尝试一下!
我的配置: