pypto.set_pass_options#
产品支持情况#
产品 |
是否支持 |
|---|---|
Atlas A3 训练系列产品/Atlas A3 推理系列产品 |
√ |
Atlas A2 训练系列产品/Atlas A2 推理系列产品 |
√ |
功能说明#
修改Pass优化参数信息。其主要功能是在编译流程中,针对特定的优化策略和具体的Pass,动态修改其运行时参数配置,从而实现精细化的控制和调试。
函数原型#
set_pass_options(*,
vec_nbuffer_setting: Optional[Dict[int, int]] = None,
cube_l1_reuse_setting: Optional[Dict[int, int]] = None,
cube_nbuffer_setting: Optional[Dict[int, int]] = None,
sg_set_scope: Optional[int] = None,
)
参数说明#
参数名 |
输入/输出 |
说明 |
|---|---|---|
vec_nbuffer_setting |
输入 |
含义:合图参数,用于配置相同结构AIV子图的合并数量。 |
cube_l1_reuse_setting |
输入 |
含义:合图参数,用于配置重复搬运同一GM数据的子图合并数量。 |
cube_nbuffer_setting |
输入 |
含义:合图参数,用于配置相同结构AIC子图的合并数量。 |
sg_set_scope |
输入 |
含义:手动控制合图参数。 |
返回值说明#
无。
约束说明#
设置时机:不要求在图编译开始前调用,可以在任何时候进行设置。
类型安全:必须确保传入的value的类型与参数定义的类型完全一致,否则可能导致未定义行为或运行时错误。
作用范围:参数设置是局部的,只会影响当前jit或者loop内的编译过程,若未设置,则继承上层作用域。
调用示例#
pypto.set_pass_options(
vec_nbuffer_setting={},
cube_l1_reuse_setting={},
cube_nbuffer_setting={})
dict类型配置说明#
键值对含义#
Key (hashorder): 同构子图组id。
值 M: 匹配 hashorder 为 M 的特定子图组。
值 -1: 匹配所有未显式指定的子图组。
Value (N): 表示合并粒度。即:同构子图组内每N个子图合并为一个新子图执行。
配置行为#
Pass 在处理子图合并时,遵循 “精确匹配 > 默认配置 > 自动处理” 的逻辑:
精确匹配: 若 hashorder 命中字典中的特定 Key,则按其对应的 Value N 进行合并。
默认配置: 若未精确命中,但字典中存在 -1,则按 -1 对应的 Value 执行合并。
自动处理: 若既未精确命中也无 -1 配置,则自动计算合并粒度进行合并优化。
配置示例#
配置 |
说明 |
|---|---|
{-1: 1} |
跳过子图合并。合并粒度为1,即所有同构子图组内的子图不进行合并。 |
{0: 5} |
对于hashorder为0的同构子图组,每5个子图合并为一个子图; |
{0: 5, 2: 8, -1: 2} |
hashorder为0的同构子图组,每5个子图合并为一个子图; |
{0: 5, -1: 1} |
hashorder为0的同构子图组,每5个子图合并为一个子图; |