第三篇:GPU 并行编程的运算架构

《CUDA并行程序设计-GPU编程指南》读书笔记--(1)线程网格、线程块以及线程 线程网格、线程块以及线程 阅读详情

前言

      GPU 是如何实现并行的?它实现的方式较之 CPU 的多线程又有什么分别?

      本文将做一个较为细致的分析。

回到顶部

GPU 并行计算架构

      GPU 并行编程的核心在于线程,一个线程就是程序中的一个单一指令流,一个个线程组合在一起就构成了并行计算网格,成为了并行的程序,下图展示了多核 CPU 与 GPU 的计算网格:

  

      二者的区别将在后面探讨。

      下图展示了一个更为细致的 GPU 并行计算架构:

      该图表示,计算网格由多个流处理器构成,每个流处理器又包含 n 多块。

      下面进一步对 GPU 计算网格中的一些概念做细致分析。

      1. 线程

      线程是 GPU 运算中的最小执行单元,线程能够完成一个最小的逻辑意义操作。

      2. 线程束

      线程束是 GPU 中的基本执行单元。GPU 是一组 SIMD 处理器的集合,因此每个线程束中的线程是同时执行的。这个概念是为了隐藏对显存进行读写带来的延迟所引入的。

      目前英伟达公司的显卡此值为 32,不可改动,也不应该对其进行改动。

      3. 线程块

      一个线程块包含多个线程束,在一个线程块内的所有线程,都可以使用共享内存来进行通信、同步。但一个线程块能拥有的最大线程/线程束,和显卡型号有关。

      4. 流多处理器

      流多处理器就相当于 CPU 中的核,负责线程束的执行。同一时刻只能有一个线程束执行。

      5. 流处理器

      流处理器只负责执行线程,结构相对简单。

回到顶部

GPU 和 CPU 在并行计算方面的不同

      1. 任务数量

      CPU 适合比较少量的任务,而 GPU 则适合做大量的任务。

      2. 任务复杂度

      CPU 适合逻辑比较复杂的任务,而 GPU 则适合处理逻辑上相对简单的任务 (可用比较少的语句描述)。

      3. 线程支持方式

      由于 CPU 中线程的寄存器组是公用的,因此CPU 在切换线程的时候,会将线程的寄存器内容保存在 RAM 中,当线程再次启动的时候则会从 RAM 中恢复数据到寄存器。

      而 GPU 中的各个线程则各自拥有其自身的寄存器组,因此其切换速度会快上不少。

      当然,对于单个的线程处理能力来说,CPU 更强。

      4. 处理器分配原则

      CPU 一般是基于时间片轮转调度原则,每个线程固定地执行单个时间片;而 GPU 的策略则是在线程阻塞的时候迅速换入换出。

      5. 数据吞吐量

      GPU 中的每个流处理器就相当于一个 CPU 核,一个 GPU 一般具有 16 个流处理器,而且每个流处理器一次能计算 32 个数。

回到顶部

总结

1. 了解 CUDA 的线程模型是 GPU 并行编程的基础。

2. 根据待处理数据类型来组织线程结构是非常非常重要的,而这并不轻松,尤其是当出现了需要共享的数据时。

分类: 【13】CUDA并行计算_理论基础

文章来源:http://www.cnblogs.com/muchen/p/6138691.html#_labelTop

CUDA笔记--GPU的结构与SM(流处理器)结构 GPU的结构简单的可以分为: 一个连接GPU和PCIe总线的主机接口; 0~2个复制引擎; 一个连接GPU与GPU内存设备的DRAM接口; 一定数目的TPC或者GPC(纹理处理集群或图形处理集群),每个包含一定的缓存和一些流处理器簇(SM)。 主机接口:主要是读取GPU命令(如内存复制和内核启动命令),并将其分派给相应的硬件单元 阅读详情

相关推荐

GPU(CUDA)学习日记(十一)------ 深入理解CUDA线程层次以及关于设置线程数的思考

GPU线程以网格(grid)的方式组织,而每个网格中又包含若干个线程块,在G80/GT200系列中,每一个线程块最多可包含512个线程,Fermi架构中每个线程块支持高达1536个线程。同一线程块中的众多线程拥有相同的指令地址,不仅能够并行执行,而且能够通过共享存储器(Shared memory)和栅栏(barrier)实现块内通信。这样,同一网格内的不同块之间存在不需要通信的粗粒度并行,而一个块

MySniper11的专栏 1万+

GPU流式编程

现代的GPU,在计算历史中第一次把数据并行、流式计算平台放入几乎每台台式计算机和笔记本电脑中。一些最近的学术派研究论文——以及本书的其他章节——演示了这些流式处理器有能力加速范围很广的应用程序,而不仅仅是它们本来所针对的实时渲染。然而,要利用这个计算能力需要使用一个对很多程序员来说是陌生的,完全不同的编程模型。本章探寻了在CPU和GPU编程之间最基本的差别之一:存储器模型,它不像传统的基于CP

