我可以从主机访问设备全局内存吗?

时间:2013-03-09 05:13:39

标签: cuda

CUDA C编程指南指出,在高于2.0的计算容量上,主机和设备共享64位Linux上的内存空间。我有一个通过标准运行时API" cudaMalloc"分配的全局内存,但似乎主机无法直接访问它。我应该做一些特别的事情让主持人可以访问吗?

1 个答案:

答案 0 :(得分:2)

静态或动态分配的设备内存不能直接从主机访问(例如通过解除引用指针)。必须通过cuda运行时API调用(如cudaMemset或cudaMemcpy)访问它。它们共享相同的地址空间(UVA)这一事实并不意味着它们可以以相同的方式访问。它只是意味着如果我有一个设备指针已经在逻辑地址空间中的特定位置(例如0x00F0000)分配,我不应该期望在同一位置找到主机指针。因此,给定适当的记录保存I can inspect the numerical value of the pointer并立即确定它是主机还是设备指针。

programming guide中,它声明:

  

因此,程序通过调用CUDA运行时(在编程接口中描述)来管理内核可见的全局,常量和纹理内存空间。这包括设备内存分配和释放以及主机和设备内存之间的数据传输。