似乎CUDA书籍中的一个例子(CUDA by Example:General-Purpose GPU Programming简介)在初始化时从不使指针无效.
两个问题:
GPU使用0x0(或整数0)作为NULL指针吗?我们应该遵循设备指针的C/C++指针练习(例如,在初始化时使它们无效)
我们需要在cudaFree之前检查指针是否为NULL吗?if(devPtr)HANDLE_ERROR(cudaFree(devPtr));
有人说,对于Fermi架构,0x0用于片上共享内存,似乎可以假设0x0不应该被使用的指针指向.
http://forums.thedailywtf.com/forums/p/25369/273567.aspx
开普勒架构怎么样?GPU用0x0地址做什么?
谢谢!
通常,您可以像对待主机指针一样对待 NULL 指针。回答您的问题。
是的。随意使用您在主机上使用的相同做法(随意无效)。
在释放它之前检查 NULL 是安全的,但不是必需的,因为cudaFree(0)实际上不会尝试释放任何内存。(事实上cudaFree(0),通常用于初始化 CUDA 上下文!)我相信大多数现代malloc实现不会尝试释放零值指针。
| 归档时间: |
|
| 查看次数: |
1858 次 |
| 最近记录: |