dataloader---->pinned memory

https://www.cnblogs.com/biglucky/p/4305131.html

固定内存pinned memory,或者不可分页内存,它的一个重要特点是操作系统将不会对这块内存分页并交换到磁盘上,从而保证了内存始终驻留在物理内存中.也正因为如此,操作系统能够安全地使某个应用程序访问该内存的物理地址,因为这块内存将不会被破坏或者重新定位.

由于GPU知道内存的物理地址,因此就可以使用DMA技术来在GPU和CPU之间复制数据.
当使用可分页的内存进行复制时(使用malloc),CUDA驱动程序仍会通过dram把数据传给GPU,这时复制操作会执行两遍,第一遍从可分页内存复制一块到临时的页锁定内存,第二遍是再从这个页锁定内存复制到GPU上.
当从可分页内存中执行复制时,复制速度将受限制于PCIE总线的传输速度和系统前段速度相对较低的一方.在某些系统中,这些总线在带宽上有着巨大的差异。
因此当在GPU和主机之间复制数据时,这种差异会使页锁定主机内存比标准可分页的性能要高大约2倍.即使PCIE的速度于前端总线的速度相等,由于可分页内训需要更多一次的CPU参与复制操作,也会带来额外的开销.

非锁页内存:主机内存条内存不足时,可以将部分不适用的内存数据先拷到硬盘上,达到释放部分内存的目的。因此对于非页锁内存的复制是:可分页内存(主机端host端)---->临时锁页内存(主机端host端)---->Gpu

锁页内存(pinned memory--整个虚拟内存内部的操作):运行数据只能在内存上的固定页,无法像虚拟内存的硬盘部分移动,保证了内存始终驻留在物理内存中.对于锁页内存的复制是:锁页内存(主机端host端)----->Gpu

相比锁页内存,非锁页内存多了一次在主机端的数据复制过程。

锁页内存弊端:使用固定内存,虚拟内存的功能就会丧失,在应用程序中使用每个页锁定内存时都需要分配物理内存,而且这些内存不能交换到磁盘上.这将会导致系统内存很快被耗尽,因此应用程序在物理内存较少的机器上会运行失败,不仅如此,还会影响系统上其他应用程序的性能.

猜你喜欢

转载自www.cnblogs.com/Henry-ZHAO/p/13195671.html