1. 概述
本文档主要用于指导用户在曦云® 系列 GPU 上安装部署和使用 mcPy。
1.1. mcPy 介绍
mcPy 是一个兼容 NumPy 并使用曦云系列 GPU 进行计算加速的 Python 工具库。 mcPy 的目标是给 Python 用户提供 GPU 的计算加速能力,用户只需要执行简单的代码替换就可以将原有的 NumPy 应用程序代码迁移到曦云系列 GPU 上运行。
mcPy 支持 ndarray 数据对象并提供相关的 API 接口,这些 API 接口兼容与之对应的NumPy API,不同之处在于 mcPy 底层由曦云系列 GPU 提供计算加速。
mcPy 提供的 API 接口如下:
N 维数组(ndarray):
cupy.ndarray数据类型(dtypes):boolean(bool)、integer(int8, int16, int32, int64, uint8, uint16, uint32, uint64)、float(float16, float32, float64)和complex(complex64)
支持与
numpy.ndarray相同的编程方式,包括基础索引、高级索引和广播
mcPy例程
模块级函数:
cupy.*线性代数函数:
cupy.linalg.*快速傅里叶变换:
cupy.fft.*随机数生成器:
cupy.random.*
mcPy 的 API 构建在 MXMACA SDK 之上,包括 mcBLAS、mcFFT、mcSPARSE、mcSOLVER、mcRAND、mcThrust、mcCUB,并由这些底层 SDK 提供最佳的性能。
mcPy 支持对 ndarray 对象应用自定义的核函数(kernel function),包括:
内核模版(Kernel Template):在单个核函数中快速定义 element-wise操作和 reduction 操作
原始内核(Raw Kernel):快速导入现有的MXMACA C++代码
即时编译(JIT Compile):从 Python 代码中编译生成内核
内核融合(Kernel Fusion):将多个 mcPy 操作融合成一个内核
mcPy 实现了用于数据交换和互操作的标准API,包括 DLPack、__array_ufunc__(NEP 13)、__array_function__(NEP 18)和数组 API 标准(Array API Standard NEP 47)。
基于这些标准的 API 和协议,mcPy 可以很容易地和 NumPy、PyTorch、TensorFlow、MPI4Py 以及其他支持相同 API 和协议的 Python 库进行数据互操作。
1.2. 软件包信息
mcPy 提供了 maca-mcpy-<VERSION>-linux-x86_64.tar.xz 和 maca-mcpy-<VERSION>-linux-aarch64.tar.xz,可以使用命令 tar -xJf 进行解压,解压后的二进制软件包信息说明参见表 1.1。
软件包类型 |
文件名示例 |
说明 |
|---|---|---|
Python wheel包 |
numbax-x.y.z.n-cp38-cp38-linux_x86_64.whl |
适用于x86_64和Python 3.8的numbax Python二进制扩展包 |
Python wheel包 |
numbax-x.y.z.n-cp310-cp310-linux_x86_64.whl |
适用于x86_64和Python 3.10的numbax Python二进制扩展包 |
Python wheel包 |
mcpy-x.y.z.n-cp38-cp38-linux_x86_64.whl |
适用于x86_64和Python 3.8的mcPy Python二进制扩展包 |
Python wheel包 |
mcpy-x.y.z.n-cp310-cp310-linux_x86_64.whl |
适用于x86_64和Python 3.10的mcPy Python二进制扩展包 |
Python wheel包 |
numbax-x.y.z.n-cp38-cp38-linux_aarch64.whl |
适用于aarch64和Python 3.8的numbax Python二进制扩展包 |
Python wheel包 |
numbax-x.y.z.n-cp310-cp310-linux_aarch64.whl |
适用于aarch64和Python 3.10的numbax Python二进制扩展包 |
Python wheel包 |
mcpy-x.y.z.n-cp38-cp38-linux_aarch64.whl |
适用于aarch64和Python 3.8的mcPy Python二进制扩展包 |
Python wheel包 |
mcpy-x.y.z.n-cp310-cp310-linux_aarch64.whl |
适用于aarch64和Python 3.10的mcPy Python二进制扩展包 |
备注
x.y.z.n 表示对应包的软件发布版本。
mcPy 运行依赖 numbax。
当前支持 x86_64和aarch64 平台的 Python 3.8 和 3.10,应选取适配具体 Python 版本的软件包。