3

我知道当主机和设备之间的复制操作开始使用 cudaMemcpy 时,主机指针会自动固定。那么有一个单独的 API cudAHostAlloc() 来分配固定的主机内存的意义和必要性是什么?

4

1 回答 1

4

这两个操作不一样,你传递给的主机指针cudaMemcpy不是“自动固定”的。

对于从可分页内存到设备的传输,主机内存被复制到暂存缓冲区。然后,暂存缓冲区是任何传输的目标。

这使得可分页内存传输(通常)比从固定内存缓冲区传输更慢。使用固定内存还允许其他可能性,例如具有可由设备直接访问的映射内存,而无需显式(API 级别)传输。

于 2013-10-09T13:42:53.487 回答