零是CUDA设备指针的有效值吗?

零是CUDA设备指针的有效值吗?,cuda,Cuda,CUdeviceptr是否可以设置为零(NULL)以指示未初始化的指针,或者零在任何情况下都可以是有效的设备指针?此外,是否允许将空设备指针传递给cuMemFree?我假设这类似于它在C++中的工作方式,但我还没有找到任何文档来证实这一点。如果可能的话,我想得到一个可靠来源的答案 编辑:我想知道的是,如果保证我可以编写这样的代码: CUdeviceptr p=0; [... do something else, maybe allocate memory for p ...] if (p !

CUdeviceptr是否可以设置为零(NULL)以指示未初始化的指针,或者零在任何情况下都可以是有效的设备指针?此外,是否允许将空设备指针传递给cuMemFree?我假设这类似于它在C++中的工作方式,但我还没有找到任何文档来证实这一点。如果可能的话,我想得到一个可靠来源的答案

编辑:我想知道的是,如果保证我可以编写这样的代码:

CUdeviceptr p=0;

[... do something else, maybe allocate memory for p ...]

if (p != 0) {
     cuMemFree(p);
     p = 0;
}

如果没有
if
语句,甚至更好,就像我可以使用
delete
一样。还是要用手来跟踪<代码> P<代码>的分配状态?< /P> < P> 0地址不是C++的特性——它是硬件特性。 CPU阻止访问地址0并引发中断。 0地址在GPU中也是无效地址。
尝试将0传递给CuMeField,结果应该得到结果。

< P> 0地址不是C++特性——它是硬件特性。 CPU阻止访问地址0并引发中断。 0地址在GPU中也是无效地址。
尝试将0传递给cuMemFree,结果应该是a。

是的,0对于CUdeviceptr是一个保证无效的值


我不确定cuMemFree(0)是否始终有效,但在CUDA 4.0中,cuMemFree(0)返回CUDA_成功

是,0是CUdeviceptr的保证无效值


我不确定cuMemFree(0)是否始终有效,但在CUDA 4.0中,cuMemFree(0)返回CUDA_成功