huangyhg 发表于 2022-12-21 16:41:44

CUDA统一内存、零复制内存、锁页内存


CUDA 6.0以后,出现了:统一内存,unified memory,其具有以下特性:
1 其声明有以下两种方式:
a 使用关键字managed,可选的和device,一起使用,比如:device managed int ret;
b 使用函数cudaMallocManaged():
int *ret;
cudaMallocManaged(&ret,1000*sizeof(int));
cudaFree(ret);

2 使用上面两种方式声明的内存,能够被cpu和gpu同时访问,不需要显式的在cpu和gpu之间使用cudaMemcpy()在cpu和gpu之间进行内存传输
3 cuda的managed内存和其zero-copy memory之间的区别在于:
a zero-copy分配的是CPU中的固定页内存(pinned memory in cpu system ),这种方式下,根据从哪里索引这个内存,其速度将更快或者更慢,零复制内存
实际上是一种特殊形式的内存映射,它允许你将主机内存直接映射到GPU内存空间上。
b 统一内存,将内存与执行空间分开,这样所有的数据访问都很快

cuda中锁页内存和零复制内存
锁页内存允许GPU上的DMA控制器请求主机传输,而不需要CPU主机处理器的参与
CPU仍然可以访问上述锁页内存,但是此内存是不能移动或换页到磁盘上的
在GPU上分配的内存默认都是锁页内存,这只是因为GPU不支持将内存交换到磁盘上
————————————————
版权声明:本文为CSDN博主「跬步达千里」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LIYUAN123ZHOUHUI/article/details/53672656
页: [1]
查看完整版本: CUDA统一内存、零复制内存、锁页内存