【发布时间】:2019-11-05 20:40:32
【问题描述】:
假设我们没有任何GPUs。我们有一台机器,它有一个CPU 和N 内核。我想在 CPU 上训练一个神经网络,并希望尽可能多地利用 CPU。
我知道我可以设置 inter_op_parallelism_threads 和 intra_op_parallelism_threadsvariables 来控制 Tensorflow 中的并行性。但我想知道 Tensorflow 默认如何处理跨 CPU 内核的并行性?
我最初的猜测是默认情况下,Tensorflow 将所有 CPU 内核视为一个设备,并使用它们通过 Eigen 在所有内核上同时运行一个单个操作库,我们没有任何 inter_op 并行性(这意味着并行运行多个操作)。
我知道这个question。但这不是我要找的。我想知道 tensorflow 本身如何处理跨 CPU 内核的并行性。
【问题讨论】:
-
如果你想优化 CPU,你可能应该使用 MKL 版本(我相信 Linnux 上的默认 conda 版本),它会默认使用尽可能多的内核
-
谢谢@YaroslavBulatov,这是否意味着 tensorflow 默认不使用 inter_op_parallelism_threads 用于多核 cpu?
标签: c++ tensorflow parallel-processing