What?
异构计算(Heterogeneous computing)主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。
常见的计算单元类别包括CPU、GPU等协处理器、DSP、ASIC(Application Specific Integrated Circuit)、FPGA等。
从实现的角度来说,异构计算就是制定出一系列的软件与硬件的标准,让不同类型的计算设备能够共享计算的过程和结果,
同时不断优化和加速计算的过程,使其具备更高的计算效能。
FLOPS(Floating-point Operations Per Second,每秒所执行的浮点运算次数)是一个衡量计算机的计算能力的量,
经常使用在需要大量浮点运算的科学运算中。
接下来介绍几种异构计算的硬件平台:
- Tegra is a system on a chip (SoC) series developed by Nvidia for mobile devices such as smartphones, personal digital assistants, and mobile Internet devices. The Tegra integrates an ARM architecture central processing unit (CPU), graphics processing unit (GPU), northbridge, southbridge, and memory controller onto one package.
- Exynos is a series of ARM-based System-on-Chips (SoCs) developed and manufactured by Samsung Electronics and is a continuation of Samsung's earlier S3C, S5L and S5P line of SoCs. (Mali GPU)
- "A" series : Apple Inc. has developed a range of "System on Chip" (SoC) as well as "System in Package" (SiP) mobile application processors to power their mobile consumer devices. ARM CPU + PowerVR GPU.
- Blackfin is a family of 16- or 32-bit microprocessors developed, manufactured and marketed by Analog Devices. The processors have built-in, fixed-point digital signal processor (DSP) functionality supplied by 16-bit Multiply–accumulates (MACs), accompanied on-chip by a small microcontroller.
GPU与CPU的协同工作流程如下,应用程序会被划分为两部分,偏重于大量重复性计算和操作的功能部分,会送到GPU执行;而偏重于逻辑调度的功能部分,会送到CPU执行。
Heterogeneous System Architecture
HSA组织成立的目的在于需求一种更好的应用开发平台架构,能够通过高带宽的共享内存访问,融合CPU的快速逻辑处理、GPU的并行计算和DSP的优化处理过程,从而实现系统应用的速度与效能的提升。HSA组织通过定义用于并行计算的关键接口,来支持一系列的高级编程语言,并创建下一代的通用计算标准。
异构计算系统框架(Heterogeneous System Architecture,HSA)是一种允许CPU和GPU使用相同总线进行内存和任务共享的交叉开发平台。该平台的目标是降低CPU、GPU,以及其它计算机设备之间的通讯延时,使得开发者能够更加便利地操控多种设备,并且在各设备之间实现更加快捷地任务调度和数据交互(当前必须通过OpenCL或者CUDA实现)。
HSA具有以下特点:
- 更加便利地进行异构计算设备编程。
- 构建了一个异构计算的软件开发系统。
- 创建了不依赖于CPU、GPU和DSP的应用。
- 拓展CPU+GPU协同运算架构,构建开源的异构系统软件环境。
hUMA
运算架构技术hUMA是HSA的核心技术,可让CPU与GPU共享同一记忆体空间,解决过去的资料重覆拷贝问题。
它具备以下特点:
均匀内存访问(UMA,Uniform Memory Access)/非均匀内存访问(NUMA,Non-Uniform Memory Access):将内存按节点划分,节点内访问加快,节点间访问变慢。
HSA 1.0(2015/03/18)
AMD Lead,Kaveri APU 系列产品采用HSA 1.0 试行标准,而后续的Carrizo 则会在相关工具成熟的前提下完全使用HSA 1.0 最终标准。
HSA 1.0 技术标准,标准中包含:
- HSA 1.0 硬体标准定义
- HSA 程序示例和编译工具
- HSA 运行环境
- 该标准内包含 ARM、x86 和 MIPS 等多种架构处理器;希望能够兼容 C/C++、OpenMP、Python 等主流编程语言。