news 2026/9/19 23:55:56

PTO 虚拟指令集开发导航:CANN pto-isa 全量指令分类、接口约定与开发实践指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PTO 虚拟指令集开发导航:CANN pto-isa 全量指令分类、接口约定与开发实践指南

PTO 虚拟指令集开发导航:CANN pto-isa 全量指令分类、接口约定与开发实践指南

【免费下载链接】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 仓库中 PTO(Parallel Tile Operation)虚拟指令集的开发导航指南。PTO 是 Ascend CANN 定义的面向 Tile 块级编程的虚拟指令集架构,本仓提供 124 条 Tile 指令及一套片间通信扩展指令。文章以 docs/menu_ops_development.md 的操作菜单为骨架,完整梳理全部指令的分类体系、接口组织形式(头文件/库文件)、通用操作数约定(Tile、GlobalTensor、有效区域、事件同步),并结合逐指令参考文档与仓库源码给出从"查文档"到"写 Kernel"的完整路径。读完本文,你将能够按功能类别快速定位所需 PTO 指令、读懂任何一条指令参考页、理解 Auto/Manual 两种放置模式与多后端选择机制,并掌握已废弃接口的迁移方法。

一、PTO 指令集全景:124 条指令与三类命名前缀

根据 PTO-ISA-Header-and-Library-Description.md,PTO 全称 Parallel Tile Operation,即并行 Tile 操作,是 Ascend CANN 定义的面向 Tile 编程的虚拟指令集架构,本仓共提供124 条 Tile 指令,其中包含一套片间通信扩展指令。这些指令覆盖逐元素计算、归约、广播、矩阵乘与 GEMV、数据搬运、类型转换、布局变换、排序、Union 计算等计算与变换场景,以及同步、资源配置等系统控制场景,可供上层框架、算子实现与编译工具链统一调用。

PTO 指令统一采用 Tile 块级抽象,命名风格为"指令类别前缀 + 计算名称",整体首字母大写,采用 PascalCase 风格:

前缀含义典型指令
T面向 Tile 对象的操作(绝大多数指令)TADDTMULTMATMULTGEMVTLOADTSTORETMOVTGATHERTSCATTERTCVT
M不规则访存(memory),Gather/ScatterMGATHERMSCATTER
SYNCALL跨核同步屏障SYNCALL

操作菜单文档 docs/menu_ops_development.md 将全部指令组织为 11 大类:头文件和库文件说明、逐元素双目运算、逐元素单目运算、逐元素算术与超越函数、逐元素与标量运算、归约运算、广播运算、矩阵运算、数据搬运与访存、复杂变换计算、系统与控制,外加独立的通信章节。全量指令索引还可参考 docs/PTOISA_zh.md,逐指令参考文档则位于 docs/isa/,通信指令位于 docs/isa/comm/。

二、接口组织:唯一入口头文件与多后端自动选择

2.1 头文件布局

PTO 接口的头文件位于 CANN 安装目录下的<arch>-linux/include/子目录中,例如${INSTALL_DIR}/aarch64-linux/include/pto/pto-inst.hpp${INSTALL_DIR}为 CANN 软件安装路径,以 root 用户安装为例,默认路径为/usr/local/Ascend/cann

pto/pto-inst.hpp是 PTO 指令集架构的唯一对外统一入口头文件,上层只需包含pto/pto-inst.hpp即可获得全部公开接口,无需逐个包含子头文件。该头文件按职责聚合以下模块:

  1. Tile 类型系统与公共工具:定义 Tile 对象、内存与缓冲区管理、常量、Kernel 元信息及通用工具。
  2. 指令 API 声明:定义 124 条 Tile 指令的统一声明,每条指令提供 Auto 自动放置与 Manual 手动放置两种形式,覆盖逐元素计算、归约、广播、矩阵乘与 GEMV、数据搬运、类型转换、布局变换、排序、Union 计算、同步、资源配置与片间通信等接口。
  3. 多后端自动选择:依据编译期宏自动选择实现后端——定义__CPU_SIM时启用 CPU 仿真后端,定义__COSTMODEL时启用 A2/A3 CostModel 后端,定义__CCE_AICORE__时启用 NPU 真机后端,并按 SoC 代际 A2/A3、A5、Kirin 等划分实现。
  4. 片间通信指令库:定义 NPU 间点对点通信、信号同步与集合通信接口,含同步与异步两套接口。

