最近好奇,cudaMemcpyAsync()这个函数相对于Host端是否真的的异步的。
简单测试了一下,发现有些时候并非是异步的。
通过阅读文档发现,cudaMemcpyAsync()是否异步遵循以下定义。
通过以上文档说明,对于cudaMemcpyAsync(), Host端pinned memory是必须的(与函数参数说明中一直)。
非pinned memory的情况下,不是同步的,就是需要将pageable memory转化成pinned memory,之后再异步,非常耗时。
最近好奇,cudaMemcpyAsync()这个函数相对于Host端是否真的的异步的。
简单测试了一下,发现有些时候并非是异步的。
通过阅读文档发现,cudaMemcpyAsync()是否异步遵循以下定义。
通过以上文档说明,对于cudaMemcpyAsync(), Host端pinned memory是必须的(与函数参数说明中一直)。
非pinned memory的情况下,不是同步的,就是需要将pageable memory转化成pinned memory,之后再异步,非常耗时。