CUDA并行程序设计 GPU编程指南: 第一章:超级计算简史

第一章:超级计算简史
2021年8月19日星期四

1、串行转并行:数据分解
IBM cell处理器芯片布局

数据分解模型:各个SPE处理一部分数据,最后,PPC汇总结果。
适用场景:数据密集,数据量大,但数据处理不是太复杂;且各个数据之间,互相独立,可以进行独立计算。比如:图像数据处理,各个像素独立处理;或者无线通信,各个不同频段的数据单独处理等。

2、串行转并行:任务分解
流式模型

任务分解模型:复杂的计算,按流水线,分解成可单独执行的简单计算,各个SPE只执行部分计算任务。
适用场景:计算密集型,数据有限,但计算量比较大,比如:高阶矩阵求逆,计算复杂可以将高阶矩阵,按块进行分解成低阶矩阵单独处理。
如果数据量比较大的话,数据频繁在各个SPE之间流转,数据通路会造成瓶颈,需要仔细评估通信带宽

3、CUDA使用了和Java一样的编译原则:基于虚拟指令集的运行时编译。
优点:
兼容性好,可以硬件、软件解耦,硬件平滑升级。
可以动态生成、修改代码。
不足:
首次加载时间长

4、CUDA替代技术:
OpenCL(open computing Language):由Nvidia、AMD、Apple发起,支持GPU、CPU以及其他有OpenCL驱动的硬件。
Direct Compute:微软开发,可替换CUDA和OpenCL的产品,集成在WIN系列中。DirectX API。可以获得多厂家GPU支持(Win GPU driver)。较为容易移植。但Unix、Linux平台支持有限。

5、以CPU为基础的多节点集群,并行化集群:

OpenMP(Open Multi-Processing): 程序员在代码中插入编译指令,告诉编译器需要并行执行的代码区域,在区域内写出并行指令。编译器编译出并行进程。用于单节点内的程序并行化。
OpenACC:编译器,开源。复制openMP的方法,在代码中插入编译指令,告诉编译器在GPU上执行的代码片段、数据存放在GPU上的存储类型。然后编译器,做些辅助工作,如:数据搬移、代码编译、代码在GPU上的加载、调用、数据回传等等。
CUDA也采用了与OpenMP、OpenACC类似的方式。
OpenCL、Direct Compute的硬件假设为GPU;OpenMP、OpenACC的硬件假设为CPU。

MPI(Message Pass Interface):面向进程的多节点集群通信。
ZeroMQ:消息中间件,简单的链接库。支持跨节点消息通信。与MPI替换关系。Linux、Windows均支持。

Hadoop:Google的Map/Reduce的一个开源版本。Linux平台。文件系统GFS,支持大数据,多节点集群处理。

使用并行库也是一个快速、高效的选择

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值