在仓库源码中,指令内建接口的权威声明位于 include/pto/common/pto_instr.hpp,通信指令的权威声明位于 include/pto/comm/pto_comm_inst.hpp,通信相关类型定义位于 include/pto/comm/comm_types.hpp。

2.2 库文件:header-only 纯头文件模板库

PTO-ISA 为header-only 纯头文件模板库,指令实现以模板与内联形式在编译期展开进上层 Kernel,无需单独链接.so文件。其编译期依赖 BiSheng 编译器bisheng-compiler将含 PTO 指令的 Kernel 编译为设备代码;运行期依赖 CANN Runtime 库libruntime.so提供设备执行环境。

三、指令分类详解(对照操作菜单)

以下按照 docs/menu_ops_development.md 的分类结构逐一展开,括号内给出对应的逐指令参考页链接。

3.1 逐元素双目运算(Tile-Tile)

算术运算(docs/menu/arithmetic_zh.md):

指令语义参考
TADD两个 Tile 的逐元素加法TADD
TSUB两个 Tile 的逐元素减法TSUB
TMUL两个 Tile 的逐元素乘法TMUL
TMAX两个 Tile 的逐元素最大值TMAX
TMIN两个 Tile 的逐元素最小值TMIN

此外 ISA 参考目录还收录TMADD(三元运算src0 * dst + src1)、TMULAsrc0 * src1 + dst)等融合形式,见 docs/isa/README.md。

逻辑运算(docs/menu/binary_logic_zh.md):

指令语义参考
TAND逐元素按位与TAND
TOR逐元素按位或TOR
TXOR逐元素按位异或TXOR
TSHL逐元素左移TSHL
TSHR逐元素右移TSHR
TCMP比较两个 Tile 并写入打包的谓词掩码TCMP
TSEL用掩码 Tile 在两个 Tile 间逐元素选择TSEL

3.2 逐元素单目运算

指令语义参考
TABS逐元素绝对值TABS
TNOT逐元素按位取反TNOT
TNEG逐元素取负TNEG
TRELU逐元素 ReLUTRELU

3.3 逐元素算术与超越函数

指令语义参考
TDIV两个 Tile 的逐元素除法TDIV
TREM余数(符号与除数相同)TREM
TSQRT逐元素平方根TSQRT
TLOG逐元素自然对数TLOG
TRECIP逐元素倒数TRECIP
TEXP逐元素指数TEXP
TRSQRT逐元素倒数平方根TRSQRT

3.4 逐元素与标量运算(Tile-Scalar / Tile-Immediate)

算术运算(docs/menu/scalar_arithmetic_zh.md):

指令语义参考
TADDSTile 与标量逐元素加法TADDS
TAXPY原位缩放累加:dst = scalar * src0 + dstTAXPY
TSUBS从 Tile 逐元素减标量TSUBS
TMULSTile 与标量逐元素乘法TMULS
TDIVS与标量逐元素除法(Tile/标量 或 标量/Tile)TDIVS
TMINSTile 与标量逐元素最小值TMINS
TMAXSTile 与标量逐元素最大值TMAXS
TREMS与标量的余数:remainder(src, scalar)TREMS

逻辑运算(docs/menu/scalar_logic_zh.md):

