CUDA下在Host端分配的几种内存模式
来源:互联网 发布:淘宝怎么晒图 编辑:程序博客网 时间:2024/05/21 06:47
CUDA下在Host端分配的几种内存模式
【IT168 文档】Pageable VS Pinned
平时我们使用的内存都是Pageable(交换页)的,而另一个模式就是Pinned(Page-locked),实质是强制让系统在物理内存中完成内存申请和释放的工作,不参与页交换,从而提高系统效率,需要使用cudaHostAlloc和cudaFreeHost来分配和释放。
优点
1、带宽更高
2、内核处理和内存拷贝可同时进行
3、可以内存映射(mapped)
缺点
使用pinned会减少系统内存的可用量,进而影响系统性能。
在Pinned模式下又有以下几种属性:
Write-combining
缺省的话pinned拥有cacheable属性,可以用cudaHostAllocWriteCombined标志替代
优点
1、可以释放L1和L2资源,让缓存应用于别的地方
2、write-combining在通过PCIE总线传输时不会被检测,大约可提高
40%的性能
缺点
无法读取或读取极慢。
Portable
对于多线程,只能分配pinned的线程可以得到好处,如果想让别的线程也共享,需要cudaHostAllocPortable标志。
Mapped
传入cudaHostAllocMapped标识可以让宿主与设备内存映射(某些设备支持),这样设备和宿主共用一块内存,在内核函数中可以用cudaHostGetDevicePointer得到指针,不同的宿主线程得到的指针是不同的。
优点
不用在设备中分配和拷贝内存,数据在需要的时候被内核隐式传输
不需要用Stream来异步执行,内核函数自动在执行的同时异步传输
缺点
由于内存共享,内存访问必须同步
- [CUDA] CUDA下在Host端分配的几种内存模式
- CUDA下在Host端分配的几种内存模式
- CUDA下在Host端分配的几种内存模式
- cuda host进行内存分配的想法
- 几种内存的分配方式
- CUDA线性内存分配
- cuda数组内存分配
- CUDA内存分配
- CUDA线性内存分配
- CUDA-CODE2-分配内存
- 内存的分配模式
- OLTP和OLAP模式下的内存分配
- Spark On YARN部署模式下的内存分配情况
- Mac OS X下CUDA Host端的编译选项设定
- MSP430在CCS开发环境下的内存分配
- 【CUDA】二、内存分配函数
- Linux查看内存分配情况的几种方法
- 内存分配的几种方式与野指针
- Ibatis:There is no READABLE property named 'member_id' in class 'java.lang.String'
- LeetCode 289 Game of Life
- loadrunner 调用webservice 抛出 Internal error,please call customer support.Details:class java.lang.Objec
- 程序员学习能力提升三要素
- shouldAutorotateToInterfaceOrientation 不触发或者不执行的问题 转载
- CUDA下在Host端分配的几种内存模式
- UI之targetAction
- Junit工具类--读取xml文件
- 获取当前线程状态
- JVM调优总结 -Xms -Xmx -Xmn -Xss
- C++ 文件操作(不断更新ing)
- [从头学python] 第04节 集合模块collections
- 苹果屏幕尺寸详情
- RGB与HSB之间的转换公式