我试图在TensorFlow中获取由XLA编译器生成的LLVM IR。我知道整个LLVM上下文包含在llvm_module
对象中。然后将其转换为文件中llvm_ir::DumpModuleToString(*llvm_module)
函数中的效用函数Compile()
函数的字符串://tensorflow/compiler/xla/service/cpu.cpu_compiler.cc
。
但我一直在尝试使用VLOG(2)
中的tensorflow/core/logging.h
来记录它。没有显示日志。但是,其他文件中的其余VLOG(2)语句都记录在我的Python运行中。
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
2017-03-10 22:36:43.226843: I tensorflow/compiler/xla/service/platform_util.cc:58] platform Host present with 8 visible devices
2017-03-10 22:36:43.227931: I tensorflow/compiler/xla/service/service.cc:183] XLA service 0x2821510 executing computations on platform Host. Devices:
2017-03-10 22:36:43.227951: I tensorflow/compiler/xla/service/service.cc:191] StreamExecutor device (0): <undefined>, <undefined>
b'Hello, TensorFlow!'
答案 0 :(得分:3)
[仅供参考我不能发表评论,因为我刚加入并且显然还没有声誉。]
首先,请务必阅读此内容,包括已加星标的蓝框。特别要注意的是,为整个会话打开XLA只会执行GPU的JIT,而不是CPU。 https://www.tensorflow.org/performance/xla/jit
现在让我们假设您已正确设置了所有内容。您的示例中的程序不会使用XLA进行编译,原因有两个:
在你提到的在mnist_softmax上运行的评论中,大概是按照上面链接上的说明进行的。如果您确实在CPU上进行编译和运行,那么唯一剩下的问题就是使用VLOG(2)。只有在设置命令行标志以将其打开时,才会启用VLOG。
所以尝试用LOG(INFO)替换你的VLOG(2),你应该在日志中看到IR转储。