指令语义参考
TANDSTile 与标量逐元素按位与TANDS
TORSTile 与标量逐元素按位或TORS
TXORSTile 与标量逐元素按位异或TXORS
TCMPSTile 与标量比较并写入逐元素比较结果TCMPS
TSELS用掩码 Tile 在源 Tile 与标量间选择TSELS
TSHLSTile 按标量左移TSHLS
TSHRSTile 按标量右移TSHRS

3.5 归约运算(轴归约)

归约为一列(逐行归约)(docs/menu/reduce_to_col_zh.md):

指令语义参考
TROWSUM对每行跨列求和TROWSUM
TROWPROD对每行跨列求积TROWPROD
TROWMAX每行最大值TROWMAX
TROWMIN每行最小值TROWMIN
TROWARGMAX每行最大值对应列索引TROWARGMAX
TROWARGMIN每行最小值对应列索引TROWARGMIN

归约为一行(逐列归约)(docs/menu/reduce_to_row_zh.md):

指令语义参考
TCOLSUM对每列跨行求和TCOLSUM
TCOLPROD对每列跨行求积TCOLPROD
TCOLMAX每列最大值TCOLMAX
TCOLMIN每列最小值TCOLMIN
TCOLARGMAX每列最大值对应行索引(值+行索引)TCOLARGMAX
TCOLARGMIN每列最小值对应行索引(值+行索引)TCOLARGMIN

3.6 广播运算(轴扩展)

按行广播(docs/menu/broadcast_row_zh.md):

指令语义参考
TROWEXPAND将每个源行首元素广播到目标行TROWEXPAND
TROWEXPANDADD行广播加法(加每行标量向量)TROWEXPANDADD
TROWEXPANDSUB行广播减法TROWEXPANDSUB
TROWEXPANDMUL行广播乘法TROWEXPANDMUL
TROWEXPANDDIV行广播除法TROWEXPANDDIV
TROWEXPANDMAX行广播最大值TROWEXPANDMAX
TROWEXPANDMIN行广播最小值TROWEXPANDMIN
TROWEXPANDEXPDIF行指数差:exp(src0 - src1)TROWEXPANDEXPDIF

按列广播(docs/menu/broadcast_col_zh.md):

指令语义参考
TCOLEXPAND将每个源列首元素广播到目标列TCOLEXPAND
TCOLEXPANDADD列广播加法TCOLEXPANDADD
TCOLEXPANDSUB列广播减法TCOLEXPANDSUB
TCOLEXPANDMUL列广播乘法TCOLEXPANDMUL
TCOLEXPANDDIV列广播除法TCOLEXPANDDIV
TCOLEXPANDMAX列广播最大值TCOLEXPANDMAX
TCOLEXPANDMIN列广播最小值TCOLEXPANDMIN
TCOLEXPANDEXPDIF列指数差:exp(src0 - src1)TCOLEXPANDEXPDIF

3.7 矩阵运算

矩阵乘矩阵(docs/menu/matmul_mat_zh.md):

指令语义参考
TMATMUL矩阵乘(GEMM),生成累加器/输出 TileTMATMUL
TMATMUL_BIAS矩阵乘加偏置TMATMUL_BIAS
TMATMUL_ACC带累加器输入的矩阵乘(融合累加)TMATMUL_ACC
TMATMUL_MX带缩放 Tile 的混合精度/量化矩阵乘TMATMUL_MX

矩阵乘向量(docs/menu/matmul_vec_zh.md):

指令语义参考
TGEMV通用矩阵-向量乘法,生成累加器/输出 TileTGEMV
TGEMV_BIASGEMV 加偏置TGEMV_BIAS
TGEMV_ACC带显式累加器输入/输出 Tile 的 GEMVTGEMV_ACC
TGEMV_MX带缩放 Tile 的混合精度 GEMVTGEMV_MX

3.8 数据搬运与访存

规则访存(docs/menu/regular_access_zh.md):

