ein*_*ica 4 c c++ cuda memset calloc
从查看CUDA 5.5 API参考和CUDA C编程指南看来,似乎没有cudaCalloc(),与GPU相当的标准C库calloc().
cudaMalloc(),然后cudaMemset()?是否真的没有用于分配初始化为全零的缓冲区的API功能?
确实没有.
有什么更好的我可以做cudaMalloc()后面跟cudaMemset()?
你可以使用一个宏,如果这是一个方便的问题(你没有告诉我们你的意思更好,如果第一个问题的答案是否定的):
#define cudaCalloc(A, B, C) \
do { \
cudaError_t __cudaCalloc_err = cudaMalloc(A, B*C); \
if (__cudaCalloc_err == cudaSuccess) cudaMemset(*A, 0, B*C); \
} while (0)
Run Code Online (Sandbox Code Playgroud)
上面的宏将使用我通常做的错误检查(基于使用cudaGetLastError();或者如果你愿意,你可以直接建立你的首选错误检查宏.请参阅有关错误处理的这个问题.