我见过这种cudamemcpy的例子: (cudaMemcpyAsync(m_haParticleID + m_OutputParticleStart,m_daOutputParticleID + m_OutputParticleStart,size,cudaMemcpyDeviceToHost,m_CudaStream) 在上面的例子中我无法理解cudaMemcpyDeviceToHost和cudaMemAsync的过程,任何人都可以建议我“上面的代码如何工作?”
答案 0 :(得分:2)
cudaMemcpyAsync(m_haParticleID + m_OutputParticleStart,m_daOutputParticleID+ m_OutputParticleStart,size, cudaMemcpyDeviceToHost, m_CudaStream);
cudaMemcpyAsync
是一个cuda运行时API调用,通常用于在GPU和主机之间传输数据。此api调用具有Async
后缀,因为必须使用cuda stream指定它,并立即将控制权返回给主机线程(在传输实际开始之前)。此功能的主要用途是需要实现某种concurrency,通常在GPU上的数据复制和计算操作之间。cudaMemcpyDeviceToHost
指定数据传输的方向。相同的api调用可用于从主机到设备或从设备到主机的传输。 (它也可以用于从设备内存中的一个位置转移到另一个位置。)memcpy
一样,第一个参数(m_haParticleID + m_OutputParticleStart
)是目标指针,第二个参数(m_daOutputParticleID+ m_OutputParticleStart
)是源指针