如何在单个核心上运行Tensorflow?

如何在单个核心上运行Tensorflow?,tensorflow,core,Tensorflow,Core,我在集群上使用Tensorflow,我想告诉Tensorflow只在一个内核上运行(即使还有更多可用的内核) 有人知道这是否可行吗?在创建会话时,您可以通过在a中传递适当的设备计数作为配置参数来限制TensorFlow使用的特定类型的设备数量。例如,您可以按如下方式限制CPU设备的数量: config = tf.ConfigProto(device_count={'CPU': 1}) sess = tf.Session(config=config) with sess.as_default():

我在集群上使用Tensorflow,我想告诉Tensorflow只在一个内核上运行(即使还有更多可用的内核)


有人知道这是否可行吗?

在创建会话时,您可以通过在a中传递适当的
设备计数作为
配置
参数来限制TensorFlow使用的特定类型的设备数量。例如,您可以按如下方式限制CPU设备的数量:

config = tf.ConfigProto(device_count={'CPU': 1})
sess = tf.Session(config=config)
with sess.as_default():
  print(tf.constant(42).eval())

要在单个CPU线程上运行Tensorflow,我使用:

session_conf = tf.ConfigProto(
      intra_op_parallelism_threads=1,
      inter_op_parallelism_threads=1)
sess = tf.Session(config=session_conf)
device\u count
限制正在使用的CPU数量,而不是内核或线程的数量

说:


使用Tensorflow 0.12.1和1.0.0对Ubuntu 14.04.5 LTS x64和Ubuntu 16.04 LTS x64进行测试。

是的,通过线程亲和力可以实现。线程关联允许您决定由cpu的哪个特定核心执行哪个特定线程。对于线程关联,可以在linux上使用“任务集”或“numatcl”。您还可以使用和

以下代码不会指示/引导Tensorflow仅在一个内核上运行

张量流1

session_conf = tf.ConfigProto(
      intra_op_parallelism_threads=1,
      inter_op_parallelism_threads=1)
sess = tf.Session(config=session_conf)
张量流2

import os
# reduce number of threads
os.environ['TF_NUM_INTEROP_THREADS'] = '1'
os.environ['TF_NUM_INTRAOP_THREADS'] = '1'
import tensorflow
这将总共生成至少N个线程,其中N是cpu核心的数量。大多数情况下,只有一个线程在运行,而其他线程处于睡眠模式

资料来源:

我试过这个,但不起作用。如果我向集群提交作业,Tensorflow仍然可以在一个节点的所有可用核心上工作。我执行以下操作:init=tf.initialize_all_variables()#启动图形config=tf.ConfigProto(设备计数={'CPU':1})sess=tf.Session(config=config)sess.run(init)我也遇到了同样的问题。ConfigProto(设备计数={'CPU':1})不生效。内部并行线程=1和内部并行线程=1确实生效。不幸的是,在WIndows 10(tf 1.5.0)上运行时,这似乎没有效果。这是一个问题,没有办法让一个内核免费供其他程序使用。@LiamRoche我认为这不应该发生。您可能想在tensorflow GitHub存储库中提出一个问题。我们是否需要为tf v2添加
device\u count={'GPU':0}
?对于tf v2:
tf.config.threading.set\u inter\u op\u parallelism\u threads(1)tf.config.threading.set\u intra\u op\u parallelism\u threads(1)
,在您的代码后面我得到了8个线程。我怎么能只得到一个线程?版本:英特尔(R)核心(TM)i5-8250U CPU@1.60GHz核心计数:4核启用:4线程计数:8多核硬件线程
session_conf = tf.ConfigProto(
      intra_op_parallelism_threads=1,
      inter_op_parallelism_threads=1)
sess = tf.Session(config=session_conf)
import os
# reduce number of threads
os.environ['TF_NUM_INTEROP_THREADS'] = '1'
os.environ['TF_NUM_INTRAOP_THREADS'] = '1'
import tensorflow