1

从源代码构建 TensorFlow 2.x(用于 CPU)时,我应该进行哪些更改以强制 TensorFlow不使用超过 1 个线程?如果这是不可能的,我应该更改哪些特定的 c++ 语句(以及在哪些 cpp 文件中)以抑制多线程的生成?

无论 CPU/内核的数量是多少,我总共需要 1 个来自 TensorFlow 2.x 的线程。

用于top -H -b -n1 | grep program_name | wc -l计算线程总数。

4

1 回答 1

0

解决方案是在 C++ 中您可以为会话提供的选项:

// set the number of worker threads
    tensorflow::SessionOptions options;
    tensorflow::ConfigProto & configuration = options.config;
    configuration.set_inter_op_parallelism_threads(1);
    configuration.set_intra_op_parallelism_threads(1);
    configuration.set_use_per_session_threads(false); 

  mySession->reset(tensorflow::NewSession(options));

这样,您将只有一个工作线程。

但这不能确保top -H -b -n1 | grep program_name | wc -l命令仅返回 1 个线程。事实上,在上面的例子中,我们谈到了一个工作线程,但可以肯定的是,至少有一个主线程来管理工作线程的生成和返回。

于 2020-11-03T13:58:52.637 回答