【问题标题】:Tensorflow C++ set GPU memory fraction and allow growthTensorflow C++ 设置 GPU 内存分数并允许增长
【发布时间】:2019-05-17 18:18:59
【问题描述】:

我想设置 GPU memory fractionallow growth 选项,如用于 python 的 here 所述,但在 C++ 中。这是这样做的正确方法吗?我尤其不确定set_allocated_gpu_options 行(在这种情况下,“已分配”是什么意思,尚未分配任何内容)。

tensorflow::Session *session = nullptr;
tensorflow::SessionOptions sessionOptions;
tensorflow::GPUOptions gpuOptions;
gpuOptions.set_per_process_gpu_memory_fraction(0.2);
gpuOptions.set_allow_growth(true);
sessionOptions.config.set_allocated_gpu_options(&gpuOptions);
tensorflow::Status status = tensorflow::NewSession(sessionOptions, &session);

【问题讨论】:

    标签: c++ tensorflow gpu


    【解决方案1】:

    我必须做同样的事情,这就是我在项目中的做法:

    auto options = tensorflow::SessionOptions();
    options.config.mutable_gpu_options()->set_per_process_gpu_memory_fraction(0.2);
    options.config.mutable_gpu_options()->set_allow_growth(true);
    tensorflow::Status status = tensorflow::NewSession(options, &session);
    

    set_allocated 部分与 protobuf 的内存管理有关。如果您set 选项,它将期望一个动态分配的对象,并且它将获得它的所有权(并在适当的时候将其删除)。您的代码将无法运行,因为您将地址传递给一个局部变量,当您退出代码块时该变量将被销毁。

    相反,如果您通过mutable_gpu_options() 访问GpuOptions 的现有实例,您将获得一个指向该对象的指针,您可以使用该对象直接编辑该实例(即,无需分配您自己的)

    【讨论】:

      猜你喜欢
      • 2017-08-01
      • 1970-01-01
      • 2017-11-13
      • 2018-11-25
      • 2014-11-24
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      相关资源
      最近更新 更多