非连续转连续(Vector算子)

基本原理

使用场景

在模型或训练脚本中使用了View非连续类操作,如调用了transpose、narrow、select、permute、chunk、split等PyTorch框架类算子,PyTorch框架会调用format_contiguous函数对其进行校验,生成一个匹配且连续的tensor。

  1. 参见性能采集与分析工具使用在训练脚本中使能profiling。
  2. 通过查看profiling数据,如发现在非连续转连续时耗时明显,可定位至对应算子,例如图4所示,format_contiguousV2为转连续算子。

    图4 大量转连续算子

优化方案

基于当前的机制,目前针对这类算子有3种处理方式: