我知道当主机和设备之间的复制操作开始使用 cudaMemcpy 时,主机指针会自动固定。那么有一个单独的 API cudAHostAlloc() 来分配固定的主机内存的意义和必要性是什么?
问问题
2752 次
这两个操作不一样,你传递给的主机指针cudaMemcpy
不是“自动固定”的。
对于从可分页内存到设备的传输,主机内存被复制到暂存缓冲区。然后,暂存缓冲区是任何传输的目标。
这使得可分页内存传输(通常)比从固定内存缓冲区传输更慢。使用固定内存还允许其他可能性,例如具有可由设备直接访问的映射内存,而无需显式(API 级别)传输。