CUDA学习(九)

简介:

分页锁定主机内存:
运行时提供的功能允许使用页面锁定(也称为固定)主机内存(而不是由malloc()分配的常规可分页主机内存):

  • cudaHostAlloc()和cudaFreeHost()分配并释放分页锁定主机内存
  • cudaHostRegister()页面锁定由malloc()分配的一系列内存(请参阅参考手册中的限制)。
    使用分页锁定主机内存的好处:
  • 分页锁定主机内存和设备内存之间的副本可以与内核执行同时执行,用于某些设备,如异步并行执行;
  • 在某些设备上,可以将分页锁定主机内存器映射到设备的地址空间,无需将其复制到设备存储器或从设备存储器复制;
  • 在具有前端总线的系统上,分配为页面锁定主机内存,则主机存储器和设备存储器之间的带宽更高。
    页面锁定的主机内存是一个稀缺的资源,但是,页面锁定内存中的分配将在可分页内存中的分配之前开始失败。 此外,通过减少操作系统可用于寻呼的物理内存量,消耗太多的页面锁定内存会降低整个系统的性能(这边有点翻译不通,附上原文,Page-locked host memory is a scarce resource however, so allocations in page-locked memory will start failing long before allocations in pageable memory. In addition, by reducing the amount of physical memory available to the operating system for paging, consuming too much page-locked memory reduces overall system performance)

在the simple zero-copy CUDA例子中有关于分页锁定内存的详细API文档。
便携式内存:
一个页面锁定内存块可以与系统中的任何设备一起使用(请参阅多设备系统了解多设备系统的更多详细信息),但默认情况下,使用上述页面锁定内存的好处只是 可以与块分配时当前所使用的设备一起使用(并且所有设备共享相同的统一地址空间(如统一虚拟地址空间中所述))。 为了使所有设备都可以使用这些优点,需要通过将标志cudaHostAllocPortable传递给cudaHostAlloc()或通过将标志cudaHostRegisterPortable传递给cudaHostRegister()来实现页面锁定。
写入组合内存:
默认页面锁定的主机内存被分配为可缓存的。 它可以选择性地分配为写入组合,而不是通过将标志cudaHostAllocWriteCombined传递给cudaHostAlloc()。 写入组合内存可释放主机的L1和L2缓存资源,为应用程序的其余部分提供更多缓存。 此外,在整个PCI Express总线传输过程中,不会窥探写入组合内存,这可以将传输性能提高多达40%。
从主机写入组合内存的读取过于缓慢,所以写入组合内存通常应该用于主机只写入的内存。
a08e45aa3cec0fc17c78c5c421944473_hd

目录
相关文章
|
存储 并行计算 异构计算
|
并行计算 异构计算
|
并行计算 API 异构计算
|
缓存 并行计算 调度
|
存储 并行计算 异构计算
|
机器学习/深度学习 缓存 并行计算
|
机器学习/深度学习 存储 算法
|
机器学习/深度学习 API