指令语义参考
TLOAD从 GlobalTensor(GM)加载数据到 TileTLOAD
TSTORE从 Tile 存储数据到 GlobalTensor(GM),可选原子写或量化参数TSTORE
TPREFETCH从全局内存预取到 Tile 本地缓存/缓冲区(提示)TPREFETCH

不规则访存(docs/menu/irregular_access_zh.md):

指令语义参考
MGATHER用逐元素索引从 GM 收集加载到 TileMGATHER
MSCATTER用逐元素索引将 Tile 元素散播存储到 GMMSCATTER

3.9 复杂变换计算

初始化(docs/menu/init_zh.md):

指令语义参考
TEXPANDS将标量广播到目标 TileTEXPANDS
TCI生成连续整数序列到目标 TileTCI
TTRI生成三角(下/上)掩码 TileTTRI
TRANDOM用计数器密码算法在目标 Tile 生成随机数TRANDOM
TFILLPAD复制 Tile 并在有效区域外以编译期填充值填充TFILLPAD

数据类型转换(docs/menu/cast_zh.md):

指令语义参考
TCVT带指定舍入模式的逐元素类型转换TCVT
TQUANT量化 Tile(如 FP32 → FP8),生成指数/缩放/最大值输出TQUANT
TDEQUANT仿射反量化(S8/S16 → FP32):dst = (src - offset) * scaleTDEQUANT

布局变换(docs/menu/layout_zh.md):

指令语义参考
TEXTRACT从源 Tile 提取子 TileTEXTRACT
TINSERT(indexRow, indexCol)偏移处插入子 TileTINSERT
TGATHER用索引 Tile 或编译期掩码模式收集/选择元素TGATHER
TSCATTER用逐元素行索引将源 Tile 行散播到目标 TileTSCATTER
TCONCAT沿列维度水平拼接两个 TileTCONCAT
TTRANS转置(使用实现定义的临时 Tile)TTRANS
TIMG2COL类卷积工作负载的图像到列变换TIMG2COL
TMOVTile 间移动/复制,可选应用实现定义的转换模式TMOV
TGATHERB使用字节偏移量收集元素TGATHERB
TDEINTERLEAVE反交织为偶数/奇数元素流(TINTERLEAVE 的逆)TDEINTERLEAVE
TINTERLEAVE交织两个源 Tile 为交替偶/奇流,拆分为两个目标半部分TINTERLEAVE
TRESHAPE将 Tile 重新解释为另一种类型/形状,保留底层字节TRESHAPE

排序(docs/menu/sort_zh.md):

指令语义参考
TSORT32对每 32 元素块连同idx条目排序,输出排序后的 value-index 对TSORT32
TMRGSORT多个已排序列表的归并排序(实现定义的元素格式和布局)TMRGSORT
THISTOGRAM逐字节直方图(256 桶),可级联高位字节过滤(基数排序桶计数原语)THISTOGRAM

Union 计算(docs/menu/union_zh.md):

指令语义参考
TPARTADD部分逐元素加法(有效区域不匹配时实现定义)TPARTADD
TPARTMUL部分逐元素乘法TPARTMUL
TPARTMAX部分逐元素最大值TPARTMAX
TPARTMIN部分逐元素最小值TPARTMIN
TPARTARGMAX部分最大值选择并返回对应索引(argmax)TPARTARGMAX
TPARTARGMIN部分最小值选择并返回对应索引(argmin)TPARTARGMIN

3.10 系统与控制

调试(docs/menu/debug_zh.md):

指令语义参考
TASSIGN将 Tile 对象绑定到实现定义的片上地址(Manual 手动放置)TASSIGN
TPRINT调试/打印 Tile 中的元素(实现定义)TPRINT

CV 通信(Cube-Vector 核间通信)(docs/menu/cv_comm_zh.md):

