大家好!要为大家带来一个开源重磅好消息——AsNumpy 正式发布啦!
在人工智能与深度学习快速发展的今天,高效的计算工具是开发者们的必备利器。为进一步提升开发者在昇腾NPU上的计算体验,哈尔滨工业大学计算学部苏统华、王甜甜团队联合CANN团队打造了昇腾NPU原生Numpy——AsNumpy。
什么是AsNumpy
AsNumpy 是一款深度支持昇腾NPU并高度兼容Numpy接口的轻量级Python科学计算库。
通过精心设计的NPUArray核心数据结构,AsNumpy在Python层完全兼容Numpy API,同时在C++底层深度集成了华为 Ascend C算子库,对NPU算子(包括数学运算、线性代数、随机采样等)进行系统化封装,并高效管理dtype、shape以及aclTensor等底层资源,实现了与主机端numpy.ndarray的双向拷贝。借助pybind11实现高效的Python-C++接口绑定,使用户能够像使用Numpy一样在NPU上无缝创建、操作张量。
项目开源地址:https://gitcode.com/cann/asnumpy 
为什么选择AsNumpy
1、兼容性
AsNumpy在Python层完全兼容Numpy API,随未来硬件而演进,用户无需额外学习成本,即可在昇腾NPU上实现高效的科学计算。
2、内部封装
AsNumpy的核心数据结构NPUArray内部封装了dtype、shape等基本信息,以及底层的数据aclTensor。用户在Python层操作时,无需关心底层复杂的细节。
3、资源管理
NPUArray底层实现了内存池管理,提供了方便的构造函数,并且在对象不再使用时,会自动调用析构函数释放资源。这种设计避免了手动管理内存可能引发的内存泄漏问题,让你专注于算法逻辑的实现。

API架构设计
AsNumpy的API架构分为功能模块与基础模块两大类,规划了近300个API接口,目前已实现约113个。API 架构设计示意图如下所示:


AsNumpy已实现涵盖数学运算(三角函数、指数、对数等常见数学计算)、线性代数(矩阵运算与分解)、随机抽样、逻辑函数、数组创建、输入输出等多个功能模块,以及 辅助工具、内存池管理、数据类型 等基础模块,为开发者提供全面的科学计算支持。

未来规划:不止于Numpy兼容(欢迎贡献)

阶段 目标
v0.2 内部代码面向对象重构,结构更清晰
v0.3 持逐元素&规约算子:sum、matmul…
v1.0 兼容Numpy使用率前100的API,支持大部分Numpy算法迁移至 AsNumpy
v2.0 扩展CANN算子库,支持使用Ascend C自定义的CANN算子

邀请你一起,共建AI计算新生态
AsNumpy 不仅仅是一个工具库,更是我们推动AI技术普惠、构建自主AI软件生态的重要一步。
如果你对高性能计算、AI加速、开源项目感兴趣,欢迎加入我们!一起交流想法、提交issue、贡献代码,让AsNumpy变得更强大!
项目开源地址:https://gitcode.com/cann/asnumpy 
让我们一起,用代码改变AI计算的未来!
 

Logo

CANN开发者社区旨在汇聚广大开发者,围绕CANN架构重构、算子开发、部署应用优化等核心方向,展开深度交流与思想碰撞,携手共同促进CANN开放生态突破!

更多推荐