Tensorflow C ++设置GPU内存比例并允许增长

时间:2018-12-17 11:25:12

标签: c++ tensorflow gpu

我想按照here所述为python设置GPU memory fractionallow growth选项,但是在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);

1 个答案:

答案 0 :(得分:2)

我必须做完全一样的事情,这就是我在项目中做的事情:

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

_allocated的{​​{1}}部分与protobuf的内存管理有关。如果您set选项,它将期望对象是动态分配的,并且将拥有该对象的所有权(并在适当时将其删除)。您的代码无效,因为您正在将地址传递给本地变量,而该变量在退出代码块时将被破坏。

相反,如果您通过set访问GpuOptions的现有实例,则会得到指向该对象的指针,您可以使用该指针直接编辑该实例(即,无需分配自己的实例)< / p>