指令语义参考
TPUSH将生产者 Tile 推入 TPipe FIFO,用于 Cube-Vector 通信TPUSH
TPOP从 TPipe FIFO 弹出消费者 Tile/GlobalTensorTPOP
TALLOC将 TPipe FIFO 槽位分配为 GlobalTensor 视图TALLOC
TFREE释放 TPipe FIFO 空间(部分目标上对 TileData TPOP 流程为空操作)TFREE

同步(docs/menu/sync_zh.md):

指令语义参考
SYNCALL跨核同步屏障(硬件 FFTS 或软件 GM 轮询)SYNCALL

3.11 通信(片间通信扩展指令)

同步通信(docs/menu/sync_comm_zh.md):

指令语义参考
TPUT远程写:本地数据传输到远端 NPU 内存(GM → UB → GM)TPUT
TGET远程读:远端 NPU 数据读取到本地(GM → UB → GM)TGET
TBROADCAST将当前 NPU 数据广播到所有 rankTBROADCAST
TREDUCE从所有 rank 收集数据并逐元素归约到本地TREDUCE
TNOTIFY向远端 NPU 发送标志通知TNOTIFY
TWAIT阻塞等待,直到信号满足比较条件TWAIT
TTEST非阻塞检测信号是否满足比较条件TTEST

异步通信(docs/menu/async_comm_zh.md):

指令语义参考
TPUT_ASYNC异步远程写(本地 GM → DMA 引擎 → 远端 GM)TPUT_ASYNC
TPUT_ASYNC_NOTIFY远程写并更新远端int32_tsignalTPUT_ASYNC_NOTIFY
TGET_ASYNC异步远程读(远端 GM → DMA 引擎 → 本地 GM)TGET_ASYNC

四、通用约定:操作数、形状与有效区域

