我用实例电子书阅读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;
}
我是个初学者,感谢你的帮助。
解释完美。谢谢。 –