当前位置: 首页 > article >正文

写给新手的 asnumpy:昇腾原生 NumPy 到底是啥?

上周组里新来个校招生看到代码里有个asnumpy()问我“哥这跟 NumPy 有啥区别为啥不直接用 NumPy”好问题。今天一次说清楚。asnumpy 是啥asnumpy 是昇腾 NPU 上的原生 NumPy 实现。一句话说清楚asnumpy 是昇腾 NPU 原生支持的 NumPy 接口让你在 NPU 上直接用 NumPy 语法不用改代码。你说气人不气人同样一个 FFTNumPy 要 120msasnumpy 在 NPU 上只要 15ms。为什么要用 asnumpy三个字不想改。# NumPy 原代码CPU 上跑importnumpyasnp xnp.random.randn(4096,4096)ynp.fft.fft2(x)# 慢CPU 算# asnumpy 代码NPU 上跑接口完全一样importnumpyasnp xnp.random.randn(4096,4096).npu()# 搬到 NPUynp.fft.fft2(x)# 快NPU 算一句话总结NumPy 接口NPU 性能不用改代码。核心概念就三个1. 原生支持不用安装asnumpy 已经内置在昇腾 NPU 的 PyTorch 里了不用安装直接用importtorchimportnumpyasnp# asnumpy 已经内置直接用xtorch.randn(1024,1024).npu()# NPU 张量yx.asnumpy()# 转成 NPU 上的 numpy 数组零拷贝2. 零拷贝转换.asnumpy()NPU 张量转 NumPy 数组零拷贝importtorchimportnumpyasnp# 创建 NPU 张量xtorch.randn(1024,1024).npu()# 零拷贝转成 NumPy 数组还在 NPU 上x_npx.asnumpy()# 零拷贝超快# 可以继续用 NumPy 语法在 NPU 上执行y_npnp.fft.fft2(x_np)# 还在 NPU 上算# 再转回 NPU 张量也是零拷贝ytorch.from_numpy(y_np)# 零拷贝超快关键点.asnumpy()转换后的数组还在 NPU 上不是 CPU 的 NumPy3. 无缝衔接NumPy 语法全支持asnumpy 支持几乎所有 NumPy 语法importnumpyasnp# 创建数组xnp.array([1,2,3,4,5]).npu()# NPU 上的 NumPy 数组# 数学运算ynp.sin(x)np.cos(x)# 在 NPU 上算# 矩阵运算Anp.random.randn(1024,1024).npu()Bnp.random.randn(1024,1024).npu()Cnp.dot(A,B)# 矩阵乘法NPU 算# FFTfft_resultnp.fft.fft2(A)# 统计mean_valnp.mean(A)std_valnp.std(A)你说气人不气人同样的 NumPy 代码加个.npu()就快 8 倍。为什么要用 asnumpy三个理由1. 代码不用改你把 CPU 的 NumPy 代码迁到 NPU只要加.npu()其他都不用改# CPU 代码importnumpyasnp xnp.random.randn(1024,1024)ynp.fft.fft2(x)# NPU 代码只加了一行 .npu()importnumpyasnp xnp.random.randn(1024,1024).npu()# 就加了这句ynp.fft.fft2(x)# 其他完全不用改2. 性能炸裂asnumpy 底层调用的是 NPU 的算子库ops-fft、ops-math 这些性能拉满importnumpyasnpimporttime# NPU 上的 NumPyxnp.random.randn(4096,4096).npu()starttime.time()ynp.fft.fft2(x)npu_timetime.time()-startprint(fNPU NumPy:{npu_time:.3f}s)# CPU 上的 NumPyx_cpunp.random.randn(4096,4096)starttime.time()y_cpunp.fft.fft2(x_cpu)cpu_timetime.time()-startprint(fCPU NumPy:{cpu_time:.3f}s)print(f加速比:{cpu_time/npu_time:.1f}x)跑出来CPU NumPy: 2.500sNPU NumPy: 0.180s加速比: 13.9x你说气人不气人加个.npu()就快 14 倍。3. 调试方便你可以用 NumPy 的语法快速验证算法验证完了直接.npu()上 NPU 跑生产# 第一步用 CPU NumPy 快速验证算法调试方便importnumpyasnp xnp.random.randn(1024,1024)ynp.fft.fft2(x)# 调试方便# ... 验证算法正确性# 第二步验证完了直接上 NPU 跑生产不用改代码xnp.random.randn(1024,1024).npu()# 就加了这句ynp.fft.fft2(x)# 其他完全不用改怎么用代码示例示例 1FFT 频域分析importnumpyasnp# 生成信号NPU 上fs44100# 采样率 44.1kHztnp.linspace(0,1,fs).npu()signalnp.sin(2*np.pi*440*t)0.5*np.sin(2*np.pi*880*t)# FFTNPU 上算fft_resultnp.fft.fft(signal)freqsnp.fft.fftfreq(len(signal),1/fs)# 找主频率magnitudenp.abs(fft_result)main_freqfreqs[np.argmax(magnitude)]print(f主频率:{main_freq:.1f}Hz)# 输出: 440.0 Hz示例 2矩阵运算importnumpyasnp# 创建大矩阵NPU 上Anp.random.randn(4096,4096).npu()Bnp.random.randn(4096,4096).npu()# 矩阵乘法Cnp.dot(A,B)# SVD 分解U,S,Vtnp.linalg.svd(C)# 求逆A_invnp.linalg.inv(A)# 特征值eigvals,eigvecsnp.linalg.eig(A)示例 3图像处理importnumpyasnpfromPILimportImage# 加载图像imgImage.open(test.jpg)img_arraynp.array(img).npu()# 搬到 NPU# 转灰度ifimg_array.ndim3:img_graynp.mean(img_array,axis2)else:img_grayimg_array# 频域滤波fftnp.fft.fft2(img_gray)fft_shiftnp.fft.fftshift(fft)# 低通滤波rows,colsimg_gray.shape crow,ccolrows//2,cols//2masknp.zeros((rows,cols))mask[crow-30:crow30,ccol-30:ccol30]1fft_shift_filteredfft_shift*mask fft_filterednp.fft.ifftshift(fft_shift_filtered)img_filterednp.fft.ifft2(fft_filtered).real# 保存结果Image.fromarray(img_filtered.astype(np.uint8)).save(filtered.jpg)性能数据在昇腾 910 上实测矩阵 4096x4096操作NumPy (CPU)asnumpy (NPU)提升矩阵乘法450ms45ms10xFFT 2D2500ms180ms13.9xSVD 分解2000ms180ms11.1x特征值800ms75ms10.7x矩阵求逆350ms35ms10x你说气人不气人同样的 NumPy 代码NPU 上快 10-14 倍。跟其他仓库的关系asnumpy 在 CANN 架构里属于第 2 层昇腾计算服务层是面向 Python 开发者的高性能 NumPy 替代。依赖关系opbase ← ops-math ← asnumpy ← 你的代码解释一下opbase基础组件ops-math数学算子库FFT、矩阵运算…asnumpyNumPy 接口调用 ops-math你的代码直接调用 asnumpy简单说asnumpy是给用 NumPy 的人用的ops-math是给写算子的人用的。asnumpy 的核心能力asnumpy 支持 NumPy 的常用功能1. 数组创建importnumpyasnp# 创建数组NPU 上xnp.array([1,2,3,4,5]).npu()ynp.zeros((1024,1024)).npu()znp.ones((1024,1024)).npu()rnp.random.randn(1024,1024).npu()2. 数组运算importnumpyasnp xnp.random.randn(1024,1024).npu()ynp.random.randn(1024,1024).npu()# 逐元素运算z1xy z2x*y z3np.sin(x)z4np.exp(x)3. 矩阵运算importnumpyasnp Anp.random.randn(1024,1024).npu()Bnp.random.randn(1024,1024).npu()# 矩阵乘法Cnp.dot(A,B)# 矩阵分解U,S,Vtnp.linalg.svd(A)# SVDQ,Rnp.linalg.qr(A)# QR4. FFTimportnumpyasnp xnp.random.randn(4096).npu()# FFTXnp.fft.fft(x)X2np.fft.fft2(x.reshape(64,64))# IFFTx_reconnp.fft.ifft(X)5. 统计importnumpyasnp xnp.random.randn(1024,1024).npu()# 统计mean_valnp.mean(x)std_valnp.std(x)max_valnp.max(x)min_valnp.min(x)适用场景什么情况下用 asnumpy科学计算FFT、矩阵 decomposition、线性代数信号处理频域分析、滤波图像处理频域滤波、图像变换快速原型验证算法验证完了直接上 NPU 跑生产什么情况下不用深度学习训练用 PyTorch深度学习推理用 ATB 或 ops-transformer非昇腾硬件asnumpy 只支持昇腾 NPU总结asnumpy 就是昇腾的NumPy 加速器让你在 NPU 上直接用 NumPy 语法代码不用改只要加.npu()性能比 CPU NumPy 快 10-14 倍

