从Tensorflow code开始,一些MKL优化是通过图形重写来完成的,这些图形重写通过使用MKL的融合函数替换节点集。我尝试使用tf.logging.set_verbosity(1)
查找重写但从未见过log messages I expect。
我已经在CPU上创建了Tensorflow,并启用了MKL和XLA。我认为构建使用的是MKL,因为我可以使用NCHW'前向传递中tf.nn.conv2d
和tf.nn.bias_add
的数据格式,如果它们一起出现的话。它运行速度更快,充分利用了CPU。向后传递虽然错误说" CPU BiasGradOp仅支持NHWC"虽然看起来像MKL功能可以融合Conv2D和BiasAdd向前和向后融合NCHW'。所以我想直接寻找重写。
如何查看图表是否重写?
答案 0 :(得分:2)
一种方法是使用时间轴/跟踪功能。您可以按照StackOverflow这个答案进行操作。如果它使用MKL,您会看到名称为_MklReshape
或_MklConv2D
答案 1 :(得分:1)
这不是专门测试图形重写的方法,但是您可以使用以下方法检查是否在tensorflow中启用了mkl:
tf.python.pywrap_tensorflow.IsMklEnabled()
发件人:https://github.com/tensorflow/tensorflow/issues/17176#issuecomment-371364155
答案 2 :(得分:0)
Tensorflow有一个带有教程here的调试器(tfdbg)。调试器在运行之前打印session.run()
将访问的所有图节点的列表。
您还可以探索输入张量,输出张量和每个节点的属性。
如果你不想花时间用tfdbg编译,Ariel的答案也可以看到op类型。
答案 3 :(得分:0)
对于v2.0.0 +,命令为:
python -c "from tensorflow.python import pywrap_tensorflow; print(pywrap_tensorflow.IsMklEnabled())"
来源:https://software.intel.com/en-us/forums/intel-optimized-ai-frameworks/topic/837000