Allgather 异步通信 Demo【免费下载链接】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使用 PTO 异步指令在多个 NPU 设备之间实现 allgather 集合通信操作。A2/A3 构建默认SOC_VERSIONAscend910B1Demo 1–3使用 SDMA 引擎TPUT_ASYNC/TGET_ASYNC通过 HCCLA5 构建SOC_VERSIONAscend950PR_9599Demo 4–6使用 URMA 引擎HCCP V2 Jetty RDMA。两套引擎路径分别使用a2a3/common.hpp和a5/common.hppACL/运行时初始化方式不兼容因此每次构建只编译和链接其中一套。前置条件已安装 CANN Toolkit9.0.0 及以上版本并通过set_env.sh设置ASCEND_HOME_PATH已安装 CANN Ops 包9.0.0 及以上版本已安装 MPICHMPI rank 数量不超过可用 NPU 设备数默认./run.sh为 8 ranks./run.sh 2 …为 2 ranks。通常一 rank 对应一设备。快速开始source /path/to/set_env.sh ./run.sh # 8 ranks默认 SoC Ascend910B1A2/A3Demo 1–3 ./run.sh 4 # 4 ranks ./run.sh 2 Ascend950PR_9599 # 2 ranksA5Demo 4-6功能说明每个 rank 贡献 256 个int32_t数据。allgather 操作完成后每个 rank 都持有所有 rank 的完整数据。SDMA DemoA2/A3 构建TPUT_ASYNC Allgather异步远程写多核以nRanks, ...启动每个 AICORE 负责一个目标 rank 的通信并行执行。其中block_idx myRank的 AICORE 执行本地拷贝其余 AICORE 通过pto::comm::TPUT_ASYNC将数据异步写入对应远端 rank。TGET_ASYNC Allgather异步远程读多核以nRanks, ...启动每个 AICORE 负责从一个源 rank 拉取数据并行执行。其中block_idx myRank的 AICORE 执行本地拷贝其余 AICORE 通过pto::comm::TGET_ASYNC从对应远端 rank 异步读取数据。Ring TPUT_ASYNC Allgather环形异步远程写环形算法N 个 rank 执行 N-1 轮。第 0 轮每个 rank 将sendBuf本地拷贝到recvBuf[myRank]同时通过TPUT_ASYNC推送到下一个 rank。后续每轮rank 将上一轮收到的数据块继续转发给下一个 rank。每轮通过独立的 kernel 启动轮间由 Host 侧 barrier 同步。URMA DemoA5 构建URMA TPUT_ASYNC Allgather多核与 Demo 1 相同的多核算法使用TPUT_ASYNCDmaEngine::URMAUrmaPeerMrBaseAddr进行远端寻址。URMA TGET_ASYNC Allgather多核与 Demo 2 相同的多核算法使用TGET_ASYNCDmaEngine::URMA。URMA Ring TPUT_ASYNC Allgather与 Demo 3 相同的环形算法使用TPUT_ASYNCDmaEngine::URMA。执行 N-1 轮2 卡时为 1 轮验证基本 AllGather 正确性。recv→forward 路径在 N≥3 时自然被覆盖。关键 PTO APIDemos 1–3SDMA / HCCLpto::comm::AsyncSession、BuildAsyncSession与SdmaWorkspaceManager、HCCL 上下文配合的 SDMA 重载pto::comm::TPUT_ASYNC、TGET_ASYNC默认 SDMA 引擎pto::comm::AsyncEvent、WaitSdmaWorkspaceManager、HcclRemotePtrHostDemos 4–6URMApto::comm::BuildAsyncSessionDmaEngine::URMA、TPUT_ASYNC/TGET_ASYNCDmaEngine::URMAUrmaWorkspaceManager、UrmaPeerMrBaseAddrHost目录结构allgather_async/ ├── CMakeLists.txt # 构建配置bisheng 编译器 CCE ├── csrc/ │ ├── kernel/ │ │ ├── allgather_kernel.cpp # SDMA kernel 实现 Host 启动函数A2/A3 │ │ ├── allgather_kernel.h # SDMA Host 侧函数声明 │ │ ├── allgather_urma_kernel.cpp # URMA kernel Host launcherA5 │ │ └── allgather_urma_kernel.h # URMA Host 侧函数声明 │ └── host/ │ └── main.cpp # 入口MPI 初始化、运行 Demo、输出结果 ├── run.sh # 一键构建并运行 ├── README.md # 英文说明 └── README_zh.md # 本文档依赖安装1. CANN ToolkitCANN Toolkit 9.0.0 及以上版本可通过以下两种方式获取方式一从昇腾社区下载方式二直接下载尝鲜版安装包x86_64 / aarch64安装方式参考快速安装 CANN。安装完成后配置环境变量默认安装路径source /usr/local/Ascend/ascend-toolkit/set_env.sh自定义安装路径source ${install_path}/ascend-toolkit/set_env.sh2. CANN OpsCANN Ops 包9.0.0 及以上版本按硬件平台选择对应的 ops-legacy 包下载安装硬件平台x86_64aarch64A2下载下载A3下载下载安装方式与 Toolkit 相同参考快速安装 CANN。3. MPICH推荐版本 3.2.1通过源码编译安装# 以 3.2.1 版本为例 version3.2.1 wget https://www.mpich.org/static/downloads/${version}/mpich-${version}.tar.gz tar -xzf mpich-${version}.tar.gz cd mpich-${version} ./configure --prefix/usr/local/mpich --disable-fortran make make install设置环境变量export MPI_HOME/usr/local/mpich export PATH${MPI_HOME}/bin:${PATH}安装后确认mpirun可用mpirun --version手动构建与运行# A2/A3 构建Demo 1-3 mkdir -p build cd build cmake .. -DSOC_VERSIONAscend910B1 make -j$(nproc) cd .. mpirun -n 8 ./build/bin/allgather_demo # A5 构建Demo 4-6 rm -rf build mkdir -p build cd build cmake .. -DSOC_VERSIONAscend950PR_9599 make -j$(nproc) cd .. mpirun -n 2 ./build/bin/allgather_demoSOC_VERSION决定编译哪套 kernelA2/A3 只编译 SDMA kernelA5 只编译 URMA kernel。切换 SoC 目标时需要清除构建目录rm -rf build。预期输出A52 ranksURMA Demos 4–6 PTO Allgather Async Demo Ranks: 2 --- Demo 4: URMA Multi-core TPUT_ASYNC --- [URMA_TPUT_MC PASS] Rank 0: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] [URMA_TPUT_MC PASS] Rank 1: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] --- Demo 5: URMA Multi-core TGET_ASYNC --- [URMA_TGET_MC PASS] Rank 0: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] [URMA_TGET_MC PASS] Rank 1: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] --- Demo 6: URMA Ring TPUT_ASYNC --- [URMA_RING_TPUT PASS] Rank 0: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] [URMA_RING_TPUT PASS] Rank 1: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] All demos PASSED A38 ranksSDMA Demos 1–3 PTO Allgather Async Demo Ranks: 8 --- Demo 1: Multi-core TPUT_ASYNC --- [TPUT_ASYNC_MC PASS] Rank 0: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] slot[2][2000,2001,2002,...] ... ... --- Demo 2: Multi-core TGET_ASYNC --- [TGET_ASYNC_MC PASS] Rank 0: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] slot[2][2000,2001,2002,...] ... ... --- Demo 3: Ring TPUT_ASYNC --- [RING_TPUT_ASYNC PASS] Rank 0: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] slot[2][2000,2001,2002,...] ... ... All demos PASSED 【免费下载链接】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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
CANN/PTO-ISA Allgather异步通信Demo
Allgather 异步通信 Demo【免费下载链接】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使用 PTO 异步指令在多个 NPU 设备之间实现 allgather 集合通信操作。A2/A3 构建默认SOC_VERSIONAscend910B1Demo 1–3使用 SDMA 引擎TPUT_ASYNC/TGET_ASYNC通过 HCCLA5 构建SOC_VERSIONAscend950PR_9599Demo 4–6使用 URMA 引擎HCCP V2 Jetty RDMA。两套引擎路径分别使用a2a3/common.hpp和a5/common.hppACL/运行时初始化方式不兼容因此每次构建只编译和链接其中一套。前置条件已安装 CANN Toolkit9.0.0 及以上版本并通过set_env.sh设置ASCEND_HOME_PATH已安装 CANN Ops 包9.0.0 及以上版本已安装 MPICHMPI rank 数量不超过可用 NPU 设备数默认./run.sh为 8 ranks./run.sh 2 …为 2 ranks。通常一 rank 对应一设备。快速开始source /path/to/set_env.sh ./run.sh # 8 ranks默认 SoC Ascend910B1A2/A3Demo 1–3 ./run.sh 4 # 4 ranks ./run.sh 2 Ascend950PR_9599 # 2 ranksA5Demo 4-6功能说明每个 rank 贡献 256 个int32_t数据。allgather 操作完成后每个 rank 都持有所有 rank 的完整数据。SDMA DemoA2/A3 构建TPUT_ASYNC Allgather异步远程写多核以nRanks, ...启动每个 AICORE 负责一个目标 rank 的通信并行执行。其中block_idx myRank的 AICORE 执行本地拷贝其余 AICORE 通过pto::comm::TPUT_ASYNC将数据异步写入对应远端 rank。TGET_ASYNC Allgather异步远程读多核以nRanks, ...启动每个 AICORE 负责从一个源 rank 拉取数据并行执行。其中block_idx myRank的 AICORE 执行本地拷贝其余 AICORE 通过pto::comm::TGET_ASYNC从对应远端 rank 异步读取数据。Ring TPUT_ASYNC Allgather环形异步远程写环形算法N 个 rank 执行 N-1 轮。第 0 轮每个 rank 将sendBuf本地拷贝到recvBuf[myRank]同时通过TPUT_ASYNC推送到下一个 rank。后续每轮rank 将上一轮收到的数据块继续转发给下一个 rank。每轮通过独立的 kernel 启动轮间由 Host 侧 barrier 同步。URMA DemoA5 构建URMA TPUT_ASYNC Allgather多核与 Demo 1 相同的多核算法使用TPUT_ASYNCDmaEngine::URMAUrmaPeerMrBaseAddr进行远端寻址。URMA TGET_ASYNC Allgather多核与 Demo 2 相同的多核算法使用TGET_ASYNCDmaEngine::URMA。URMA Ring TPUT_ASYNC Allgather与 Demo 3 相同的环形算法使用TPUT_ASYNCDmaEngine::URMA。执行 N-1 轮2 卡时为 1 轮验证基本 AllGather 正确性。recv→forward 路径在 N≥3 时自然被覆盖。关键 PTO APIDemos 1–3SDMA / HCCLpto::comm::AsyncSession、BuildAsyncSession与SdmaWorkspaceManager、HCCL 上下文配合的 SDMA 重载pto::comm::TPUT_ASYNC、TGET_ASYNC默认 SDMA 引擎pto::comm::AsyncEvent、WaitSdmaWorkspaceManager、HcclRemotePtrHostDemos 4–6URMApto::comm::BuildAsyncSessionDmaEngine::URMA、TPUT_ASYNC/TGET_ASYNCDmaEngine::URMAUrmaWorkspaceManager、UrmaPeerMrBaseAddrHost目录结构allgather_async/ ├── CMakeLists.txt # 构建配置bisheng 编译器 CCE ├── csrc/ │ ├── kernel/ │ │ ├── allgather_kernel.cpp # SDMA kernel 实现 Host 启动函数A2/A3 │ │ ├── allgather_kernel.h # SDMA Host 侧函数声明 │ │ ├── allgather_urma_kernel.cpp # URMA kernel Host launcherA5 │ │ └── allgather_urma_kernel.h # URMA Host 侧函数声明 │ └── host/ │ └── main.cpp # 入口MPI 初始化、运行 Demo、输出结果 ├── run.sh # 一键构建并运行 ├── README.md # 英文说明 └── README_zh.md # 本文档依赖安装1. CANN ToolkitCANN Toolkit 9.0.0 及以上版本可通过以下两种方式获取方式一从昇腾社区下载方式二直接下载尝鲜版安装包x86_64 / aarch64安装方式参考快速安装 CANN。安装完成后配置环境变量默认安装路径source /usr/local/Ascend/ascend-toolkit/set_env.sh自定义安装路径source ${install_path}/ascend-toolkit/set_env.sh2. CANN OpsCANN Ops 包9.0.0 及以上版本按硬件平台选择对应的 ops-legacy 包下载安装硬件平台x86_64aarch64A2下载下载A3下载下载安装方式与 Toolkit 相同参考快速安装 CANN。3. MPICH推荐版本 3.2.1通过源码编译安装# 以 3.2.1 版本为例 version3.2.1 wget https://www.mpich.org/static/downloads/${version}/mpich-${version}.tar.gz tar -xzf mpich-${version}.tar.gz cd mpich-${version} ./configure --prefix/usr/local/mpich --disable-fortran make make install设置环境变量export MPI_HOME/usr/local/mpich export PATH${MPI_HOME}/bin:${PATH}安装后确认mpirun可用mpirun --version手动构建与运行# A2/A3 构建Demo 1-3 mkdir -p build cd build cmake .. -DSOC_VERSIONAscend910B1 make -j$(nproc) cd .. mpirun -n 8 ./build/bin/allgather_demo # A5 构建Demo 4-6 rm -rf build mkdir -p build cd build cmake .. -DSOC_VERSIONAscend950PR_9599 make -j$(nproc) cd .. mpirun -n 2 ./build/bin/allgather_demoSOC_VERSION决定编译哪套 kernelA2/A3 只编译 SDMA kernelA5 只编译 URMA kernel。切换 SoC 目标时需要清除构建目录rm -rf build。预期输出A52 ranksURMA Demos 4–6 PTO Allgather Async Demo Ranks: 2 --- Demo 4: URMA Multi-core TPUT_ASYNC --- [URMA_TPUT_MC PASS] Rank 0: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] [URMA_TPUT_MC PASS] Rank 1: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] --- Demo 5: URMA Multi-core TGET_ASYNC --- [URMA_TGET_MC PASS] Rank 0: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] [URMA_TGET_MC PASS] Rank 1: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] --- Demo 6: URMA Ring TPUT_ASYNC --- [URMA_RING_TPUT PASS] Rank 0: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] [URMA_RING_TPUT PASS] Rank 1: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] All demos PASSED A38 ranksSDMA Demos 1–3 PTO Allgather Async Demo Ranks: 8 --- Demo 1: Multi-core TPUT_ASYNC --- [TPUT_ASYNC_MC PASS] Rank 0: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] slot[2][2000,2001,2002,...] ... ... --- Demo 2: Multi-core TGET_ASYNC --- [TGET_ASYNC_MC PASS] Rank 0: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] slot[2][2000,2001,2002,...] ... ... --- Demo 3: Ring TPUT_ASYNC --- [RING_TPUT_ASYNC PASS] Rank 0: slot[0][0,1,2,...] slot[1][1000,1001,1002,...] slot[2][2000,2001,2002,...] ... ... All demos PASSED 【免费下载链接】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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考