痞子龙3D编程 5233

GPU是如何实现并行计算的?

GPU实现并行计算的方式主要依赖于其硬件架构和软件支持。以下是详细的解释:硬件架构:内存管理:并行计算模型:软件支持:应用实例:GPU通过其强大的硬件架构、高效的内存管理、灵活的并行计算模型以及强大的软件支持,实现了高效的并行计算能力。这些特性使得GPU在处理大规模并行计算任务时具有显著的优势。根据提供的信息,无法回答关于GPU的SIMT架构与其他并行计算架构(如MIMD)的比较和优劣的问题。我搜索到的资料主要集中在SIMT架构的特性和优势,但没有直接比较SIMT与MIMD架构的优劣。然而,可以从我搜索到的

百态·数智思维 | 聚焦大数据、量化与未来AI 1403

3维线程格 gpu_第三篇:GPU 并行编程的运算架构

前言GPU 是如何实现并行的?它实现的方式较之 CPU 的多线程又有什么分别?本文将做一个较为细致的分析。GPU 并行计算架构GPU 并行编程的核心在于线程,一个线程就是程序中的一个单一指令流,一个个线程组合在一起就构成了并行计算网格,成为了并行的程序,下图展示了多核 CPU 与 GPU 的计算网格:二者的区别将在后面探讨。下图展示了一个更为细致的 GPU 并行计算架构:该图表示,计算网格由多个流...

weixin_39565021的博客 174

MATLAB GPU并行编程

MATLAB GPU

潜心 1万+

GPU并行计算CUDA

【代码】GPU并行计算CUDA。

weixin_44585214的博客 2662

矩阵乘法——基于GPU的并行编程模型CUDA程序设计