docs/isa/conventions_zh.md 定义了所有指令参考页共用的术语与写法,并与 include/pto/common/pto_instr.hpp 中的 C++ 内建接口保持一致:

  • Tile:片上二维操作数对象(如pto::Tile<...>),大量指令以 Tile 为输入/输出,并通过GetValidRow()/GetValidCol()使用 Tile 的有效区域。
  • GM(全局内存):通过pto::GlobalTensor<...>访问的片外内存视图。
  • 标量 / 立即数:主机侧标量值,或在*S/*C等变体中编码的立即数参数。

C++ 编程模型请参考 docs/coding/Tile_zh.md、docs/coding/GlobalTensor_zh.md、docs/coding/Scalar_zh.md。

物理形状与有效形状Rows/Cols描述 Tile 的物理存储形状;GetValidRow()/GetValidCol()描述参与计算的有效区域,修改有效形状不改变物理步长。对于非分形 Tile,元素(i, j)的偏移(元素为单位)为i * RowStride + j * ColStride:RowMajor 步长为(Cols, 1),ColMajor 步长为(1, Rows)。例如 A5 上int64_t/uint64_t的 RowMajor 输出物理形状为[64,4]、有效形状为[64,1]时,物理行步长仍为 4 个元素(32 字节),行归约结果位于偏移0, 4, 8, ...

有效区域语义:指令页中"对有效区域内的每个元素(i, j)"默认指valid_row = dst.GetValidRow()valid_col = dst.GetValidCol();数学语义仅对0 <= i < valid_row0 <= j < valid_coldst[i, j]定义;有效区域之外元素的值为未指定(不要假设一定清零或保持不变)。

事件与同步:某些指令序列需要建立内存与向量流水线之间的顺序关系,示例中的事件(如set_flag(...)/wait_flag(...))用于表达后端需要满足的顺序约束;在需要显式同步的场景使用 event synchronization 建立阶段间顺序。事件模型参考 docs/coding/Event_zh.md。

五、指令参考页结构拆解:以 TADD 为例

每一条指令在 docs/isa/ 下都有独立参考页,结构统一为:指令示意图 → 简介 → 数学语义 → 汇编语法 → IR(Level 1 / Level 2)→ C++ 内建接口 → 约束 → 示例。以 TADD 为例:

汇编语法(同步形式):

%dst = tadd %src0, %src1 : !pto.tile<...>

IR Level 1(SSA)

%dst = pto.tadd %src0, %src1 : (!pto.tile<...>, !pto.tile<...>) -> !pto.tile<...>

IR Level 2(DPS)

pto.tadd ins(%src0, %src1 : !pto.tile_buf<...>, !pto.tile_buf<...>) outs(%dst : !pto.tile_buf<...>)

C++ 内建接口

template <typename TileDataDst, typename TileDataSrc0, typename TileDataSrc1, typename... WaitEvents> PTO_INST RecordEvent TADD(TileDataDst &dst, TileDataSrc0 &src0, TileDataSrc1 &src1, WaitEvents &... events);

约束(体现多后端差异):

  • Atlas A2/A3 训练与推理系列:dstsrc0src1数据类型必须相同,且为int32_tint16_thalffloat之一;布局均为行主序。
  • Ascend 950PR / 950DT:数据类型必须相同,支持int32_tuint32_tint64_tuint64_tfloatint16_tuint16_thalfbfloat16_tuint8_tint8_t;布局均为行主序。
  • CPU_SIM:三个操作数数据类型必须相同,不额外限制行主序,各操作数按自身布局与物理形状计算地址。
  • 有效区域:使用dst.GetValidRow()/dst.GetValidCol()作为迭代域;A2A3、A5 与 CPU_SIM 均要求三者的运行时有效行列数完全相同,不匹配触发断言失败。

示例(Auto 模式,混用静态/动态有效形状):

#include <pto/pto-inst.hpp> using namespace pto; void example_mixed_valid_shape() { using DynamicTile = Tile<TileType::Vec, int32_t, 16, 16, BLayout::RowMajor, -1, -1>; using StaticTile = Tile<TileType::Vec, int32_t, 16, 16, BLayout::RowMajor, 16, 16>; DynamicTile dst(16, 16), src1(16, 16); StaticTile src0; TADD(dst, src0, src1); }

由此可见,阅读任何指令时只需关注四件事:数学语义(做什么)、汇编/IR 形式(怎么编译)、C++ 接口与约束(怎么写、支持哪些类型与后端)、示例(直接可运行)。

六、已废弃接口与迁移指南

docs/isa/README.md 声明:自PTO ISA v9.2.0起,以下旧指令接口不再对外暴露,兼容窗口关闭,不再保留公共包装:

TADDCTAddDeqReluTADDReluConvTADDSCTFUSEDMULADDRELUTGET_SCALE_ADDRTPairReduceSumTSUBCTSUBRELUTSUBRELUCONVTSUBSCTSUBVIEWTSYNC

迁移要点:

  • TSYNC(events...)改用普通基于事件的排序:将事件对象传给消费指令,或在消费前显式调用WaitAllEvents(events...)
  • TSUBVIEW无公共 ISA 替代;仓库内部实现可使用pto::detail::PtoSubTileView作为内部辅助,外部代码应通过受支持的 Tile 构造与公共数据搬运 API 表达数据视图。
  • 三元/标量融合算术形式改用对应原语序列,如TADDTSUBTADDSTSUBSTMULTMADDTRELU
  • 融合乘加接口更名:TFUSEDMULADDTMADDTMULADDDSTTMULA
  • 融合 add/ReLU/convert 或 add/dequant/ReLU 形式拆分为显式的算术、转换/反量化与TRELU步骤。
  • TPairReduceSum改用与目标布局匹配的行/列归约原语。
  • 不要调用TGET_SCALE_ADDR;AUTO 模式 MX 测试中,应在调用 MX 矩阵乘原语前于测试代码内从数据 Tile 绑定 scale Tile 地址。

七、从文档导航到实际开发:仓库配套资源

菜单文档的价值在于"按功能找指令",而实际开发还需结合仓库配套资源:

  • 权威声明:所有指令的 C++ 内建接口以 include/pto/common/pto_instr.hpp 为权威来源;通信指令见 include/pto/comm/pto_comm_inst.hpp 与 include/pto/comm/comm_types.hpp。公共包含头统一为pto/pto-inst.hpp
  • 手动(Manual)算子示例:kernels/manual/a5/ 与 kernels/manual/a2a3/ 存放手写 Tile Kernel 示例,演示TLOAD/TSTORE/TMATMUL等指令的完整使用与 CMake 构建脚本。
  • 自动(Auto)模式示例:kernels/automode/a5/ 与 demos/auto_mode/ 演示 Auto 放置模式;demos/baseline/add/ 提供最小可运行的算子扩展(op_extension + test)样例。
  • CPU 仿真与调试:定义__CPU_SIM可启用 CPU 仿真后端,tests/cpu/st/ 下有大量可对照的 CPU 侧测试;CPU 仿真原理见 docs/coding/cpu_sim_zh.md。
  • 测试验证:真机指令测试见 tests/npu/a5/(含每类指令的用例),批量运行入口为 tests/run_st.sh 与 tests/run_cpu_tests.sh。
  • 编程模型文档:完整了解 Tile 生命周期、GlobalTensor 访存、多核编程与性能优化,可继续阅读 docs/coding/README_zh.md 下的 ProgrammingModel_zh.md、Tile_zh.md、GlobalTensor_zh.md、multi-core-programming_zh.md 等。

八、总结

PTO 虚拟指令集以 Tile 为统一抽象,通过T(计算与搬运)、M(不规则访存)、SYNCALL(跨核同步)三类前缀组织 124 条指令,覆盖从逐元素运算、归约广播、矩阵乘到数据搬运、布局变换、类型转换、排序、Union、系统控制与片间通信的完整算子开发场景。以 docs/menu_ops_development.md 为导航入口,配合 docs/isa/ 逐指令参考、docs/isa/conventions_zh.md 通用约定与 include/pto/common/pto_instr.hpp 权威声明,开发者可以快速定位、理解并使用任意 PTO 指令;结合 kernels/ 示例与 tests/ 测试,即可完成从指令选型到 Kernel 编写、仿真验证与真机跑测的完整开发闭环。

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 23:49:57

给 Hermes Desktop 装上跨会话记忆:Hindsight 记忆配置完整指南

给 Hermes Desktop 装上跨会话记忆&#xff1a;Hindsight 记忆配置完整指南 【免费下载链接】hindsight Hindsight: Agent Memory That Learns 项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight Hermes Desktop 是 Nous Research 推出的 Hermes Age…

作者头像 李华
网站建设 2026/9/19 23:49:38

PowerDesigner16 的 comment 不显示?TaoToken 这样让 Codex 查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 23:44:20

AI 论文降重改写,几款常用降AIGC网站怎么选才最稳妥

摘要&#xff1a;本文围绕论文写作中的改写与降重需求&#xff0c;比较了几款常见的AI辅助工具&#xff0c;从改写能力、语言润色、引用规范等维度做横向梳理&#xff0c;并给出按写作阶段和语种匹配的选型思路。结论是先看清自己卡在改写还是润色&#xff0c;再决定用哪一类工…

作者头像 李华
网站建设 2026/9/19 23:44:13

5款AI写论文哪个好?我拿毕业论文实测了一圈,答案有点意外

aigcbiye官网www.aigcbiye.com 微信公众号搜一搜 aigcbiye 做论文写作科普这几年&#xff0c;被问最多的问题就是“到底哪款AI写论文工具靠谱”。 网上的答案基本两类&#xff1a;一类是拿着通用大模型当论文工具吹&#xff0c;另一类是收了推广费闭眼说好话。但写论文这件事…

作者头像 李华
网站建设 2026/9/19 23:44:06

Claw 生态横评:OpenClaw 的多 Agent 协作,Base URL 填 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华