为什么 TensorFlow 尽管有多个核心却只能找到一个 CPU 设备?

LaL*_*aLa 3 python tensorflow

据我了解,TensorFlow 为每个核心创建一个设备。(来源: https: //github.com/samjabrahams/tensorflow-white-paper-notes注意:在此重申,“单个设备”意味着使用单个 CPU 核心或单个 GPU,而不是单个机器。类似地,“多设备”并不是指多台机器,而是指多个CPU核心和/或GPU。多机讨论参见“3.3分布式执行”。

我的电脑有四个核心,但它只识别一个:

>>> from tensorflow.python.client import device_lib 
>>> print(device_lib.list_local_devices())
[name: "/cpu:0"
device_type: "CPU"
memory_limit: 268435456
bus_adjacency: BUS_ANY
incarnation: 13835232998165214133
]
Run Code Online (Sandbox Code Playgroud)

你知道为什么吗?

Yar*_*tov 6

默认情况下cpu:0代表进程可用的所有核心。您可以通过执行以下操作来创建设备cpu:0,每个设备代表 1 个逻辑核心cpu:1

config = tf.ConfigProto(device_count={"CPU": 2},
                        inter_op_parallelism_threads=2,
                        intra_op_parallelism_threads=1)
sess = tf.Session(config=config)
Run Code Online (Sandbox Code Playgroud)

然后您可以将设备分配为

with tf.device("/cpu:0"):
  # ...

with tf.device("/cpu:1"):
  # ...
Run Code Online (Sandbox Code Playgroud)