5. 用户编程接口
在整个MXMACA软件栈中,为了满足不同用户和不同场景的诉求,提供了更细粒度、更友好的MXMACA软件栈用户编程接口。对于AI训练领域,主要会涉及到编译器的接口、运行时接口、集合通信接口以及图像处理和视频编解码等方面的接口。
5.1. 编译器接口
mxcc(MXMACA C/C++ Compiler)是MXMACA软件栈中针对MetaX GPU的硬件架构和功能特性设计和发布的编译器,其底层实现也是在LLVM的基础之上,可以支持C、C++、原生代码以及MXMACA软件栈中编程语言、接口和范式,最终生成可以在MetaX GPU上运行的高性能的可执行文件。
mxcc工具的详细介绍,参见《曦云® 系列通用GPU mxcc编译器用户指南》。
5.2. 运行时接口
运行时接口规范了基于MetaX GPU的编程模型和使用的范式,可以帮助开发人员利用曦云系列GPU提供的计算资源,快速构建自己的应用,并在特定的领域中发挥GPU加速的最佳性能。
MXMACA软件栈中运行时接口主要包括设备管理API,事件管理API,流管理API,内存管理API,模型推理API,图像处理API以及视频处理API等。
MXMACA软件栈中运行时接口的详细介绍,参见《曦云® 系列通用GPU运行时API编程指南》。
5.3. 集合通信接口
MetaX Collective Communications Library(MCCL,发音为“Mickel”)是一个提供 GPU 间通信原语的通讯库,这些原语具有拓扑感知能力,并且使用方便。MCCL 实现集合通信和点对点发送/接收原语。
MCCL通信库的详细介绍,参见《曦云® 系列通用GPU MCCL编程指南》。
5.4. 图像处理和视频编解码接口
MXMACA软件栈中,对于数据预处理和视频编解码提供对应的接口和方法,支持主流的H264、H265、AV1、AVS2和JPEG等格式。此外,基于FFmpeg在多媒体领域的广泛应用和用户的开发需求,曦云系列GPU支持将MCRUNTIME中VPU和G2D集成到FFmpeg中,并选取FFmpeg4.3作为集成的基线。
视频编解码库的详细介绍,参见《曦云® 系列通用GPU视频编解码VPU编程指南》。