CUDA学习笔记-硬件构架

https://github.com/ArchaeaSoftware/cudahandbook
http://www.cudahandbook.com/

这个是最近全新一版的书

这个是我目前看的书

代码的话托管至GItHub,大家在学习的时候可以自己查看

这个是最简单的一个图

可以看到就是很简单的一个图,但是还缺点东西就是CPU和GPU一定不是直接相连的,一定还有别的芯片组,是什么呢?是PCIe!

也就是这个东西

关于更多详细的论述,大家可以就去看书籍

我这里就放这种通俗易懂的构架图

特别的还有一个对称的多处理器簇.这个怎么理解就是多个处理器的内存视图要通过内存控制器的同意处理,确保系统"看到的是同一个内存视图.有一点归一化的意思~

后来这样的设计就变成了这样,直接把北桥的内存控制集成到CPU

那视角切换到我们的多个CPU,这个构架图就是不太一样了

可以看到每一个节点(CPU),都有自己的内存带宽池

在多线程的应用或者系统内,依赖于北桥和CPU内的缓存一致性.

对于非本地的内存区读取和CPU的内存区读取有性能上面的差异,所以直接就是将CPU的缓存做的巨大

集成GPU的意思是集成到芯片组

以前的内存池就给CPU用,现在这样的设计的话,GPU和CPU是公用的

当然在运行的是

英伟达的SLI技术可以让程序员操作多GPU的时候,感觉就像操作一个GPU

因为GPU的内存地址是互相共享的

地址空间


人们早期发现给内存地址连续标号是有益的,那么.虚拟地址就是这个发现的衍生:

比如现在又一个16位地址的内存


它的位置是0~65535,我们定义16的值为地址,地址的计算和实体内存内的位置的对应称为寻址(adressing).早期的计算机会执行这种操作,但是后来,多个程序一起运行,每个程序都会一起读取这块共有的内存块,可以在任意的位置进行读取.这肯定是不被允许的,稳定性先不说,别有心机的程序员可以攻击了,或读取或写.

那咋办?看下图

这个就是目前的运行程序的内存视图


当一个程序

开始执行的时候,会给你一块内存,属于你自己的内存.你未经操作系统的允许不可以看其他程序的内存里面有什么.程序申请的时候其实都是申请的都是操作系统的虚拟的地址(就是和实体内存排布不匹配),之后操作系统会计算出这个虚拟地址和实体内存之间的真实的mapping关系.就是起到到了转换层的作用.

在多数的操作系统里面,虚拟内存的单位是页这个单位,至少有4069个字节.而且我我们也会在上面看到,虚拟内存的另一个能力就是可以把不连续的内存地址融合成一个在逻辑上是连续的地址

主机端存在虚拟内存,主机内存不足是会将内存数据交换到虚拟内存中,虚拟内存就是主机中的磁盘空间,需要该页时再重新从磁盘加载回来。这样做可以使用比实际内存更大的内存空间。

锁页内存允许GPU上的MDA控制器在使用主机内存时不用CPU参与。GPU上的显存都是锁页的,因为GPU上的内存时不支持交换到磁盘的。锁页内存就是分配主机内存时锁定该页,让其不与磁盘交换。

CUDA中锁页内存的使用可以使用CUDA驱动API( driver API’s)cuMemAllocHost()或者使用CUDA的运行时API(runtime API)中的cudaMallocHost()。除此之外还可以直接用主机上Malloc()分配的空间,然后将其注册为锁页内存(使用cudaHostRegister()函数完成注册)。

使用锁页内存的好处有以下几点:

1.设备内存与锁页内存之间的数据传输可以与内核执行并行处理。

2.锁页内存可以映射到设备内存,减少设备与主机的数据传输。

3.在前端总线的主机系统锁页内存与设备内存之间的数据交换会比较快;并且可以是write-combining的,此时带宽会跟大。

之后还有一个在CUDA2.2引进的特性叫可共享的锁页内存

(0)

相关推荐

  • 7个提升PyTorch性能的技巧

    作者:William Falcon,来源:AI公园 导读 一些小细节,确实可以提升速度. 在过去的10个月里,在PyTorch Lightning工作期间,团队和我已经接触过许多结构PyTorch代码 ...

  • CUDA学习笔记-CPU与GPU交互

    本节来解决这三个问题,第一个锁页主机的内存,可以说一语道破天机了. 锁页的意思就是一块内存地址不在操作系统的统一管理之内,使用权移交给别的设备 所以对于写CUDA的程序来说,无时不刻不在构建并发程序 ...

  • “物联网开发实战”学习笔记-(一)硬件开发环境的搭建

    这里的分享是通过自己的整理总结出的一个课程的学习笔记,我想用简洁易懂的步骤来分享一个物联网建立的过程. 这里课程上有四个 4 个产品场景 1.可以手机控制的智能电灯 2.可以基于光线自动调节的智能电灯 ...

  • 一则公报案例学习笔记:对修改股东出资期限应否适用资本多数决规则的思考|审判研究

    一.问题的提出 2021年第3期<最高人民法院公报案例>刊登了鸿大(上海)投资管理有限公司与姚锦城公司决议纠纷上诉案,裁判要旨为:"公司股东滥用控股地位,以多数决方式通过修改出资 ...

  • JAVA多线程学习笔记整理

    多线程: 三种创建方法 继承Thread类,以线程运行内容重写run方法,创建Thread对象并用start方法启动该线程. (匿名内部类) (Lambda表达式) 实现Runable接口,以线程运行 ...

  • 周哥学习笔记(2021.5.8)

    心理界限存在的意义,正是为了帮助人们控制情绪进入的量,不至于太过冷漠或太过投入,让我们保持一个合适的距离与外界互动. 人没有办法只通过吸收变得更美好和丰富,它必须通过大胆的碰撞和创造.如果不能保持足够 ...

  • 【学习笔记】控制角色移动的N种方法,但都离不开重复执行

    [学习笔记]控制角色移动的N种方法,但都离不开重复执行 今天我们讲一下控制角色移动的多种方法,因为缺少操作实例,希望课下同学们结合例子好好练习. 首先,我们说一下控制角色移动的多种方法.最比较常见的就 ...

  • 胡希恕伤寒论学习笔记——42

    42.太阳病,外证未解,脉浮弱者,当以汗解,宜桂枝汤. 字面意思是说:太阳病,外证依然存在,脉是浮弱的,治疗上依然需要通过出汗的方法,这时应该用桂枝汤一类的方剂. "宜"字说明不是 ...

  • 量柱擒涨停 - 量柱战法学习笔记(2)

    四.倍量战术 1.倍量的理解 [形态特征]:与前一个交易日比较高出1倍或1倍以上,就是倍量(4倍以上为发烧柱) ; [本质特征]:体现主力强势态度,主动(倍量阳/阴)买/卖盘吸筹坚决; [位置性质]: ...

  • 胡希恕伤寒论学习笔记——43

    43.太阳病,下之微喘者,表未解故也,桂枝加厚朴杏子汤主之. 桂枝加厚朴杏子汤方 桂枝三两 芍药三两 厚朴二两(炙,去皮) 杏仁五十枚(去皮尖)甘草二两(炙) 生姜三两(切)大枣十二枚(掰) 上七味, ...