torch.jit.set_fusion_strategy¶
- torch.jit.set_fusion_strategy(strategy)[源][源]¶
设置融合期间可能发生的特殊化类型和数量。
用法:提供一个对列表 (type, depth),其中 type 是“STATIC”或“DYNAMIC”之一,depth 是一个整数。
- 行为 - 静态与动态
在静态 (STATIC) 融合中,融合后的算子会被编译为具有固定的输入形状。形状基于一些初始分析运行确定。在动态 (DYNAMIC) 融合中,融合后的算子会被编译为具有可变输入形状,从而支持多种形状。
在这两种情况下,我们也会在新步幅行为、设备或数据类型出现时重新编译。
- 行为 - 回退函数与深度
当输入与专业化编译算子所需的格式不匹配时,它将运行回退函数。回退函数会根据观察到的张量形状递归地被编译和特殊化。由于编译可能很慢,提供了“depth”参数来限制可以编译的特殊化数量,在此之前,如果超过限制,将放弃重新编译并回退到完全未融合、未特殊化的实现。
对列表 (type, depth) 控制特殊化的类型和数量。例如:[(“STATIC”, 2), (“DYNAMIC”, 2)] 表示前两个特殊化将使用静态融合,接下来的两个特殊化将使用动态融合,任何不满足这 4 个选项中任何一个的输入都将运行未融合的实现。
注意:将来,如果添加更多融合后端,可能会有更细粒度的特定融合器 API。