尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

CANN PTO-ISA 快速入门:从 CPU 模拟器到 Ascend NPU 环境的完整上手指南

CANN PTO-ISA 快速入门:从 CPU 模拟器到 Ascend NPU 环境的完整上手指南 人工智能指令集算子库CANNAscend【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址https://gitcode.com/cann/pto-isa点击查看免费下载导读本文是 CANN pto-isa 项目Parallel Tile OperationAscend CANN 设计的面向 tile 级运算的虚拟指令集的完整上手指南覆盖两种主流使用场景CPU 模拟器跨平台、无需专用硬件适合初学者快速体验指令集与 Tile 编程模型与NPU 环境Ascend A2/A3即 910B/910C 等平台的 CANN toolkit 部署与 ST 测试。读完本文你将能够独立完成环境搭建、源码克隆、Python 虚拟环境配置、CPU 模拟器构建与测试执行以及 NPU 环境下的 ST 测试、打包与安装全流程。一、PTO-ISA 项目概览PTO-ISA 是一套由 Ascend CANN 设计的虚拟指令集架构virtual ISA聚焦于 tile 级分块运算目标是在 Ascend 各平台A2/A3、A5 等上提供高性能、跨平台的 tile 操作抽象。仓库主体包括include/pto/指令头文件实现按common/、cpu/、npu/、comm/、costmodel/等模块组织其中include/pto/npu/a2a3对应 A2/A3 系列910B/910C后端demos/可直接运行的示例程序CPU 演示与自动/手写算子样例tests/CPU 侧与 NPU 侧的 STSystem Test测试工程、入口脚本与数据生成脚本docs/isa/每条指令如TADD、TMATMUL、TLOAD等的详细 ISA 手册与 SVG 说明图。上手路径遵循“先 CPU 后 NPU”的原则CPU 模拟器让你在任意操作系统上无硬件地编译、运行与调试指令随后再进入 NPU 环境完成真实硬件或模拟器上的验证。二、第一部分CPU 模拟器跨平台CPU 模拟器是入门成本最低的路径支持 macOS、Linux 与 Windows 三种操作系统无需任何专用硬件即可运行指令的 CPU 参考实现并配合 GoogleTest 完成指令正确性验证。2.1 先决条件必需依赖依赖版本要求说明Git任意较新版本用于克隆源码Python 3.11驱动构建/测试脚本CMake 3.16构建系统C 编译器C20 支持Linux: GCC 13 或 Clang 15GCC 14启用 bfloat16 支持macOS: Xcode/AppleClang或 Homebrew LLVMWindows: Visual Studio 2022 Build Tools (MSVC)Python 包numpy 1.22.0、ml_dtypes、en_dtypesdtypes 相关包仅在部分特定测试中需要tests/run_cpu.py会自动安装numpy除非显式传入--no-install参数。ml_dtypes、en_dtypes仅在特定用例需要在 Windows 上这两个包可能需要从源码编译安装。可选依赖加速构建Ninja作为 CMake 生成器显著提升构建速度网络连接当系统未预装 GoogleTest 时CMake 会自动拉取依赖。2.2 各操作系统环境准备macOS# 安装 Xcode 命令行工具 xcode-select --install # 推荐通过 Homebrew 安装依赖 brew install cmake ninja python若不使用 Homebrew请确保python3、cmake与较新的clang均位于PATH中。LinuxUbuntu 20.04sudo apt-get update sudo apt-get install -y build-essential cmake ninja-build python3 python3-pip python3-venv gitWindows需要安装 Git for Windows、Python 3确保加入PATH、CMake 以及 Visual Studio 2022 Build Tools勾选“使用 C 的桌面开发”。也可使用winget一键安装winget install --id Git.Git -e winget install --id Python.Python.3.11 -e winget install --id Kitware.CMake -e winget install --id Microsoft.VisualStudio.2022.BuildTools -e安装完成后打开Developer Command Prompt for VS 2022或确保cl.exe在PATH中。Windows 备选方案手动安装编译器如果不使用 Visual Studio可通过 WinLibs 或 MSYS2 手动安装 GCC/Clang随后将{COMPILER_INSTALLATION_PATH}/bin加入PATH在 PowerShell 中用gcc -v/clang -v验证。2.3 获取源码git clone https://gitcode.com/cann/pto-isa.git cd pto-isa2.4 Python 虚拟环境配置macOS / Linuxpython3 -m venv .venv-mkdocs source .venv-mkdocs/bin/activate python -m pip install -U pip python -m pip install numpy ml_dtypes en_dtypesWindowsPowerShellpy -3 -m venv .venv-mkdocs .\.venv-mkdocs\Scripts\Activate.ps1 python -m pip install -U pip python -m pip install numpy ml_dtypes en_dtypes2.5 运行 CPU 模拟器CPU 模拟器的主入口是 tests/run_cpu.py。它会完成 CMake 配置、编译、每个测试用例的 golden 数据生成调用各用例目录下的gen_data.py并运行tests/cpu/st下全部 CPU ST 测试二进制。最直接的完整运行方式python3 tests/run_cpu.py --clean --verbose其中--clean删除构建目录后重新构建--verbose输出 cmake/gtest 的完整日志。常用选项命令作用python3 tests/run_cpu.py --testcase tadd只运行单个测试用例如taddpython3 tests/run_cpu.py --testcase tadd --gtest_filter TADDTest.*运行指定 gtest 用例python3 tests/run_cpu.py --demo gemm --verbose构建并运行 GEMM 演示程序python3 tests/run_cpu.py --demo flash_attn --verbose构建并运行 Flash Attention 演示程序python3 tests/run_cpu.py --cxx/path/to/compiler指定 C 编译器路径python3 tests/run_cpu.py --clean删除构建目录并重新构建python3 tests/run_cpu.py --clean --generator MinGW Makefiles --cmake_prefix_path D:\gtest\Windows 专用指定生成器与 GoogleTest 前缀路径export LD_LIBRARY_PATH/path_to_compiler/lib64:$LD_LIBRARY_PATHLinux 下设置编译器动态库路径2.6 深入run_cpu.py 的实现机制从 tests/run_cpu.py 源码可以看到该脚本的几个关键设计编译器自动检测当未显式指定--cxx时脚本会依次尝试clang 15与g 13见_auto_detect_compilers找不到合格编译器会明确报错也支持通过CXX/CC环境变量覆盖。按用例独立配置构建通过 CMake 变量-DTEST_CASEcase让单用例模式只构建目标二进制构建缓存中的TEST_CASE值与本次请求不一致时会自动触发重新配置保证“run all”不会漏构建。golden 数据流水线每个用例目录如tests/cpu/st/testcase/tadd/下的gen_data.py会被复制到构建目录执行生成输入/标杆数据随后 gtest 二进制才被运行对应generate_golden/run_selected_tests逻辑。可选的扩展能力--enable-bf16开启 CPU-SIM 的 BF16 覆盖需要支持 C23std::bfloat16_t的编译器GCC 14构建时通过-DPTO_CPU_SIM_ENABLE_BF16ON与运行时环境变量PTO_CPU_SIM_ENABLE_BF161生效--trace-mode通过-DPTO_CPU_SIM_TRACE_MODEON开启 PTO 指令级 trace--build-type支持Release/Debug/RelWithDebInfo/MinSizeRel默认Release--xml-dir输出 gtest XML 报告便于 CI 集成--no-build跳过构建只运行已有二进制。演示程序--demo支持gemm、flash_attn、mla以及all对应源码位于 demos/cpu/gemm_demo、demos/cpu/flash_attention_demo、demos/cpu/mla_attention_demo各自独立通过 CMake 构建后运行运行结束会汇总 PASS/FAIL 与耗时表格。三、第二部分NPU 环境Ascend 910B/910C仅限 Linux本部分面向需要在 Ascend NPU 硬件或昇腾模拟器上运行的用户需要 Linux 环境与 CANN toolkit。更完整的运行、测试与脚本说明可参阅 测试指南 与 文档构建指南根目录 README 仅保留最短上手路径与最常用命令。3.1 系统先决条件系统要求Linux推荐 Ubuntu 20.04Python 3.9.xGCC 7.3.0CMake 3.16.0注意Python 官方已宣布 3.7.x/3.8.x 停止维护EOLCANN 也将很快停止支持这些版本请升级到 Python 3.9.x。GoogleTest单元测试必需下载 GoogleTest 1.14.0 并安装tar -xf googletest-1.14.0.tar.gz cd googletest-1.14.0 mkdir temp cd temp cmake .. -DCMAKE_CXX_FLAGS-fPIC make sudo make install注意Python 侧需要 os、numpy、ctypes、struct、copy、math、enum、ml_dtypes、en_dtypes 等包。若以不同标志如-D_GLIBCXX_USE_CXX11_ABI0安装 GoogleTest需要在tests/npu/[a2a3|a5]/src/st/CMakeLists.txt中相应添加add_compile_definitions(_GLIBCXX_USE_CXX11_ABI0)。CANN ToolkitAscend NPU 驱动和固件硬件执行需要CANN toolkit 8.5.0重要安装 CANN toolkit 后需先配置环境变量再验证 bisheng 编译器与系统 GCC 的版本兼容性source /usr/local/Ascend/cann/bin/setenv.bash bisheng -v gcc -v若两者版本不一致可在bisheng -v显示的 gcc 路径下安装与gcc -v显示版本一致的 GCC或将默认 gcc 替换为与bisheng -v显示一致的版本。3.2 安装选项选项 1快速安装推荐完整的驱动、固件与 toolkit 安装指南见 https://www.hiascend.com/cann/download此方式会自动处理所有依赖。选项 2手动安装步骤 1安装驱动与固件仅在真实 NPU 硬件上运行需要仅构建或使用模拟器可跳过安装指南见 CANN 官方“NPU 驱动和固件安装指南”文档。步骤 2安装 CANN Toolkit从 CANN 下载页面获取Ascend-cann-toolkit_${cann_version}_linux-${arch}.run安装包要求 CANN 8.5.0# 使安装包可执行 chmod x Ascend-cann-toolkit_${cann_version}_linux-${arch}.run # 安装 ./Ascend-cann-toolkit_${cann_version}_linux-${arch}.run --install --force --install-path${install_path}参数说明${cann_version}CANN toolkit 版本${arch}CPU 架构aarch64或x86_64${install_path}安装路径可选。默认路径root 用户为/usr/local/Ascend/cann非 root 用户为$HOME/Ascend/cann。选项 3一键环境安装脚本scripts/install_pto.sh 可一次性完成 CANN toolkit、PTO ISA 包与 GoogleTest 的安装。脚本会自动检测 CANN toolkit 是否已安装通过检查${path}/cann/bin/setenv.bash是否存在已安装则直接安装 PTO ISA 包未安装则需通过第二个参数传入 toolkit 安装包路径。chmod x ./scripts/install_pto.sh ./scripts/install_pto.sh cann_toolkit_install_path [cann_toolkit_package_path]参数说明cann_toolkit_install_pathCANN toolkit 安装路径用于检测是否已安装[cann_toolkit_package_path]CANN toolkit 安装包路径可选仅在 toolkit 未安装时需要。从脚本实现看其内部还会自动识别 CPU 架构aarch64/x86_64、从云端镜像回退检索最近 3 天的cann-pto-isa_8.5.0_linux-arch.run每日构建包并以--full --quiet模式静默安装全程日志记录在setup_pto_isa_env.log。3.3 环境变量配置运行 NPU 测试前需加载 CANN 环境root 安装默认路径source /usr/local/Ascend/cann/bin/setenv.bash非 root 安装默认路径source $HOME/Ascend/cann/bin/setenv.bash自定义安装路径source ${install_path}/cann/bin/setenv.bash3.4 下载源码git clone https://gitcode.com/cann/pto-isa.git cd pto-isa3.5 运行 NPU 测试运行单个 ST 测试用例python3 tests/script/run_st.py -r [sim|npu] -v [a3|a5] [-a] -t [TEST_CASE] -g [GTEST_FILTER_CASE]注意a3后端覆盖 A2/A3 系列源码目录 include/pto/npu/a2a3-a用于以 auto 模式运行 ST 用例。示例python3 tests/script/run_st.py -r npu -v a3 -t tmatmul -g TMATMULTest.case1 python3 tests/script/run_st.py -r sim -v a5 -t tmatmul -g TMATMULTest.case1运行推荐测试套件从项目根目录执行chmod x ./tests/run_st.sh ./tests/run_st.sh --a5 --npu --simple # 模拟器模式先提高文件描述符上限 ulimit -n 65536 ./tests/run_st.sh --a3 --sim --all运行完整 ST 测试chmod x build.sh ./build.sh --run_all --a3 --sim运行简化 ST 测试chmod x build.sh ./build.sh --run_simple --a5 --npu打包chmod x build.sh ./build.sh --pkg构建完成后.run安装包生成在build_out/目录下。3.6 深入run_st.py 与 run_st.sh 的实现机制从 tests/script/run_st.py 源码可以看到后端版本映射-v支持a3/a5/a6/kirin9030/kirinX90/kirinDev0000分别映射到Ascend910B1、Ascend950PR_9599、Kirin9030、KirinX90、KirinDev0000、dav_9201等 SOC 版本并对应不同的测试目录如a3→tests/npu/a2a3/src/sta5→tests/npu/a5/src/st。sim 模式环境准备sim模式要求设置ASCEND_HOME_PATH脚本会清理LD_LIBRARY_PATH中旧的/runtime/lib64路径注入${ASCEND_HOME_PATH}/runtime/lib64/stub再加载${ASCEND_HOME_PATH}/bin/setenv.bashKirin 系列为set_env.sh最后从${ASCEND_HOME_PATH}/tools/simulator/SOC/优先camodel其次lib定位模拟器运行库并将CAMODEL_LOG_PATH指向build/bin/camodel_log。构建流程通过cmake -DRUN_MODEsim|npu -DSOC_VERSIONsoc -DTEST_CASEcase可选-DDEBUG_MODEON、-DAUTO_MODEON配置随后make -j$(nproc)编译每个用例同样会执行testcase/name/gen_data.py生成标杆数据。通信测试comm-t comm/case前缀的用例需要 MPIMPICH/OpenMPIfind_mpirun会依次探测$MPI_HOME/bin/mpirun及常见路径并可通过MPI_LIB_PATH指定libmpi.so脚本按 2/4/8 三个 rank 级别分轮运行受-n限制并用 gtest filter 命名约定*4Ranks*/*8Ranks*等筛选对应多卡用例还会根据/dev/davinci*设备数自动跳过超出可用 NPU 数的 rank 轮次。_ccu结尾的用例会逐条 gtest case 独立起一个mpirun进程以保证隔离。tests/run_st.sh 是对上层入口的封装参数要求为平台旗标--a3/--a5/--a3_a5/--kirin9030/--kirinX90/--kirinDev0000至少选一个--a3/--a5还必须给出--simple精选单用例子集或--all完整套件模式运行模式--sim/--npu可省略默认 NPU 板上另有--comm包含通信 ST与--auto_modeauto 模式选项。错误参数会打印 usage 并以非零码退出避免“静默跳过”。此外通信测试的 MPI 安装与环境变量MPI_HOME、MPI_LIB_PATH以及同步/异步指令测试的 CANN 版本要求同步指令如tput/tget需 CANN 8.x 及以上异步指令如tput_async/tget_async依赖 CANN 9.0 引入的 SDMA opapi 接口默认被 tests/run_comm_test.sh 排除需-a显式开启等细节均记录在 tests/README.md。3.7 安装 PTO-ISA 包.run 自解压包通过.run自解压包安装需指定安装类型三选一参数说明--full完整安装头文件、库、测试资源等全部内容--run运行时安装仅安装运行所需的库和依赖--devel开发环境安装包含头文件和库# 完整安装到默认路径需 root 权限 ./build_out/cann-pto-isa_*.run --full # 安装到指定路径无需 root ./build_out/cann-pto-isa_*.run --full --install-path/your/install/path # 静默安装跳过交互确认适用于 CI/CD 等非交互环境 ./build_out/cann-pto-isa_*.run --full --quiet # 仅安装运行时组件 ./build_out/cann-pto-isa_*.run --run --install-path/your/install/path # 开发环境安装 ./build_out/cann-pto-isa_*.run --devel --install-path/your/install/path --quiet常用安装参数参数说明--install-pathpath指定安装目标目录--quiet静默模式跳过交互确认适用于非交互环境--install-for-all为所有用户安装--uninstall卸载已安装的产品--upgrade升级已有安装--version查看包版本信息--pre-check安装前预依赖检查完整参数列表可通过以下命令查看./build_out/cann-pto-isa_*.run --help四、下一步从示例到深入CPU 开发探索 demos/cpu 下的演示程序gemm_demo、flash_attention_demo、mla_attention_demo与 tests/cpu 下的测试用例可结合 CPU 编程教程如 gemm 教程、vec-add 教程、row-softmax 教程逐步理解 Tile 编程模型NPU 开发查阅 tests/npu 下按 SoC 划分的 ST 用例a2a3、a5、kirin9030等以及 docs/isa/PTO-Virtual-ISA-Manual.md 虚拟指令集手册与 docs/isa/README.md 索引指令 API每条指令的详细用法操作数语义、数据布局约定、边界条件可查阅 docs/isa 下对应的指令文档如 TADD、TMATMUL、TLOAD并对照 docs/isa/conventions.md 了解统一约定文档站点仓库可通过 MkDocs 构建为静态文档站本地预览方式见 docs/website.md调试与优化遇到问题时可参考 CPU 模拟器调试指南、错误码文档 与 性能优化最佳实践社区支持加入项目社区获取讨论与支持参与贡献前请阅读 CONTRIBUTING.md 与 FAQ.md。赞分享人工智能指令集算子库CANNAscend【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址https://gitcode.com/cann/pto-isa点击查看免费下载相关推荐CANN PTO Tile Library 完全指南Ascend 跨代 Tile 虚拟指令集PTO ISA的架构、快速上手与性能优化实战CANN PTO Tile Library 完全指南Ascend 跨代 Tile 虚拟指令集PTO ISA的架构、快速上手与性能优化实战 本文基于 REA人工智能指令集算子库CANNAscendCANN PTO 演示示例完全指南从 CPU 模拟到 NPU 生产级算子CANN PTO 演示示例完全指南从 CPU 模拟到 NPU 生产级算子 导读 本指南系统梳理 CANN pto isa 仓库中 demos https://人工智能指令集算子库CANNAscendCANN PTO-ISA 测试体系全指南从 CPU 模拟器到 NPU 板载的 ST 测试与多卡 Comm 测试实战CANN PTO ISA 测试体系全指南从 CPU 模拟器到 NPU 板载的 ST 测试与多卡 Comm 测试实战 导读 tests/ 是 PTO Tile人工智能指令集算子库CANNAscend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表