带有C per_process_gpu_memory_fraction的TensorFlow不起作用
Tensorflow with c++ per_process_gpu_memory_fraction not working
我在使用两个会话的Windows上具有TensorFlow的构建。我想设置会话从我的GPU中使用的内存量,但似乎不起作用。我的代码看起来有点像:
void createSession(Session** sess, bool allow_growth, double memory_fraction)
{
tensorflow::SessionOptions session_options;
session_options.config.mutable_gpu_options()->set_allow_growth(allow_growth);
session_options.config.mutable_gpu_options()->set_per_process_gpu_memory_fraction(memory_fraction);
Status status = NewSession(session_options, sess);
...
GraphDef graph_def;
...
status = (*sess)->Create(graph_def);
...
}
此功能在初始化时两次调用,我需要的每个会话一次。无论我如何更改允许_ growth和memory_fraction的值,两个会话始终使用我的GPU内存的80%。
我当前的TensorFlow版本是1.13,但是1.12版本也存在同样的问题。
为什么这无法正常工作?
不幸的是,在Tensorflow中,GPU内存分配器是每个GPU设备每个进程创建一次。因此,在初始化第一个会话之前,您只能设置此值一次。此后,它将为您创建的每个会话使用相同的金额。您不能使用per_process_gpu_memory_fraction()
方法更改它。
我假设在您的会话初始化之前,可能会有其他会话初始化具有不同的选项或默认的SessionOptions
,这就是为什么您的修改对此没有影响。
相关文章:
- 基于树莓pi的tensorflow lite量化ssd目标检测
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 如何阻止TensorFlow的多线程
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- Tensorflow对象检测在Python和C++(OpenCV)之间有不同的结果
- 在 c++ 中使用 Tensorflow Lite 在边缘 TPU 上运行"mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite"时出现问题
- Tensorflow Hub in C++
- cmsis_compiler.h:在为 Arduino Due 编译 Arduino Tensorflow lite 库
- 分段错误(核心转储) - 使用 SavedModel 的 Tensorflow C++ API 进行推断
- 构建 TensorFlow r1.14 C++文件时缺少文件"tensorflow/core/framework/types.pb.h"
- constexpr 使用 clang 编译 TensorFlow 时出错
- 构建 Tensorflow 调试时出现错误LNK2019
- C++ library with Tensorflow on Android
- 宏如何在Tensorflow中添加新的操作时"REGISTER_OP("ZeroOut")
- 将 tensorflow lite 与 Qt 一起使用
- tensorflow c++ loading pbtxt
- 在 tensorflow c++ 中是否有等效的tf.convert_to_tensor?
- TensorFlow c++ SetDefaultDevice 在多 GPU 模式下
- 在C++应用程序中使用 Tensorflow:如何释放 GPU 内存
- 在 Tensorflow C++ 中使用 FIFOQueue 时遇到问题