我猜tensorflow默认使用单核(当我不使用“Coordinator”时),因为tensorflow是python库。
但是,当我在 Mac 上看到运行 Tensorflow 代码的活动监视器时 默认情况下,python 3.6 的 $CPU 高于 100%,线程数大于 10。
tensorflow默认使用多核吗?
Tensorflow 是一个 Python 库,但它本质上是本机 C++ 实现的包装器。每当你定义一个操作时,就像这样:
with tf.device("/cpu:0"):
a = tf.Variable(3.0)
b = tf.constant(4.0)
c = a * b
...
c
不是 python 变量 a
和 b
的乘法,而是一个 tf.multiply
操作,它没有那么简单的 CPU 和 GPU 实现。
所以它不应该让您感到困惑:张量流引擎正在尝试使用所有可用的硬件能力来执行操作,特别是,如FAQ所述,是多核的:
各个操作具有并行实现,在 CPU 中使用多个内核,或在 GPU 中使用多个线程。
顺便说一句,值得注意的是,
"/cpu:0"
设备聚合了多CPU系统上的所有CPU。
目前无法将节点固定在特定 CPU 上或使用
只是所有 CPU 的子集。