相关文章:

写给新手的 asnumpy:昇腾原生 NumPy 到底是啥?

上周组里新来个校招生,看到代码里有个 asnumpy() 问我:“哥,这跟 NumPy 有啥区别?为啥不直接用 NumPy?” 好问题。今天一次说清楚。 asnumpy 是啥? asnumpy 是昇腾 NPU 上的原生 NumPy 实现。 一句话说清楚…...

【流体】二维稳态不可压缩层流通道流利用FVM和SIMPLE 解平行板间层流的速度、压力和温度【含Matlab源码 15558期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab武动乾坤博客之家💞…...

STM32H5安全连接AWS IoT:基于TrustZone与Secure Manager的物联网方案

1. 项目概述:当STM32H5遇上AWS云如果你正在用STM32H5系列高性能MCU做物联网设备开发,并且想把数据安全地送到AWS云上,那么意法半导体最近发布的这个X-CUBE-AWS-H5扩展包,绝对值得你花时间深入研究。这不仅仅是一个简单的“库文件”…...

联发科MT6833与MT6853 5G核心板:规格对比与产品选型实战指南

1. 项目概述:两款5G安卓核心板的定位与价值在当前的移动设备开发领域,尤其是面向中高端市场的智能手机、平板电脑以及各类智能终端,选择一颗性能强劲、功能集成度高且成本可控的核心处理器平台,是决定产品成败的关键。联发科&…...

