以下代码广泛用于GPU全局内存分配:
float *M;
cudaMalloc((void**)&M,size);
我想知道为什么我们必须将一个指针传递给一个指向cudaMalloc的指针,以及为什么它的设计不像这样:
float *M;
cudaMalloc((void*)M,size);
感谢您的简要说明!
最佳答案
cudaMalloc
需要将指针的值写入M
(不是*M
),因此M
必须通过引用传递。
另一种方法是以经典的malloc
方式返回指针。但是,与malloc
不同,cudaMalloc
返回错误状态,就像所有CUDA运行时函数一样。