首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >GPU并行计算和CUDA编程(2)-GPU体系架构概述

GPU并行计算和CUDA编程(2)-GPU体系架构概述

作者头像
王云峰
发布2019-12-25 16:03:55
发布2019-12-25 16:03:55
1.6K0
举报

并行计算

并行计算的定义: 应用多个计算资源来解决同一个计算问题

一些名词

  1. Flynn矩阵: SISD(Single Instruction Single Data), SIMD(Single Instruction Multiple Data), MISD(Multiple Instruction Single Data), MIMD(Multiple Instruction Multiple Data), 由 SISD,SIMD,MISD,MIMD组成的矩阵就是Flynn矩阵。从前往后,4种结构越来越复杂。
  2. 共享存储和分布式存储
  3. 通信和同步
  4. 加速比,并行开销,拓展性

MathJax.Hub.Config({ extensions: ["tex2jax.js"], jax: ["input/TeX", "output/HTML-CSS"], tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ], displayMath: [ ['$$','$$'], ["\\[","\\]"] ], processEscapes: true }, "HTML-CSS": { availableFonts: ["TeX"] } });

Amdahl定律

$$1. speed rate = \frac{1}{1-P} $$ 其中P是可以并行的部分,即加速比与任务中不可并行部分的大小成正比,如果完全不可并行,即P = 0,则speed rate = 1,即不加速;如果完全可以并行,即P = 1, 则$speed rate = \infty$, 即加速无穷大倍。 $$2. speed rate = \frac{1}{\frac{P}{N} + S} $$ 其中N是处理器个数,P是可以并行的部分,S是不可以并行,只能串行的部分。可以看到,当N趋近无穷时,speed rate 只取决于S,即不可并行部分是系统的瓶颈所在。

GPU结构

CPU和GPU的内部结构的对比图如下:

图中绿色的为ALU(运算逻辑单元,Arithmetic Logic Unit), 可以看出GPU相比CPU,多了很多ALU,而且ALU占据了内部空间的绝大部分,所以可以看出GPU是对运算很强调的芯片。

下图是一个GPU核的结构,图中所有8个ALU共用一个指令单元Fetch/Decode, 而Ctx则是每个ALU独有的存储上下文,所以,只是一种SIMD结构。

分支问题

由于每个ALU的Ctx不同,所以有可能会出现分支,这时候8个ALU的指令可能会出现分叉,即各自走了不同的路,没法共享同一个指令了,这种结构就会失效。为了解决这个问题,将所有可能出现的分支用if/else来表示,让每个ALU都进行判断,如下图所示:

从图中我们可以看到,每个ALU都进行了if/else的判断,有的ALU走了if部分,有的ALU走了else部分,这样8个ALU就可以共用一个Fetch/Decode单元了。但因为每个ALU都要进行判断,所以做了一部分无用功,牺牲了部分性能,性能最差的时候只有1/8的有用功,即只有1个ALU选择if或选择else,其他7个ALU都做了无用功,性能只有1/8。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 并行计算
    • 一些名词
    • Amdahl定律
  • GPU结构
    • 分支问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档