如何确定缓冲区是在GPU还是CPU上?

时间:2011-03-17 12:27:01

标签: c memory cuda gpu nvidia

在C / CUDA中,如果我传递了一个指针,我怎样才能以编程方式确定指针是指向CPU还是GPU上的内存?为此目的是否有CUDA功能?

1 个答案:

答案 0 :(得分:3)

我不知道CUDA 4.0是怎么回事,但在3.2中你根本不能根据存储在其中的地址来推断它是CPU还是GPU指针。

解决这个问题的方法是创建一个类CudaPtr<T>,在那里隐藏指针并提供基本功能(例如memsetmemloadmemstore,{{1反过来使用CUDA的东西。)

然后,如果您有一个可以在主机或设备上运行的功能,您可以轻松地将其重载为memallocT*


更新:由于统一内存寻址和新的CUDA工具包的事情发生了一些变化。现在,您似乎可以通过cuPointerGetAttribute

在运行时进行此类区分