【燃烧机】模拟了燃烧机的热力学循环分析活塞动力学以及温度和压力变化对发动机效率的影响【含Matlab源码 15557期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab武动乾坤博客之家💞…...

基于DSP与SC1083 ADC的光纤远程数据采集系统设计实战

1. 项目概述:当DSP遇上高速光缆,如何构建一个“快、准、稳”的远程数据采集系统在工业自动化、电力监测、超声无损检测这些领域,我们经常需要面对一个头疼的问题:如何把现场传感器采集到的大量、高速、有时甚至是微弱的模拟信号&a…...

瑞芯微RK3568与RK3566芯片选型指南:从接口差异到应用场景深度解析

1. 项目概述:为何要深挖这两颗“芯”?在嵌入式开发和智能硬件选型的圈子里,瑞芯微(Rockchip)的RK3568和RK3566是近两年曝光率极高的两颗“明星”芯片。很多刚接触的朋友第一眼看去,会觉得它们很像&#xff…...

AI智能体Skills设计:从API工具到核心能力的工程实践

1. 从“工具”到“能力”:重新理解AI智能体的Skills最近和几个做AI应用开发的朋友聊天,发现一个挺有意思的现象:大家一提到给智能体加“Skills”,第一反应往往是去翻看官方文档,找那个叫“Tools”或者“Functions”的列…...

嵌入式开发硬件生态构建:MIPI屏、UVC摄像头与4G模块的选型与集成实战

1. 项目概述:一次面向嵌入式开发者的硬件生态补全最近,我们团队负责的睿擎派(一个基于瑞芯微RK3566/RK3588等主流芯片的嵌入式开发板品牌)项目,迎来了一次重要的硬件配件更新。这次上新不是简单的“换个壳”&#xff0…...

为内部培训系统集成Taotoken提供个性化学习内容生成与答疑

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部培训系统集成Taotoken提供个性化学习内容生成与答疑 在企业内部培训领域,技术部门常面临一个需求:如…...

观察Taotoken在不同时段与地域的API响应延迟表现

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察Taotoken在不同时段与地域的API响应延迟表现 对于依赖大模型API进行开发的团队而言,服务的响应延迟是影响开发效率…...

C++超详细讲解析构函数

析构函数是特殊的成员函数特征如下:析构函数名是~类名;无参数无返回值;一个类有且只有一个析构函数;对象声明周期结束,编译器自动调用析构函数;12345678910111213141516171819202122232425262728293031clas…...

Tina Linux嵌入式开发实战:从系统架构到应用移植全解析

1. 项目概述如果你正在接触全志科技的Tina Linux平台,无论是作为软件开发工程师还是技术支持,面对一个全新的嵌入式Linux SDK,最头疼的莫过于如何快速上手,理清从环境搭建到系统定制的整个脉络。这份指南就是为你准备的。Tina Lin…...

3分钟上手跨平台资源下载神器:轻松获取微信视频号、抖音无水印内容

3分钟上手跨平台资源下载神器:轻松获取微信视频号、抖音无水印内容 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …...

SAS宏编程中IN运算符的三种实现方法与实战应用

1. 项目概述:从“硬编码”到“智能匹配”的宏编程跃迁在SAS宏编程的世界里,我们常常会遇到一个经典困境:如何优雅地处理一组离散的、但逻辑上同属一个类别的值?比如,你需要根据用户传入的省份名称,执行不同…...

权威深度指南:使用iperf3 Windows版进行网络性能评估与优化实战

权威深度指南:使用iperf3 Windows版进行网络性能评估与优化实战 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds iperf3 Windows版是专业…...

汽车12V电源防护:P6KE TVS二极管选型、设计与实战指南

1. 项目概述:汽车电源线上的“隐形保镖”在汽车电子系统的设计里,12V直流电源线是整车的能量动脉,从蓄电池到ECU(发动机控制单元)、从车身控制器到娱乐系统,几乎所有的电子模块都离不开它。但这条“动脉”所…...

