(1)Vector编程范式定义: a. 明确Vector编程在TensorAPI中的定位:基于Vector计算单元的向量化计算编程范式 b. 定义Vector编程的执行模型:以Tensor为操作对象,通过Vector指令实现批量数据计算 c. 明确Vector编程与现有编程模型(SIMD/Tensor高阶API等)的关系和适用场景差异
(2)Tensor数据结构扩展: a. 扩展Tensor以支持Vector编程所需的数据布局和对齐要求 b. 支持Vector编程下的数据类型定义(half/float/int16/int32等) c. 支持Tensor的Vector视图、切片和形状操作
二、Vector API接口设计:
(1)基础Vector计算接口: a. 逐元素运算:Add、Sub、Mul、Div等四则运算 b. 数学函数:Exp、Log、Sqrt、Rsqrt、Reciprocal等 c. 比较运算:Max、Min、Greater、Less、Equal等 d. 逻辑运算:And、Or、Not等
(2)Vector数据搬运接口: a. Vector计算的数据加载接口:支持GM到UB的数据搬运 b. Vector计算的数据存储接口:支持UB到GM的数据搬运 c. 支持Vector编程下的数据重排、转置和广播操作
(3)Vector计算控制接口: a. Vector计算的范围控制接口:支持指定Tensor的元素范围进行计算 b. Vector计算的掩码(mask)控制接口:支持按掩码选择参与计算的元素 c. Vector计算的repeat参数控制接口:支持配置repeat次数和步长
三、算子开发支持:
(1)核函数定义规范: a. 新增Vector编程核函数定义模板和修饰符 b. 支持Vector核函数的入参(输入Tensor)和出参(输出Tensor)规范 c. 提供Vector核函数的注册和调用机制
(2)算子开发模板与示例: a. 提供Vector算子开发的完整模板代码,包含数据搬运、计算、输出完整流程 b. 提供Elementwise类算子示例(如Add、Mul) c. 提供Reduce类算子示例(如Sum、Max) d. 提供Broadcast类算子示例
四、编译与运行支持:
(1)编译工具扩展: a. 扩展编译器以支持TensorAPI Vector编程语法解析和代码生成 b. 支持Vector编程的编译选项配置 c. 提供Vector程序编译阶段的错误诊断信息
(2)运行时支持: a. 支持Vector程序的加载和执行调度 b. 提供Vector计算的运行时资源管理(UB内存分配等) c. 支持Vector程序的调试信息输出和性能采集
五、文档与资料:
(1)编程指南补充: a. 在编程指南中新增"Vector编程"章节,介绍Vector编程模型和基本概念 b. 新增Vector API接口参考文档,按模块分类说明每个接口的用法 c. 补充Vector编程的快速入门示例
Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
Background(背景信息)
【功能】当前TensorAPI不支持Vector编程模型,缺少Vector向量化计算能力。通过对竞品分析发现,主流AI算子开发框架(如CUDA等)均提供统一的Tensor API进行Vector向量化编程,开发者可通过高层API便捷地进行向量计算。当前开发者使用Vector编程时需要直接依赖底层接口,开发门槛高、效率低,且与TensorAPI编程范式不统一,存在明显能力缺失。
Origin(信息来源)
竞品分析:参考主流AI算子开发框架的Tensor API设计,竞品均提供统一的Vector向量化编程支持。当前TensorAPI在Vector编程能力上与竞品存在差距,需要补齐该能力以保持竞争力。
Benefit / Necessity (价值/作用)
提升开发效率:通过TensorAPI统一入口进行Vector编程,减少开发者直接操作底层接口的场景,缩短Vector算子开发时间;
增强功能:扩展TensorAPI能力边界,新增Vector向量化计算支持,丰富算子开发手段;
统一编程范式:将Vector编程纳入TensorAPI统一编程模型,消除多套API并存的维护成本,降低开发者认知负担;
提升易用性:提供高层次的Vector编程接口,降低Vector算子开发门槛,简化操作流程。
Design(设计方案)
一、Vector编程模型设计:
(1)Vector编程范式定义: a. 明确Vector编程在TensorAPI中的定位:基于Vector计算单元的向量化计算编程范式 b. 定义Vector编程的执行模型:以Tensor为操作对象,通过Vector指令实现批量数据计算 c. 明确Vector编程与现有编程模型(SIMD/Tensor高阶API等)的关系和适用场景差异
(2)Tensor数据结构扩展: a. 扩展Tensor以支持Vector编程所需的数据布局和对齐要求 b. 支持Vector编程下的数据类型定义(half/float/int16/int32等) c. 支持Tensor的Vector视图、切片和形状操作
二、Vector API接口设计:
(1)基础Vector计算接口: a. 逐元素运算:Add、Sub、Mul、Div等四则运算 b. 数学函数:Exp、Log、Sqrt、Rsqrt、Reciprocal等 c. 比较运算:Max、Min、Greater、Less、Equal等 d. 逻辑运算:And、Or、Not等
(2)Vector数据搬运接口: a. Vector计算的数据加载接口:支持GM到UB的数据搬运 b. Vector计算的数据存储接口:支持UB到GM的数据搬运 c. 支持Vector编程下的数据重排、转置和广播操作
(3)Vector计算控制接口: a. Vector计算的范围控制接口:支持指定Tensor的元素范围进行计算 b. Vector计算的掩码(mask)控制接口:支持按掩码选择参与计算的元素 c. Vector计算的repeat参数控制接口:支持配置repeat次数和步长
三、算子开发支持:
(1)核函数定义规范: a. 新增Vector编程核函数定义模板和修饰符 b. 支持Vector核函数的入参(输入Tensor)和出参(输出Tensor)规范 c. 提供Vector核函数的注册和调用机制
(2)算子开发模板与示例: a. 提供Vector算子开发的完整模板代码,包含数据搬运、计算、输出完整流程 b. 提供Elementwise类算子示例(如Add、Mul) c. 提供Reduce类算子示例(如Sum、Max) d. 提供Broadcast类算子示例
四、编译与运行支持:
(1)编译工具扩展: a. 扩展编译器以支持TensorAPI Vector编程语法解析和代码生成 b. 支持Vector编程的编译选项配置 c. 提供Vector程序编译阶段的错误诊断信息
(2)运行时支持: a. 支持Vector程序的加载和执行调度 b. 提供Vector计算的运行时资源管理(UB内存分配等) c. 支持Vector程序的调试信息输出和性能采集
五、文档与资料:
(1)编程指南补充: a. 在编程指南中新增"Vector编程"章节,介绍Vector编程模型和基本概念 b. 新增Vector API接口参考文档,按模块分类说明每个接口的用法 c. 补充Vector编程的快速入门示例