为什么在我使用 MKL 时 Tensorflow 会警告 AVX2?

Why does Tensorflow warn about AVX2 while I am using MKL?

我正在使用支持 MKL 的 Tensorflow 的 Anaconda 发行版。

from tensorflow.python.framework import test_util
test_util.IsMklEnabled()

此代码打印 True。但是,当我编译我的 Keras 模型时,我仍然得到

Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2

这不是我所期望的行为。

可以忽略此警告。出现这种情况的原因是因为在构建 TF 时设置了指令集标志。但是,MKL-DNN(负责在 tensorflow-mkl 中执行核心计算的数学库)在 运行 时间将使用您的机器支持的最新矢量指令集。如果你查看 intel 优化的 tensorflow install guide,你可以获得更多详细信息。 所以底线是,尽管出现了这些警告消息,但 MKL 在 运行 时间

使用了 AVX2

tensorflow 执行的 MKL-DNN 部分(这是 MKL 工程师提供的主要加速)在运行时进行了 JIT。因此,针对二进制创建的指令集与 MKL-DNN 代码无关。它只会影响其他数学,主要是 Eigen 库和任何尚未被 MKL-DNN 函数替换的函数。