繁体   English   中英

在TensorFlow中使用多个CPU内核

[英]Using multiple CPU cores in TensorFlow

我已经在TensorFlow上广泛研究了其他答案,但似乎无法在我的CPU上使用多个内核。

根据htop,以下程序仅使用单个CPU内核:

import tensorflow as tf

n_cpus = 20

sess = tf.Session(config=tf.ConfigProto(
    device_count={ "CPU": n_cpus },
    inter_op_parallelism_threads=n_cpus,
    intra_op_parallelism_threads=1,
))

size = 100000

A = tf.ones([size, size], name="A")
B = tf.ones([size, size], name="B")
C = tf.ones([size, size], name="C")

with tf.device("/cpu:0"):
    x = tf.matmul(A, B)
with tf.device("/cpu:1"):
    y = tf.matmul(A, C)

sess.run([x, y])

# run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
# run_metadata = tf.RunMetadata()
# sess.run([x, y], options=run_options, run_metadata=run_metadata)

# for device in run_metadata.step_stats.dev_stats:
#     device_name = device.device
#     print(device.device)
#     for node in device.node_stats:
#         print("   ", node.node_name)

但是,当我取消注释底部的行并更改size以使计算实际上在合理的时间内完成时,我发现TensorFlow似乎认为它正在使用至少2个CPU设备:

/job:localhost/replica:0/task:0/device:CPU:0
    _SOURCE
    MatMul
    _retval_MatMul_0_0
    _retval_MatMul_1_0_1
/job:localhost/replica:0/task:0/device:CPU:1
    _SOURCE
    MatMul_1

从根本上讲,我想在这里做的是在不同的内核上并行执行不同的操作。 我不想在多个内核上分配单个运算,尽管我知道在这个人为的示例中它确实起作用。 device_countinter_op_parallelism_threads听起来像我想要的,但似乎都没有真正导致使用多个内核。 我尝试了所有我能想到的组合,包括将一个或另一个设置为1以防它们相互冲突,并且似乎没有任何效果。

我还可以确认taskset ,我什么也没做怪我的CPU亲和力:

$ taskset -p $$
pid 21395's current affinity mask: ffffffffff

我要对该代码执行什么操作才能使其使用多个CPU内核?

注意:

  • 根据这个答案 ,我将设置device_countinter_op_parallelism_threads
  • 跟踪命令来自此答案
  • 我可以删除tf.device调用,这似乎对我的CPU使用率没有任何影响。

我正在使用从conda安装的TensorFlow 1.10.0。

这里TensorFlow问题进行了反复讨论之后,我们确定问题是通过不断的折叠传递来“优化”程序,因为输入都是无关紧要的。 事实证明,这种恒定的折页传递顺序进行。 因此,如果要观察并行执行,执行此操作的方法是使输入变得平凡,以便常量折叠不会应用于它们。 问题中建议的方法是使用tf.placeholder ,并且我在此处编写了一个示例程序来使用此方法:

https://gist.github.com/elliottslaughter/750a27c832782f4daec8686281027de8

请参阅原始问题以获取程序输出的示例: https : //github.com/tensorflow/tensorflow/issues/22619

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM