为什么TensorFlow会创建如此多的CPU线程



即使使用

inter_op_parallelism_threads = 1
intra_op_parallelism_threads = 1

值集,TensorFlow 1.5过程不是单线线程。为什么?有没有办法完全禁用意外的线产卵?

首先,TensorFlow是一个多级软件堆栈,每一层都试图聪明,并引入了自己的一些工作线程:

  • 一个线程由Python Runtime创建
  • NVIDIA CUDA RUNTIME创建了另外两个线程

接下来,有一些线程源于张量的管理方式的方式:

  • 线程始终创建/加入,以进行投票完成工作完成(GRPC Engine(

因此,即使将所有选项设置为1。也许,该设计旨在减少异步作业的潜伏期。然而,存在一定的缺点:使用静态对称核心线程映射的多项计算库,例如线性代数,最佳的缓存操作。TensorFlow产生的悬空回调线将一直打扰此对称性。

最新更新