43、CUDA与HIP GPU语言:低级别性能选项

CUDA与HIP GPU语言:低级别性能选项

1. 固定内存与内存分页

在高性能计算中,为了提升性能,我们可以使用固定内存而非可分页内存。CUDA提供了 cudaHostMalloc 函数来分配固定内存,它是常规系统 malloc 例程的直接替代,只是参数略有不同,示例代码如下:

double *x_host = (double *)malloc(stream_array_size*sizeof(double));
cudaMallocHost((void**)&x_host, stream_array_size*sizeof(double));

不过,使用大量固定内存也有缺点。在多用户、多应用的操作系统中,内存分页是将内存页面临时移到磁盘以便其他进程运行的过程。它能让用户感觉可用内存比实际更多,例如在使用Word时临时启动Excel而无需关闭原应用。但内存分页操作开销大,在高性能计算中,由于其会带来严重的性能损失,我们通常会避免使用。

2. 统一内存

一些同时拥有CPU和GPU的异构计算系统正在实现统一内存。统一内存为CPU和GPU提供了单一地址空间的外观。使用统一内存时,GPU运行时系统会自动处理数据移动,尽管可能仍有两个独立数组,但数据会自动移动。在集成GPU上,甚至可能无需移动内存。不过,为了使程序能移植到没有统一内存的系统,建议编写带有显式内存复制的程序,若架构不需要,内存复制操作会被跳过。

3. CUDA中的归约内核

当需要GPU线程之间进行协作

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值