当通过CUDA在内核调用中使用new时,检查内存成功分配的最佳方式是什么?如果没有类似于(nothrow)的东西,是否有一种方法可以继续执行内核,即使在内存分配失败的情况下也是如此?
谢谢!
发布于 2013-01-27 04:43:48
我不认为new在设备端是官方支持的。此外,据我所知,在设备端不支持异常,所以像nothrow这样的注释没有效果。
您可以在内核中执行的操作是调用malloc。在失败时,该函数只返回NULL,您可以正常检查。
请注意,
malloc仅在devices 2.0 (Fermi)及更高版本上受支持。cudaDeviceSetLimit.设置更高的限制
进一步阅读: CUDA C编程指南,v.5.0,第B.17章-动态全局内存分配
更新:测试表明,new似乎得到了支持,并且似乎以同样的方式工作,即在失败时返回NULL。
https://stackoverflow.com/questions/14541332
复制相似问题