3. 编程模型

本章节描述了MXMACA编程模型的几个主要概念。

关于MXMACA C++的详细描述,参见 4 编程接口

3.1. GPGPU

GPU的处理内核远多于CPU。GPU最初用于图形处理,后来也用于向量计算和浮点运算,并逐渐用于很多高度并行计算的应用,进而衍生出了GPGPU,如图 3.1 所示。

../_images/figure_3_1.png

图 3.1 CPU、GPU和GPGPU概念介绍

GPGPU擅长并行计算,分解是并行处理的核心。分解指的是:

  • 将算法划分为单独的任务

  • 将数据集划分为可并行操作的离散块

通常,应用程序由并行计算和顺序计算混合组成,因此系统采用GPU和CPU的混合设计,以最大限度地提高系统整体性能。

3.2. MXMACA:通用并行计算平台和编程模型

MXMACA® 是一个通用并行计算平台和编程模型,主要用于开发高度并行性的应用程序并部署在沐曦GPU上。

MXMACA的软件环境允许开发人员使用C++作为高级编程语言。MXMACA软件栈如图 3.2 所示。

../_images/figure_3_2.png

图 3.2 MXMACA软件栈

MXMACA支持使用C/C++编程语言,且包括以下功能:

  • Templates

  • C++11 Lambdas

  • Classes

  • namespaces等

使用mxcc编译MXMACA C++代码,构建在沐曦GPU平台上运行的MXMACA程序。MXMACA提供以下API接口:

  • MXMACA运行时库:实现MXMACA在功能模块上的运行时API,例如设备管理,流管理,内存管理,执行控制,事件管理等。

  • MXMACA人工智能和计算库(AI & Compute Library,ACL):为沐曦GPU定制的加速库,用于机器学习,数值分析和量子计算等现场应用。

MXMACA也为开发人员提供了一套专业的记录、跟踪、分析、部署和现场维护工具。

MXMACA平台支持多个GPU的并行计算,可以通过PCIe或MetaXLink在节点内,也可通过InfiniBand或以太网上的RDMA跨节点进行。 沐曦集合通信库(MetaX Collective Communication Library,MCCL)可用于多GPU编程,通过隐藏低级通信的细节来简化编程。