sad*_*605 3 parallel-processing cuda
我正在学习cuda,到目前为止,我已经了解到cuda具有cudaMalloc()为全局对象分配内存的功能.但是现在在一些矩阵乘法代码中,我已经看到它们正在使用另一个函数cudaMemcpy(),该函数将一个对象从主机复制到另一个设备或者反过来.但我不明白为什么需要它?由于cudaMalloc()是分配全局内存,所有设备内核都应该有权访问它,不应该吗?
我的误会在哪里?
看看这个牌组中的幻灯片10,11和12 .它们说明了基本的处理流程.通常在内核调用之前出现的cudaMemcpy对应于幻灯片10中的活动.内核调用本身由幻灯片11表示.幻灯片12表示在内核调用之后发生的cudaMemcpy.GPU cudaMalloc类似于CPU malloc- 它只分配空间,但不会用任何数据填充它.使用后在GPU上分配空间后cudaMalloc,必须使用复制数据cudaMemcpy.在这种情况下,"全局存储器"指的是设备上的存储器,即在幻灯片10,11和12的右侧.设备内核只能处理设备上的数据,即已经存在的数据.移动到幻灯片10,11和12右侧的DRAM.