并行算法设计与性能优化---学习摘要

计算机CPU频率已经接近顶峰,由于CPU的功耗与频率的三次方近似成正比,无限制的提升频率已经不可能了。为了提高计算能力,采用的办法有:提高指令级并行能力、在一个时钟周期内执行更多的指令、向量指令、多核和超线程技术。比较常见和最优可能引领未来的是向量化和多核技术:向量化是指使用同一条指令同时操作多个数据;多核技术是在同一个芯片上继承多个核心的方法。服务器集成多个多核处理器称为多路。相比于CPU从单核到多核、多路,从标量到向量的发展。图形处理器GPU一出世就通过将几百、几千核心集成在一块硅片上以满足图形图像及视频对性能的需求,这称为众核。众核处理器将更高比例晶体管用于计算,因此其原生性能也超过多核。

1·1并行化和向量化的作用和串行优化

并行化和向量化的首要任务是尽量发挥硬件提供的全部计算能力,以减少延迟或提高吞吐量。目前绝大多数软件都是标量且串行。优化标量串行代码通常在向量化或并行计算之前进行,结果通常会很吸引人。相比向量化和并行,优化串行代码在操作上通常更容易一些,代码的可扩展性和可维护性通常更好。算法的改进获得性能的提升可能是指数级的,而向量化或并行带来的性能提升通常和向量的长度及核心的数量成正比

1·2GPU渲染流水线

GPU渲染流水线的主要任务就是3D模型到图像的渲染工作,常用图形学API(Direct3D/OpenGL)编程模型中渲染过程被分为几个可以并行处理的阶段,分别由GPU中渲染流水线的不同单元进行处理。GPU输入的模型是数据结构定义的对三维物体描述,包括几何、方向、物体表面材质和光源所在位置。而GPU输出图像则是从观察点对3D场景观测到的二维图像。在GPU渲染流水线的不同阶段,需要处理对象分别是顶点、几何图元、片元、像素。主要包括:顶点生成、顶点处理、图元生成、图元处理、片元生成、片元处理、像素操作。其中顶点之间、图元之间、片元之间的数据相关性很弱,对他们的计算可以独立并行进行。这使得通过并行处理提高吞吐量成为可能。渲染流水线具有时间上的功能并行。流水线的各级可以同时工作,当各级都能满负荷工作时,能够获得最高的性能。渲染流水线具有数据并行性。不仅可以通过SIMD提高每个可编程着色器的性能,还可以在一个GPU内集成多条渲染流水线实现更高的吞吐量。

在图像渲染中,GPU中的可编程计算单元称为着色器。着色器的性能由DirectX中规定的shader mode来区分。GPU中最主要的可编程单元是顶点着色器和像素着色器。两种着色器比例早期是固定的,后期采用统一着色器

1·3GPU的历史和结构

1999年最早的GPU结构:主要由两个模块组成,一个是顶点转换和顶点光照处理器组成。由进行32位浮点运算的固定功能单元组成。另一个是像素着色流水线,有进行定点数运算的固定功能单元组成。2007 NVIDIA发布了CUDA,引发了GPU通用计算革命。用于通用计算主要是Tesla.。

GPU传统上局限于处理图形渲染计算任务,随着GPU可编程性能的不断提高,利用GPU完成通用计算的研究逐渐活跃起来了,将GPU用于图形渲染以外的领域称为GPGPU(general-purpose on graphics processing units)。GPGPU通常采用的是CPU+GPU异构模式,由CPU负责执行复杂逻辑处理和事务管理等不适合数据并行的计算。由GPU负责计算密集型的大规模数据并行计算。这种利用GPU强大处理能力和高带宽来弥补CPU性能不足的计算方式在发掘计算机潜在性能,在成本和性价比方面具有显著优势。传统的GPGPU受硬件可编程性和开发方式的制约,应用领域受到了制约,开发难度很大。

DirectX 10.0 规范推出之前的GPU的主要可编程单元是顶点着色器和像素着色器,在没有采用统一渲染架构的GPU中,两者在物理上是分离的,数量上的比例也是固定的。一个具体应用程序很难同时完全利用两种可编程着色器的性能。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值