1. 页锁定主机内存
运行时提供了以下函数来支持使用页锁定(也称为固定)主机内存(与通过malloc()
分配的常规可分页主机内存相对):
cudaHostAlloc()
和cudaFreeHost()
用于分配和释放页锁定主机内存;cudaHostRegister()
可将由malloc()
分配的内存范围锁定为页锁定(限制条件请参阅参考手册)。
使用页锁定主机内存具有以下优势:
-
异步并发执行:对于某些设备,页锁定主机内存与设备内存之间的拷贝可以与内核执行并发进行(如异步并发执行部分所述)。
-
内存映射:在某些设备上,页锁定主机内存可以映射到设备的地址空间中,从而无需在设备内存之间来回复制数据(详见映射内存部分)。
-
带宽提升:在前端总线系统中,如果主机内存分配为页锁定(尤其是进一步分配为写合并内存时),主机内存与设备内存之间的带宽会更高(如写合并内存部分所述)