[大规模并行处理器编程实战]读书笔记_Heterogeneous Parallel Programming_CHAPTER_01
2015-01-12 13:07
351 查看
看了第一章,了解了并行计算相关历史和GPU并行计算的相关知识。
概述
GFLOPS (Giga FLoating-point OPerations per Second) 每秒十亿次浮点运算
Processor Core 处理器内核
一个串行程序只能在一个微处理器内核中运行
并行程序最初采用多线程协作的执行方式,称为并行程序设计,影响巨大称为“并行革命”(concurrency revolution),但是它们都只能在大型计算机上运行。
1.1 GPU与并行计算
多核处理器,每个处理器由两个硬件线程来支持超线程,这种设计使得串行程序的执行速度得以最大化。
众核处理器,由大量较小的内核组成,GeForce GTX 280 系列采用的是240个内核组成的图型处理单元(Graphics Processing Unit, GPU),每个内核都是一个支持多线程的、顺序执行的、单指令流出的处理器,并且可以与其他7个内核共享控制器和指令缓存。
多核处理器和众核处理器的性能差距(电位)主要因为设计不同、内存带宽差距。
GPU负责大规模的密
4000
集型数据并行计算,CPU负责不适合数据并行的计算。
CUDA(Compute Unified Device Architecture, 统一计算设备架构)
GPU设备应用非常广泛,符合浮点运算的标准IEEE(Institute of Electrical and Electronics Engineers)。
GPU 很好的支持单精度浮点运算,现在也支持了双精度浮点运算。
1.2 现代GPU的体系结构
高度线程化的多核处理器(Streaming Multiprocessor, SM)陈列组成。
两个或多个SM形成一个构建块
SM 包含多个流处理器(Streaming Processor, SP),他们之前共享控制逻辑和指令缓存。
每个SP都有一个 MAD(Multiply-ADd)单元和一附加的乘法单元,特殊单元用于执行如平方根(SQuare RooT,SQRT)之类的浮点运算以及超越函数。
图形双速率(Graphics Double Data Rate, GDDR)DRAM。称为全局存储器(Global memory)
GT200 中有240个SP,计算速度已经超过 1 teraflops. 组织良好可以同时运行5 000-12 000 个线程。
1.3 为什么需要更高的速度和并行化
生物学领域、视频音频编解码领域、消费电子游戏、虚拟仿真。
应用程序可加速的倍数取决于应用程序可并行化的部分。
如何突破存储器(DRAM)的限制,这需要用GPU芯片hr存储器减少访问DRAM的次数,还需要限制片上存储器的容量。
GPU作为CPU执行的补充,才能更好的利用CPU/GPU异构系统的并行计算能力。
1.4 并行编程语言与模型
使用最广泛的并行编程模型:为可扩展的集群计算设计的消息传递接口(Message Passing Interface, MPI)、为共享存储器的多处理器系统设计的 OpenMP.
MPI模型缺乏共享存储器的机制,CUDA采用的方式类似于“单向”消息传递弥补了这一缺点。
OpenMP模型的缺点是并行计算的节点规模不能超过200个。
OpenCL编程模型定义了一套通用API,但是实际性能不如 CUDA,并且和CUDA使用方式非常类似。
1.5 综合目标
并行容易高性能难所以高性能是学习目标,高可靠性也是学习目标,最后一个目标是可扩展性。
1.6 本书的组织结构
1-3 章看完了就能写最简单的CUDA并行程序
4-7 熟识CUDA模型,并行计算基础
8-9 优化思维加速程序
10 进一步提升并行计算开发的思维
11 通过CUDA 学习OpenCL
12 展望未来
概述
GFLOPS (Giga FLoating-point OPerations per Second) 每秒十亿次浮点运算
Processor Core 处理器内核
一个串行程序只能在一个微处理器内核中运行
并行程序最初采用多线程协作的执行方式,称为并行程序设计,影响巨大称为“并行革命”(concurrency revolution),但是它们都只能在大型计算机上运行。
1.1 GPU与并行计算
多核处理器,每个处理器由两个硬件线程来支持超线程,这种设计使得串行程序的执行速度得以最大化。
众核处理器,由大量较小的内核组成,GeForce GTX 280 系列采用的是240个内核组成的图型处理单元(Graphics Processing Unit, GPU),每个内核都是一个支持多线程的、顺序执行的、单指令流出的处理器,并且可以与其他7个内核共享控制器和指令缓存。
多核处理器和众核处理器的性能差距(电位)主要因为设计不同、内存带宽差距。
GPU负责大规模的密
4000
集型数据并行计算,CPU负责不适合数据并行的计算。
CUDA(Compute Unified Device Architecture, 统一计算设备架构)
GPU设备应用非常广泛,符合浮点运算的标准IEEE(Institute of Electrical and Electronics Engineers)。
GPU 很好的支持单精度浮点运算,现在也支持了双精度浮点运算。
1.2 现代GPU的体系结构
高度线程化的多核处理器(Streaming Multiprocessor, SM)陈列组成。
两个或多个SM形成一个构建块
SM 包含多个流处理器(Streaming Processor, SP),他们之前共享控制逻辑和指令缓存。
每个SP都有一个 MAD(Multiply-ADd)单元和一附加的乘法单元,特殊单元用于执行如平方根(SQuare RooT,SQRT)之类的浮点运算以及超越函数。
图形双速率(Graphics Double Data Rate, GDDR)DRAM。称为全局存储器(Global memory)
GT200 中有240个SP,计算速度已经超过 1 teraflops. 组织良好可以同时运行5 000-12 000 个线程。
1.3 为什么需要更高的速度和并行化
生物学领域、视频音频编解码领域、消费电子游戏、虚拟仿真。
应用程序可加速的倍数取决于应用程序可并行化的部分。
如何突破存储器(DRAM)的限制,这需要用GPU芯片hr存储器减少访问DRAM的次数,还需要限制片上存储器的容量。
GPU作为CPU执行的补充,才能更好的利用CPU/GPU异构系统的并行计算能力。
1.4 并行编程语言与模型
使用最广泛的并行编程模型:为可扩展的集群计算设计的消息传递接口(Message Passing Interface, MPI)、为共享存储器的多处理器系统设计的 OpenMP.
MPI模型缺乏共享存储器的机制,CUDA采用的方式类似于“单向”消息传递弥补了这一缺点。
OpenMP模型的缺点是并行计算的节点规模不能超过200个。
OpenCL编程模型定义了一套通用API,但是实际性能不如 CUDA,并且和CUDA使用方式非常类似。
1.5 综合目标
并行容易高性能难所以高性能是学习目标,高可靠性也是学习目标,最后一个目标是可扩展性。
1.6 本书的组织结构
1-3 章看完了就能写最简单的CUDA并行程序
4-7 熟识CUDA模型,并行计算基础
8-9 优化思维加速程序
10 进一步提升并行计算开发的思维
11 通过CUDA 学习OpenCL
12 展望未来
相关文章推荐
- [大规模并行处理器编程实战]读书笔记_Heterogeneous Parallel Programming_CHAPTER_02
- [大规模并行处理器编程实战]读书笔记_Heterogeneous Parallel Programming_CHAPTER_03
- 《programming.collective.intelligence》(集体智慧编程)读书笔记
- Heterogeneous Parallel Programming(异构并行编程)学习笔记(四)
- PatentTips - Heterogeneous Parallel Primitives Programming Model
- Spark API编程动手实战-01-以本地模式进行Spark API实战map、filter和collect
- 【读书笔记】"Programming Windows" (chapter 1)
- Chapter 5:UIKit Dynamics - iOS 8 Swift Programming cookBook 读书笔记
- Programming HIVE Chapter 7-14 读书笔记
- 读书笔记01 Programming Interviews Exposed 3rd ed
- 4.3 Reduction代码(Heterogeneous Parallel Programming class lab)
- Heterogeneous Parallel Programming—Week one part one
- Heterogeneous Parallel Programming(异构并行编程)学习笔记(六)
- Heterogeneous Parallel Programming(异构并行编程)学习笔记(五)
- Paradigms of Computer Programming,编程模式学习中递归调用的练习01
- Understanding Unix/Linux Programming 笔记:chapter 9:可编程的shell、shell变量和环境; chapter 10:I/O重定向和管道
- UNIX/LINUX编程实战教程——读书笔记一
- 读书笔记 - Beginning Linux Programming - Chapter 2 Shell Programming
- Understanding Unix/Linux Programming note:chapter 6:为用户编程:终端控制和信号
- 【2014-11-24】Heterogeneous Parallel Programming – Section 2