3. MUSA 软件架构
MUSA(Meta-computing Unified System Architecture),中文名为元计算统一系统架构,是显卡厂商摩尔线程(Moore Threads)推出的运算平台。元计算一词涵盖人工智能计算,图形计算,物理仿真计算等重要领域。MUSA 是一种通用并行计算架构,该架构使 GPU 能够解决复杂的计算问题。 它包含了 MUSA 指令集架构(ISA)以及 GPU 内部的并行计算引擎。
MUSA 带有一个软件环境,允许开发人员使用 C/C++ 语言为 MUSA 架构编写程序,编写出的程序可以在支持 MUSA 的 GPU 上以超高性能运行。同时 MUSA 软件栈还提供了各个领域的加速库,供开发者直接使用,便于快速适配各种高性能计算场景。具体如图 1 所示。

图1 MUSA 软件栈
3.1. MUSA 开发套件
MUSA 开发套件(MUSA Toolkit)是一套用于开发、优化及部署高性能 GPU 加速应用程序的工具包,它包含了 GPU 加速库、调试优化工具、C/C++ 编译器 以及用于部署应用程序的运行时库。
借助 MUSA Toolkit,开发者可以将自己的应用程序快速部署到嵌入式系统、桌面工作站、企业数据中心以及超级计算机上。并且 MUSA Toolkit 具有跨多 GPU 的分布式计算能力,支持将应用程序从单个 GPU 工作站扩展到具有数千个 GPU 的云平台上。
3.2. MUSA 驱动与运行时库
3.2.1. 初始化函数
MUSA 运行时库(MUSA Runtime)没有特定的初始化函数(Initialization),在程序第一次调用 Runtime 库函数时会自动完成初始化。因此在记录 Runtime 函数调用时间和解释程序中第一个 Runtime 调用返回的错误代码时,需要将初始化考虑在内。
在初始化期间,Runtime 将会为系统中每一个设备创建一个 MUSA context,这个 context 是设备的基础 context(primary context),它被程序中所有的主机线程所共享。创建过程在后台运行,并且 Runtime 将隐藏 primary context,使之对 Runtime API 这一层的程序员不可见。
当一个主机线程调用 musaDeviceReset() 函数时,它将会销毁线程当前控制设备的 primary context。即当线程下一次调用 Runtime 函数时将会重启初始化,一个新的 MUSA primary context 将被创建出来。