0

我正在尝试限制 TensorFlow 生成的线程数。在 python 中,我知道我们需要使用此处指出的以下步骤。我试图在 CPP 中做同样的事情,但看起来并不那么简单。问题:

  1. 如何正确修改intra_op_parallelism_threads和inter_op_parallelism_threads?
  2. 如何修改 device_count 来控制核心?
SessionOptions options;
ConfigProto* config = &options.config;
string key = "CPU";
//not sure if this is the correct way to do it.
(*config->mutable_device_count())[key] = 1; 
config->set_inter_op_parallelism_threads(1);
config->set_intra_op_parallelism_threads(1);
4

2 回答 2

0

正如 Fisa 指出的那样,对 1 的回答是正确的。只需稍作调整,因为 config 是一个指针。

 SessionOptions options;
ConfigProto* config = &options.config;
//single thread control//
config->set_inter_op_parallelism_threads(1);
config->set_intra_op_parallelism_threads(1);    
fSession.reset(NewSession(options));
于 2020-10-02T17:20:18.557 回答
0

对问题 1 的回答:

tensorflow::SessionOptions options;
tensorflow::ConfigProto & config = options.config;
config.set_inter_op_parallelism_threads(1);
config.set_intra_op_parallelism_threads(1);
session->reset(tensorflow::NewSession(options));

这将减少TensorFlow 生成的线程总数但不会减少到 1 )。TensorFlow 生成的线程总数仍将是多个,具体取决于 CPU 中的内核数。在大多数情况下,只有一个线程处于活动状态,而其他线程将处于睡眠模式。我认为不可能拥有单线程TensorFlow。

以下 github 问题支持我的观点。 https://github.com/tensorflow/tensorflow/issues/33627 https://github.com/usnistgov/frvt/issues/30

于 2020-09-28T10:01:34.873 回答