GPU方面的随笔记录

GPU :主流众核协处理器

GPU+CPU的异构并行体系

OpenCL: CPU+GPU异构计算架构

CUDA:NVIDIA 2007年推出的GPU通用计算产品

cuda优缺点:

cuda对于已经在cuda上的数据执行起来很快,但数据从cpu搬到cuda上却很耗时,而且依赖硬件。


并发性 concurrency :相对于软件系统

硬件支持的并发性叫做并行性


并行程序设计模型:

任务并行(task parallelism)

数据并行(data parallelism)

在数据并行程序设计模型中,程序员从可以并发更新的数据元素几何角度来考虑问题。并行性表述为将相同的指令流(一个任务)并发地应用到各个数据元素,并行性体现在数据中。

在任务并行程序设计模型中,程序员直接定义和处理并发任务。问题分解为可以并发运行的任务,然后再映射到一个并行计算机的处理单元(processing element,PE)来执行。


OpenCL同时支持两种模型


除了编程模型外,并行程序设计过程的下一步是将程序映射到真正的硬件。这里异构计算机就会带来特有的问题。系统中的计算单元可能有不同的指令集和不同的内存体系结构,而且可能以不同的速度运行。一个有效可行的程序必须了解这些差别,并能适当的将并行软件映射到最合适的OpenCL设备。


通用GPU(General-Purpose GPU, GPGPU)   编程打破了这个模型。图形以外的算法会修改为合适于GPU处理。cpu完成计算并管理I/O,不过所有“实质性的”计算都“分摊”给GPU。基本上异构平台会被忽略,而把重点放在系统中的一个组件上:GPU。

OpenCL不建议采用这种方法。OpenCL会均衡的使用“所有OpenCL设备”。即负载均衡。


硬件异构性很复杂。所以程序员依赖于隐藏硬件复杂性的高层抽象。


并发是有状态的,某一线程同时执行一个任务,完了才能进行到下一个,而并行是无状态的。

reference:浅谈并发与并行



参考文章:GPU与CPU


你可能感兴趣的:(GPU方面的随笔记录)