【CUDA并行程序设计系列(1)】GPU技术简介
2015-10-24 10:15
861 查看
前言
CUDA并行程序设计系列是本人在学习CUDA时整理的资料,内容大都来源于对《CUDA并行程序设计:GPU编程指南》、《GPU高性能编程CUDA实战》和CUDA Toolkit Documentation的整理。通过本系列整体介绍CUDA并行程序设计。内容包括GPU简介、CUDA简介、环境搭建、线程模型、内存、原子操作、同步、流和多GPU架构等。本系列目录:
【CUDA并行程序设计系列(1)】GPU技术简介
【CUDA并行程序设计系列(2)】CUDA简介和环境搭建
【CUDA并行程序设计系列(3)】CUDA线程模型
【CUDA并行程序设计系列(4)】CUDA内存
【CUDA并行程序设计系列(5)】CUDA原子操作与同步
【CUDA并行程序设计系列(6)】CUDA流与多GPU
关于CUDA的一些学习资料
CPU的发展
在早期,计算机的性能随着中处理器(CPU)的发展得到了很大的提升,在摩尔定律的驱使下,CPU的时钟频率从30年前的1MHz发展到现在的1GHz~4GHz。但是,靠提高CPU时钟频率来提升计算机性能在现在已经不是一个好的方法了,随着功耗的急剧升高和晶体管的大小已经接近极限,硬件厂商需要需求其它的方案。其中一个方案就是增加处理器的数量,现在所见到的大部分PC机都使用了多核处理器,像Intel的I3、I5、I7系列都是多核CPU。但是,受体积和功耗的现在,CPU的核心数量也不能增加的太多。可以说,近几年CPU并没有得到突破性的发展,连知名程序员Jeff Atwood上次升级PC也是2011年的事了。GPU的发展
在CPU发展的同时,图形处理技术同样经历了巨大的变革,早期的GPU主要用于图形显示,以游戏居多,在那时几乎每一款新的大型游戏推出都会引发显卡更换热潮。图形处理器直接运行图形流水线功能,通过硬件加速渲染图形,使得应用程序能实现更强的视觉效果。GPGPU
GPU的计算能力以及并行性吸引了很多研究人员对把GPU应用于图形之外的兴趣,后来就出现了GPU通用计算(GPGPU)。2007年NVIDIA率先倡导使用GPU加速计算性能。使用GPU加速,最主要的是让程序并行运行,这点和PC集群技术是一样的。一个程序的大部分串行代码依然在CPU上运行,而少部分可并行的(往往也是最耗时间的,如for循环)代码在GPU上运行,如下图。在这种方式下,程序的运行速度得到了很大的提升。
现代的GPU使用了类似于集群技术,一个GPU内有许多流处理器簇(Streaming Multiprocessor, SM),它们类似CPU的核。一个GPU可能有成千上万个核,因此就可以使程序在GPU上并行运行。对比CPU和GPU如下图。
下面是NVIDIA官方给出的对比不同CPU和GPU在浮点型运算的性能:
如果上面的图表还不能明白GPU到底能加速到多块,那么下面这个视频能更直观地说明GPU加速的效果。(看不到视频的话直接转至 优酷链接 | Youtube)
参考文献
《CUDA并行程序设计:GPU编程指南》
《GPU高性能编程CUDA实战》
http://blog.codinghorror.com/building-a-pc-part-viii-iterating/
WHAT IS GPU ACCELERATED COMPUTING?
CUDA C Programming Guide
相关文章推荐
- 用python做GPU计算(1)——安装以及配置
- GPU(CUDA)学习日记(三)------ CUDA基本架构介绍以及编程入门!
- 适用于OpenGL离屏渲染上下文的初始化代码
- 适用于OpenGL离屏渲染上下文的初始化代码
- Jpeg 库的解码OpenCL优化
- Jpeg 库的解码OpenCL优化
- vs2008--CUDA环境配置
- window 下 pycuda 安装运行
- CUDA技术帖: 3D texture linear data VS 3D cudaArray
- 一个你可能不知道的cuda细节
- NVIDIA CUDA统一计算设备架构编程手册(1)
- CUDA中文教程01之心得体会
- CUDA中文教程03之心得体会
- 【GPU开发笔记】二:CUDA初探——查询设备
- 开博第一篇,写点关于GPGPU的东西吧
- cuda一些小问题(不断更新)
- 一种简单的GPU三维图像分割算法
- Linux系统下CUDA中的原子操作
- CUDA --1 基础知识
- 资讯频道最精彩评论Top10