谁能给我任何提示,为什么 XLA-JIT 在 CPU 后端有更好的性能?
我在单个 CPU上的mnist基准测试中尝试了没有和使用 XLA-JIT(手动模式)的TensorFlow。使用 XLA-JIT 与没有 XLA-JIT 的 TensorFlow 相比,实现了 13.6 倍的加速。
说到XLA-JIT的优点,经常会提到操作融合,我自然想到这个技术可能是背后的原因,所以我学习了源码,发现融合过程大致是这样的(如有错误请指正):
- 检查HloComputation(CompOld)中是否有操作可以融合;
- 如果是,则在 CompOld 中添加一条新的 Fusion 指令,并从 CompOld 中删除融合操作;
- 然后创建一个由融合操作组成的新 HloComputation (CompNew)。CompOld 中添加的 Fusion 指令有一个指向 CompNew 的指针。
- 当涉及到后端时,LLVM IR 为 CompOld 和 CompNew 独立发出。
考虑到显着的性能改进,我认为肯定还有更多我想念或误解的东西。我可以听听你的建议吗?