CUDA并行编程——矩阵乘法 目录CUDA并行编程——矩阵乘法1 题目描述2 设计思路实验环境3 源码3.1 串行程序3.2 并行程序3.3 性能对比与分析 1 题目描述 题目1:编写一个矩阵乘法的GPU并行程序,并且与对应规模的串行程序进行运行时间的比对(n=500,1000,1500,2000,3000,5000),画出规模和时间对比图。 矩阵A(n,n) 矩阵B(n,n) C = A x B 要求:   1、完成程序的开发并验证其正确性,完成一个实验报告(程序源代码、变量和语句的详细说明;   2、

千色千寻的博客 4565

GPU 架构与 CUDA 关系 并行计算平台和编程模型 CUDA 线程层次结构 GPU 的算力是如何计算的 算力峰值

本文主要包含 NVIDIA GPU 硬件的基础概念、CUDA(Compute Unified Device Architecture)并行计算平台和编程模型,详细讲解 CUDA 线程层次结构,最后将讲解 GPU 的算力是如何计算的,这将有助于计算大模型的算力峰值和算力利用率。GPU 硬件基础概念GPU 架构与 CUDA 的关系紧密相连,两者共同构成了 NVIDIA 在并行计算领域的核心技术。

万有文的博客 2303

【架构】GPU架构总结

在之前的 SM 概览图以及上图里,可以注意到 SM 内有两个 Warp Scheduler 和两个 Dispatch Unit. 这意味着,同一时刻,会并发运行两个 warp,每个 warp 会被分发到一个 Cuda Core Group(16 个 CUDA Core), 或者 16 个 load/store 单元,或者 4 个 SFU 上去真正执行,且每次分发只执行 一条 指令,而 Warp Scheduler 维护了多个(比如几十个)的 Warp 状态。在提升性能的同时,H100的功耗也在大幅上升。

qq_43543209的博客 1万+

GPU编程--CPU和GPU的设计区别

本篇结构 前言 概论 CPU简介 GPU简介 并行计算 CPU/GPU对比 适于GPU计算的场景 GPU开发环境 参考博文 一、前言 因为工作需要,需要从github上找一个CUDA的DBSCAN聚类实现,刚开始从github上获取到的代码只支持二维数据,为了适配多维数据,要对代码简单改造,这就需要了解CUDA编程模式。之前没有接触过GPU编程相关概念,甚至于没有学过c语言,加上脑袋笨重...

w1992wishes的博客 1万+

GPU硬件架构及CUDA编程模型

简单介绍了CPU和GPU硬件架构的区别、编程模型及CUDA编程的基本步骤,并以矩阵对应元素相加的GPU实现为例做了简要说明。

zy4213的博客 2254

一文了解GPU并行计算CUDA

CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员可以使用C语言来为CUDA™架构编写程序,所编写出的程序可以在支持CUDA™的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。

Lion_Long的博客 1万+

C#通过OpenCL调用显卡GPU做高效并行运算

GPU的并行运算能力远超CPU,有时候我们会需要用到超大数据并行运算,可以考虑用GPU实现,这是一篇C#调用GPU进行运算的入门教程. 1: 下载相关的库: https://sourceforge.net/projects/openclnet/ 看起来已经N久没更新了, 不过没关系,这只是API声明和参数,opencl本身是有在更新的. 里面有源码也有DLL,可以引用DLL,也可以直接...

dingquyuan5725的博客 4674

gpu并行编程架构

GPU硬件架构不是独立的概念,它是基于cpu并行架构的发展而演变出来的。即是说理解cpu并行架构是理解gpu并行架构的重要基础。 当代处理器都是用冯诺依曼提出的处理器架构为工作基础的 处理单元的电子数字计算机由:一个用于进行二进制运算的算术逻辑单元(ALU),一个用来告诉存储指令和数据的寄存器组(processorregisters)(一个cpu时钟,几千个字节),一个用来控制指令读取的控制单元(controlunit),一个用于存储所有指令和数据的内存,外加一些大容器存储设备及输入输出设备组...

llsansun的博客 2619

程序员未来真的会被淘汰吗?

实际上的计算机:web,图形学Q,Linux系统开发,一系列嵌入式开发,数据库,高性能服务器,中间件开发,三维建模,网络安全,通信协议°,加密算法,服务器集群维护,文件存储引擎Q,编译器,工业软件,客户端,计算机视觉,自然语言处理,算法调优,游戏引擎Q。实际上的计算机:web,图形学Q,Linux系统开发,一系列嵌入式开发,数据库,高性能服务器,中间件开发,三维建模,网络安全,通信协议°,加密算法,服务器集群维护,文件存储引擎Q,编译器,工业软件,客户端,计算机视觉,自然语言处理,算法调优,游戏引擎Q。

——心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,谦虚,自律,反思,成长,还算是比较正能量的博主,公益免费传播……内心特别想在AI界做出一些可以推进历史进程影响力的东西(兴趣使然,有点小情怀,也有点使命感呀)… 1263

robot framework循环读取excel表操作

robot framework循环读取excel表操作 1、安装excellibrary,注意python3.7版本,需安装:robotframework-excel,robotframework-excellibrary-xwfintech 注意:网上有很多excel处理的,都是基于python2.7的,还有一些对python3以上都是修改包的方式,其实都不需要,在pip官网上有python3以上的excellibrary,名称是robotframework-excellib 2.0.0,但是该包关键字不

余墨的博客 1321

GPU的并行运算与CUDA的简介

一:GPU 编程技术的发展历程及现状 1.冯诺依曼计算机架构的瓶颈 曾经,几乎所有的处理器都是以冯诺依曼计算机架构为基础的。该系统架构简单来说就是处理器从存储器中不断取指,解码,执行。 但如今这种系统架构遇到了瓶颈:内存的读写速度跟不上 CPU 时钟频率。具有此特征的系统被称为内存受限型系统,目前的绝大多数计算机系统都属于此类型。 为了解决此问题,传统解决...

weixin_30690833的博客 1287

小蔺的米哈游数据分析师之路——MYSQL篇

作为新人,记录自己mysql学习历程

weixin_47070228的博客 435

最全GPU架构知识介绍

1、GPU的起源GPU缩写为Graphics Processing Unit的,一般称为视觉处理单元。GPU被广泛用于嵌入式系统、移动电话、个人电脑、工作站和电子游戏解决...

架构师技术联盟 2万+

6.5 构网型储能系统的协同控制策略

本文系统阐述了构网型储能系统的协同控制策略,重点分析了多机组群协同运行面临的功率分配不均、动态响应失配等挑战。研究提出了改进型下垂控制与虚拟阻抗法、基于一致性算法的分布式协同控制等解决方案,探讨了构网型储能与同步发电机在惯性响应、一次调频等方面的协同机制,以及与跟网型电源在电压支撑、阻抗重塑等方面的互补作用。文章构建了分层控制架构,为实现多类型电源的全局优化运行提供了技术路径,对提升高比例新能源电力系统的稳定性具有重要意义。

技术工作者 1005

海康威视摄像机SDK二次开发--提取音频保存至文件

由于最近在开发海康威视摄像头,特此记录一下如何提取音频数据,这里主要依靠语音对讲返回的音频数据,通过回调函数写入文件中,加个WAV头即可播放,编码格式可以自己设置在代码中有注释 文件结构 其中CameraInfo内容可以参看海康威视摄像机SDK二次开发–实时预览视频流保存到指定文件中 HIKSDKSaveRealData中的内容 package ClientDemo; import ClientDemo.CameraInfo; import com.sun.jna.NativeLong; import

RichardoMu的博客 3173
上一篇: C++ AMP 学习笔记
下一篇: 锁 和 CopyOnWrite的实现
Poo_Chai
博客等级 码龄9年 178粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值