一、异构计算
1、体系结构的技术演进
单核时代,多核时代,异构时代
2、什么是异构计算系统
WiKiPedia上异构计算系统的定义:
异构计算系统是将一些列拥有不同指令集的计算单元整合在一起,共同执行一个应用程序的系统。
典型的计算单元包括:
通用处理器,例如x86多核CPU
专用处理器,例如GPU,DSP,FPGA,ASIC
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
ASIC(Application Specific Integrated Circuits,专用集成电路),是指应特定用户要求或特定电子系统的需要而设计、制造的集成电路。
3、典型的异构计算系统
(1)、CPU+独立显卡(dGPU)
这是最常见的异构计算系统,由多核x86CPU和一个或者多个独立显卡系统组成。
可以提供数个及数十个TFLOPSd的计算能力。
FLOPS,即每秒浮点运算次数
被用来评估电脑效能,尤其是在使用到大量浮点运算的科学计算领域中。正因为FLOPS字尾的那个S,代表秒,而不是复数,所以不能够省略。
特点
CPU与dGPU内存分离
通过PCI-E总线进行数据传递
多种汇编模型的支持,如CUDA,Opencl,OpenACC等。
(2)、APU
APU是将多核CPU与集成显卡(iGPU)封装在一起形成Soc的计算机处理器。是当前业界处理器的主流。
特点
1、CPU与iGPU共享相同的物理内存。
2、CPU与iGPU通过内部高速总线进行数据通信。
丰富编程模型的支持,如CUDA,Opencl,OpenACC等;对于支持HSA特性的APU,还包括Java,C++AMP,OpenMp。
4、选用GPU做异构计算的原因![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f7f57abcbde9544d1f921195827478dd.png)
1、无论从计算还是访存,GPU都提供了相较CPU更强大的能力。这种优势超过一个数量级。
2、GPU是最成熟,最易获得的计算设备之一。
二、OpenCL标准
1、OpenCL
Open Computing Language的简称,由Apple发起,Khronos组织,面向于异构计算系统。
2、OpenCL是一个编程模型
1、 针对异构计算系统的编程思想。
2、包含API、库和运行时环境。
3、可生成跨平台二进制可执行文件的编译器。
3、OpenCL是公开的标准
免费,跨平台,绝大多数IHV都在支持。
三、OpenCL与CUDA对比
1、OpenCL与CUDA是完全对等的概念
- 无论从编程思想、学习难度等各方面都非常的接近,可以讲OpenCL看做CUDA device API编程。
2、OpenCL与CUDA的不同
- OpenCL是开放的标准,更多的IHV如Intel、AMD、NVIDIA、ARM等都支持。
IHV : 独立硬件出售商。
- OpenCL支持跨平台。
- CUDA是私有标准,只能运行在NVIDIA显卡上。