CUDA编程入门系列(二) GPU硬件架构综述

一、Fermi GPU

        Fermi GPU如下图所示,由16个SM(stream multiprocessor)组成,不同的SM之间通过L2 Cache和全局内存进行相连。整个架构大致分为两个层次,①总体架构由多个SM组成 ②每个SM由多个SP core(stream processor)组成。SP之间通过互连的网络和L1 Cache和Warp Scheduler等结构进行相连。 

二、GT200体系架构 

         下图为GT200体系架构,整体由10个TPC组成,每个TPC包含有三个SM

三、专业术语

        SPA: Streaming Processor Array 流处理器阵列

        TPC/GPC:Texture/Graphics Processor Cluster  纹理/图像 处理簇,相当于把多个SM作为一个小组形成一个簇。

         SM: Streaming Multiprocessor(每个SM包含32个Streaming Processor),是cuda线程块处理的基本单元。

        SP:Streaming Processor ,为CUDA的core 

四、Streaming MultiProcessor(SM)

        整体结构由32个SP和4个SFU(Special Function Units)组成,不同的SP之间通过互连网络interconnected network,L1 Cache和warp Scheduler等结构进行相连。

        warp是一个特殊的概念,实际中GPU上有多个线程,每32个线程称为一个warp,warp是并行结构中基本的运算单元,warp里面的所有线程都执行相同的命令。

        在实际CUDA编程时,通常把线程按照grid,block,thread来组织,其中grid的大小相对没有限制,而block的大小限制根据不同的GPU结构有所不同,一般来说上限为1024。块中的每32个线程称为一个warp,每个warp中的线程共享指令,如果每个线程执行的指令不同,会影响执行效率,所以在实际设计的时候,要保持每个warp执行相同的指令,以此来提高效率。

        SM中的 共享内存shared memory / L1 cache大小一般为64KB

五、 GPU程序架构

        当我们书写一个核函数时,我们把所有的线程称为一个网格grid,每个网格由多个块组成,每个块由多个线程组成(1024上限)。由于warp为32个线程的特殊结构,所以块的大小最好为32的倍数。 在实际执行中,同一个block块在同一个SM上进行,不会跨SM进行处理。

 

六、 内存类型

        每一个线程都有自己的local memory局部内存。

        每个块存在共享内存,这个共享内存的对象为同一个块内的所有线程,用于线程间的通信。共享内存的访问速度要远大于全局内存。

        运行一个GPU程序的话,存在一个全局内存,这个全局内存是所有线程都可以进行访问的,但是访问全局内存的速度要远大于访问共享内存的速度。

        

       不同的GPU含有不同大小的寄存器,寄存器的大小是固定的,如果每一个块需要的寄存器大小越大,那么活跃的块数量就会减少,这就使得并行度会下降,所以在设计程序的时候,要减少寄存器的使用。

 

        共享内存是位于块内的,大小约为64KB。共享内存是有自己的划分方式的,每4个字节或者32个比特为一个bank。

 

         以一个warp里面16个线程访问16个bank为例,如果每一个线程都访问不同的bank,那么这样的访问效率是最高的。如果16个线程中, 有不同的线程访问同一个bank,这就会造成bank conflict(我这里先初步理解为不同的线程访问同一个bank,要按照串行的方式进行访问,即一个线程访问完,另一个线程才能访问),串行的访问方式就会使得访问效率变低。

         所以在设计GPU程序的时候,如果要使用共享内存,那么则要尽量避免多个线程访问同一个bank的情况,避免串行访问,从而提高并行度。

 

        Bank Conflicts 的例子 - 向量求和的规约 

        假如我们用串行的方式进行向量求和,那么代码就是一个for循环,

         for(int i = 0; i < nums.size(); i++){ sum += nums[i]} 

        但如果这个向量的长度较长,使用串行的方式就会大大的影响运行速度。使用并行计算的话则会提高运行速度,这里图中的方法为二叉树算法。但上图存在bank conflict,因为不同的线程可能会访问同一个bank。其解决方法如下图所示:

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/140236.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

logback服务器日志删除原理分析

查看以下的logback官方文档 Chapter 4: Appendershttps://logback.qos.ch/manual/appenders.html 按文档说明&#xff0c;maxHistory是设置保存归档日志的最大数量&#xff0c;该数量的单位受到fileNamePattern里的值%d控制&#xff0c;如果有多个%d,只能有一个主%d&#xff0…

项目管理与SSM框架(二)| Spring