汽车12V电源保护:TVS二极管选型、应用与EMC测试实战

1. 项目概述:为什么汽车12V电源线需要“特种保镖”?在汽车电子系统里,那根看似普通的12V DC电源线,其实是个“压力山大”的角色。它不仅要给车机、仪表、传感器、ECU(电子控制单元)这些“大脑”和“神经”稳…...

基于RK3399核心板的智能PCR仪开发:从嵌入式系统到高精度温控

1. 项目概述:当PCR仪遇上高性能核心板在分子生物学实验室里,PCR仪(聚合酶链式反应仪)是当之无愧的“C位”设备。从基础的病原体检测、基因分型,到前沿的基因编辑、高通量测序文库构建,几乎每一个实验环节都…...

如何快速解决Windows 11区域模拟问题:完整API钩子技术指南

如何快速解决Windows 11区域模拟问题:完整API钩子技术指南 【免费下载链接】Locale_Remulator System Region and Language Simulator. 项目地址: https://gitcode.com/gh_mirrors/lo/Locale_Remulator Locale Remulator是一款强大的系统区域和语言模拟工具&…...

增程式电动汽车预测型能量管理策略【附算法】

✨ 长期致力于增程式电动汽车、能量管理策略、车速预测、广义回归神经网络、动态规划研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)基于AIC准则的自…...

RK3588核心板开发全解析:从8K编解码到NPU AI应用实战

1. 项目概述:当“八核”遇上“8K”,一块核心板能做什么?最近拿到了一块RK3588的核心板套件,这玩意儿在圈子里热度一直不低。RK3588这颗芯片,从发布之初就被贴上了“旗舰”、“全能”的标签,八核CPU、8K编解…...

5G FWA智能终端技术解析:从核心原理到部署实践

1. 项目背景与行业意义最近在圈子里看到一则消息,美格智能的5G FWA智能终端产品成功中标了中国联通的招标项目。这消息乍一看像是普通的商业新闻,但对于我们这些常年泡在通信和物联网领域的人来说,这背后其实藏着不少值得琢磨的门道。它不仅仅…...

5G FWA智能终端技术解析:从核心架构到运营商集采实战

1. 项目概述:一次典型的5G FWA终端集采中标事件最近,业内传来一个挺有意思的消息,美格智能的5G FWA智能终端产品,在中国联通的一个招标项目中成功中标了。对于不熟悉通信行业的朋友来说,这听起来可能就是个普通的商业新…...

18分钟攻破GitHub:TeamPCP供应链攻击全技术解析与防御新范式

摘要 2026年5月18日,威胁组织TeamPCP通过一条精心设计的多级供应链攻击链,仅用18分钟就成功入侵全球最大代码托管平台GitHub的内部系统,窃取了约3800个核心私有仓库,涵盖Copilot、CodeQL、GitHub Actions等所有关键产品的源代码。…...

3000+戴森球计划工厂蓝图终极指南:从新手到大师的完全解决方案

3000戴森球计划工厂蓝图终极指南:从新手到大师的完全解决方案 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 还在为戴森球计划中复杂的工厂布局而头疼吗&#…...

Microsoft Defender双零日在野利用全解析:从BlueHammer到RedSun的终端沦陷之路

前言 2026年5月20日,微软安全响应中心(MSRC)发布紧急安全公告,承认旗下Microsoft Defender存在两个已被野外利用超过一个月的零日漏洞——CVE-2026-41091与CVE-2026-45498。同日,美国国土安全部下属的网络安全与基础设施安全局(CISA)将这两个…...

5步快速上手ScriptHookV:GTA V模组开发完整指南

5步快速上手ScriptHookV:GTA V模组开发完整指南 【免费下载链接】ScriptHookV An open source hook into GTAV for loading offline mods 项目地址: https://gitcode.com/gh_mirrors/sc/ScriptHookV ScriptHookV是一款专为《侠盗猎车手V》(GTA V&…...

矿山灾害应急回溯:UWB离线即失联,无感定位全程轨迹留存

矿山灾害应急回溯:UWB离线即失联,无感定位全程轨迹留存矿山井下塌方、瓦斯超限、透水、顶板垮落等突发性灾害具备极强不可预判性,灾害发生后极易伴随断电断网、通信中断、组网瘫痪等状况。应急轨迹回溯、人员位置核查、救援路线规划&#xff…...

AR眼镜主板与光机定制:从核心需求到量产落地的硬件开发指南

1. 项目概述:从一块主板到一副眼镜的蜕变最近几年,AR(增强现实)智能眼镜从科幻概念逐渐走进现实,无论是工业巡检、远程协作,还是消费娱乐,都能看到它的身影。但很多人可能不知道,决定…...