我用實例電子書閱讀Cuda的使用cudaMalloc()返回,我碰到這句話來:執行算術主機代碼
然而,這是程序員的責任不取消引用指針由cudaMalloc()從主機上執行的代碼返回的 。主機代碼可能會通過該指針傳遞該指針,對其執行算術運算,甚至將其轉換爲其他類型的 類型。但是你不能用它來從內存中讀取或寫入。
具體來說,'如何完成對cudaMalloc()返回的指針的算術運算?
我試着在調用內核之前和之後運行下面的附加代碼,但是它對輸出沒有任何影響(這是12或者沒有這些行)。
#include <iostream>
#include <cuda_runtime.h>
#include <device_launch_parameters.h>
__global__
void add(int a, int b, int *c)
{
*c += a + b;
}
int main()
{
int *c, d;
cudaMalloc((void**)&c, sizeof(int));
*c = 10;
add << <1,1>> > (5,7,c);
*c += 5;
cudaMemcpy(&d, c, sizeof(int), cudaMemcpyDeviceToHost);
std::cout << d<<std::endl;
return 0;
}
我是個初學者,感謝你的幫助。
解釋完美。謝謝。 –