CUDA 核函数参数示例:将 int 变量值从主机传递到设备
#include <stdio.h>
global void foo(int* dst, int src) { *dst = src; }
int main() { int* d_dst; int h_src = 123; int h_dst;
cudaMalloc(&d_dst, sizeof(int));
foo<<<1, 1>>>(d_dst, h_src);
cudaMemcpy(&h_dst, d_dst, sizeof(int), cudaMemcpyDeviceToHost);
printf('h_dst: %d\n', h_dst);
cudaFree(d_dst);
return 0;
}
在上面的代码中,我们定义了一个foo函数作为cuda核函数的参数,这个函数的功能是将src的值赋值给dst。我们在主函数中先分配了一个d_dst的device端内存,然后将h_src的值传递给foo函数,在foo函数执行完成后,我们将d_dst的值拷贝回主机端内存,并打印出来,以验证foo函数是否正确将src的值赋值给了dst。最后我们释放了d_dst的内存。
原文地址: https://www.cveoy.top/t/topic/ntCm 著作权归作者所有。请勿转载和采集!