可分页内存,固定内存,零拷贝内存
可分页内存
可分页内存是cuda中最长使用的其申请使用cudaMalloc(),可分页的意思是因页面错误导致的操作,该操作按照操作系统的要求将主机虚拟内存上的数据移动到不同的物理位置,我的理解,可分页内存是可以被硬盘记录的内存(如内存超限,或电脑睡眠,内存可以和硬盘进行交换),
固定内存
GPU不能在可分页主机内存上安全地访问数据,因为当主机操作系统在物理位置上移动该数据时,它无法控制。
固定内存的申请cudaMallocHost(),这个函数分配了主机内存,这些内存时页面锁定的并且对设备来说是可访问的。由于固定内存能被设备直接访问,所以它能比可分页内存高得多的带宽进行读写,但固定内存的分配和释放成本较高
固定内存另一个应用是在cuda流中流之间的异步拷贝需要使用固定内存
零拷贝内存
零拷贝内存,设备和主机都可以访问。
当设备内存不足时,可利用主机内存,但零拷贝内存作为设备内存的补充将显著降低性能。
零拷贝内存是固定内存,通过cudaHostAlloc()