TF 1.10内部操作问题

时间:2018-09-12 14:42:11

标签: python c++ tensorflow

在tensorflow 1.7.0中,可以使用C ++中的以下代码行获取intra_op池中的线程数:

context->device()->tensorflow_cpu_worker_threads()->num_threads

其中context是类型为OpKernelContext的对象。 (由于https://github.com/tensorflow/tensorflow/blob/7bccde15ce0dd29dce62092a5e9d48ffdc772963/tensorflow/core/common_runtime/local_device.cc#L44)。

如果使用以下python代码设置了相应的ConfigProto:

import tensorflow as tf
conf = tf.ConfigProto(inter_op_parallelism_threads=5, intra_op_parallelism_threads=4)
sess = tf.Session(config=conf)

TF 1.7会将context->device()->tensorflow_cpu_worker_threads()->num_threads的值输出为4。

TF 1.10输出context->device()->tensorflow_cpu_worker_threads()->num_threads as 1的值,而与ConfigProto中指定的intra_op_parallelism_threads值无关。

我想知道TF升级是否从1.7.0更改为1.10.0,从而导致这段代码给出不同的值,或者线程池中的线程数确实为1?

其他相关信息:

  • macOS High Sierra版本10.13.6
  • 工作TF版本:1.7.0
  • 突破TF版本:1.10.0
  • Python信息:Python 2.7.10(默认值,10月6日, 2017,22:29:07)[与GCC 4.2.1兼容的Apple LLVM 9.0.0 (clang-900.0.31)]达尔文
  • 来自的详细调试信息 tensorflow(通过在运行前设置TF_CPP_MIN_VLOG_LEVEL = 3 python程序)表示TF 1.10确实计划创建一个 C++ code的这一行上大小为4的线程池。 C ++部分 这篇文章开头的代码会输出1。
  • 这是 在程序中创建的第一个也是唯一的会话。

0 个答案:

没有答案