Torch MUSA
简介
MUSA 概述
MUSA (Metaverse Unified System Architecture) 是摩尔线程公司为摩尔线程 GPU 推出的一种通用并行计算平台和编程模型。它提供了 GPU 编程的简易接口,用 MUSA 编程可以构建基于 GPU 计算的应用程序,利用 GPU 的并行计算引擎来更加高效地解决比较复杂的计算难题。同时摩尔线程还推出了 MUSA 工具箱(MUSA Toolkits),工具箱中包括 GPU 加速库、运行时库 、编译器、调试和优化工具等。MUSA Toolkits 为开发人员在摩尔线程 GPU 上开发和部署高性能异构计算程序提供软件环境。
更多详情,参见 MUSA 官方文档。
PyTorch 概述
PyTorch 是一款开源的深度学习编程框架,可以用于计算机视觉,自然语言处理,语音处理等领域。 PyTorch 使用动态计算,这在构建复杂架构时提供了更大的灵活性。PyTorch 使用核心 Python 概念,如 类、结构和条件循环,因此理解起来更直观,编程更容易。此外,PyTorch 还具有可以轻松扩展、快速实现、生产部署稳定性强等优点。
更多详情,参见 PyTorch 官方文档。
torch_musa 概述
为了摩尔线程 GPU 能支持开源框架 PyTorch,摩尔线程公司开发了 torch_musa。在 PyTorch
v2.0.0 基础上,torch_musa 以插件的形式来支持摩尔线程 GPU,最大程度与 PyTorch 代码解耦,便于代码维护与升级。torch_musa 利用 PyTorch 提供的第三方后端扩展接口,将摩尔线程高性能计算库动态注册到 PyTorch 上,从而使得 PyTorch 框架能够利用摩尔线程显卡的高性能计算单元。利用摩尔线程显卡 CUDA 兼容的特性,torch_musa 内部引入了 cuda 兼容模块,使 PyTorch 社区的 CUDA
kernels 经过 porting 后可运行在摩尔线程显卡上,而且 CUDA
Porting 的工作是在编译 torch_musa 的过程中自动进行,这大幅降低了 torch_musa 算子适配的成本,提高模型开发效率。同时,torch_musa 在 Python 前端接口与 PyTorch 社区 CUDA 接口形式上基本保持一致,这极大地降低了用户的学习成本和模型的迁移成本。
本手册主要介绍了基于 MUSA 软件栈的 torch_musa 开发指南。
torch_musa 核心代码目录概述
-
torch_musa/tests测试文件。 -
torch_musa/core主要包含 Python module,提供 amp/device/memory/stream/event 等模块的 Python 前端接口。 -
torch_musa/csrcC++ 侧实现代码;-
csrc/amp提供混合精度模块的 C++ 实现。 -
csrc/aten提供 C++ Tensor 库,包括MUDNN算子适配、CUDA-Porting算子适配等。 -
csrc/core提供核心功能库,包括设备管理、内存分配管理、Stream 管理、Events 管理等。 -
csrc/distributed提供分布式模块的 C++ 实现。
-