【问题标题】:How can I run Tensorflow on one single core, single thread CPP?如何在单核、单线程 CPP 上运行 Tensorflow?
【发布时间】:2020-07-21 19:05:40
【问题描述】:

我正在尝试限制 TensorFlow 生成的线程数。在python中,我知道我们需要使用Here指出的以下步骤。我试图在 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);

【问题讨论】:

  • 知道的可以分享一下如何在单核单线程上运行TensorFlow的解决方案吗?

标签: c++ multithreading tensorflow deep-learning tensorflow-c++


【解决方案1】:

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));

【讨论】:

    【解决方案2】:

    问题 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

    【讨论】:

    • 你是绝对正确的@fisa。对我有用的是: SessionOptions 选项; ConfigProto* 配置 = &options.config; //单线程控制// config->set_inter_op_parallelism_threads(1);配置->set_intra_op_parallelism_threads(1); fSession.reset(NewSession(options));
    • 问题2的答案是什么?
    猜你喜欢
    • 2016-11-06
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多