CPU后端使用TensorFlow XLA-JIT的操作融合性能

Mar*_*Zzz 6 cpu mnist tensorflow tensorflow-xla

谁能给我任何提示,为什么 XLA-JIT 在 CPU 后端具有更好的性能?

我在单个 CPU上的mnist基准测试中尝试了不带和带 XLA-JIT(手动模式)的 TensorFlow 。使用 XLA-JIT 与不使用 XLA-JIT 的 TensorFlow 相比实现了 13.6 倍的加速。

由于在说XLA-JIT的优点时经常提到操作融合,我自然认为可能是这种技术背后的原因,所以我学习了源代码,发现融合过程大致是这样的(如有错误请指正) ):

  1. 检查 HloComputation (CompOld) 中是否有可以融合的操作;
  2. 如果是,则在 CompOld 中增加一条新的 Fusion 指令,并从 CompOld 中移除融合操作;
  3. 然后创建一个由融合操作组成的新 HloComputation (CompNew)。CompOld 中添加的 Fusion 指令有一个指向 CompNew 的指针。
  4. 当涉及到后端时,为 CompOld 和 CompNew 独立发出 LLVM IR。

考虑到显着的性能改进,我认为肯定还有更多我错过或误会的地方。我可以给你建议吗?