在使用CUDA的内核调用中使用new
时检查内存是否成功分配的最佳方法是什么?如果没有办法继续执行内核,即使在内存分配失败的情况下,还有类似于(nothrow)
的内容吗?
谢谢!
答案 0 :(得分:3)
我不认为设备端正式支持new
。此外 - 据我所知 - 设备端不支持异常,因此nothrow
等注释无效。
在内核中可以做的是调用malloc
。失败后,函数返回NULL
,您可以正常检查。
请注意
malloc
仅在设备2.0(费米)及更高版本上受支持。cudaDeviceSetLimit
设置上限。进一步阅读:CUDA C编程指南,v.5.0,B.17章节 - 动态全局内存分配
更新:测试显示new
似乎得到了支持,似乎也以同样的方式工作,即失败时返回NULL
。