Spring简介 Spring是一个开源框架&#xff0c;为简化企业级开发而生。它以IOC&#xff08;控制反转&#xff09;和AOP&#xff08;面向切面&#xff09;为思想内核&#xff0c;提供了控制层 SpringMVC、数据层SpringData、服务层事务管理等众多技术&#xff0c;并可以整合众多…

第0章:怎么入手tensorflow

近年来人工智能的火爆吸引了很多人&#xff0c;网上相关的热门课程报名的人很多&#xff0c;但是坚持下去的人却少。那些晦涩的原理没有一定知识的积累很难能理解。 如果你对人工智能感兴趣&#xff0c;且想利用人工智能去实现某项功能&#xff0c;而不是对人工智能本身感兴趣&…

Vue3响应式原理初探

vue3响应式原理初探 为什么要使用proxy取代defineProperty使用proxy如何完成依赖收集呢&#xff1f; 为什么要使用proxy取代defineProperty 原因1&#xff1a;defineproperty无法检测到原本不存在的属性。打个&#x1f330; new Vue({data(){return {name:wxs,age:25}}})在vue…

【Linux初阶】多线程4 | POSIX信号量,基于环形队列的生产消费模型,线程池,线程安全的单例模式,STL-智能指针和线程安全

文章目录 ☀️一、POSIX信号量&#x1f33b;1.引入&#x1f33b;2.信号量的概念&#x1f33b;3.信号量函数 ☀️二、基于环形队列的生产消费模型&#x1f33b;1.理解环形队列&#x1f33b;2.代码案例 ☀️三、线程池☀️四、线程安全的单例模式&#x1f33b;1.单例模式与设计模…

前端渲染后端返回的HTML格式的数据

在日常开发中&#xff0c;经常有需要前端渲染后端返回页面的需求&#xff0c;对于不同数据结构&#xff0c;前端的渲染方式也不尽相同&#xff0c;本文旨在对各种情况进行总结。 后端返回纯html文件格式 数据包含html标签等元素&#xff0c;数据类型如下图&#xff1a; 前端通…

檀香香料经营商城小程序的作用是什么

檀香香料有安神、驱蚊、清香等作用&#xff0c;办公室或家庭打坐等场景&#xff0c;都有较高的使用频率&#xff0c;不同香料也有不同效果&#xff0c;高品质香料檀香也一直受不少消费者欢迎。 线下流量匮乏&#xff0c;又难以实现全消费路径完善&#xff0c;线上是商家增长必…

PR2023中如何导入字幕

PR中如何导入字幕 方法一&#xff1a; 点开文本&#xff0c;字幕&#xff0c;新建字幕分段&#xff08;点击右上角…三个点&#xff09; 键入调整内容 方法二 点开基本图形&#xff0c;编辑&#xff0c;调整&#xff0c;拖动位置。

功能集成,不占空间,同为科技TOWE嵌入式桌面PDU超级插座

随着现代社会人们生活水平的不断提高&#xff0c;消费者对生活质量有着越来越高的期望。生活中&#xff0c;各式各样的电气设备为我们的生活带来了便利&#xff0c;在安装使用这些用电器时&#xff0c;需要考虑电源插排插座的选择。传统的插排插座设计多暴露于空间之中&#xf…

【JAVA】日志打印java.util.logging.*函数自定义格式,并且显示调用时行号

1、JAVA自带的这样&#xff1a; 代码如下&#xff1a; import java.util.logging.*; Logger logger Logger.getLogger(MyLogger.class.toString()); logger.info("123");显示效果&#xff1a; 这样的格式&#xff0c;看起来不太好看&#xff0c;比如&#xff1a;会…

BI零售数据分析,当代零售企业的核心竞争力

在数字化转型中&#xff0c;BI智能零售数据分析成为了极其重要的核心竞争力之一。通过对大数据的采集和分析&#xff0c;零售企业可以更好地了解消费者的需求和行为模式&#xff0c;从而做出更准确的决策。例如&#xff0c;通过分析消费者的购物历史、浏览记录等数据&#xff0…

美妆品牌如何有效利用软文推广引流获客

近年来随着美妆品牌的转型升级和居民消费观念的转变&#xff0c;美妆行业取得了更大发展空间&#xff0c;新产品不断涌现&#xff0c;消费者拥有更多选择&#xff0c;那么在竞争激烈的市场中美妆品牌如何才能突破重围&#xff0c;找出新的价值增长点呢&#xff1f; 一、 细分消…