TensorFlow CUDA_ERROR_OUT_OF_MEMORY

时间:2017-04-19 18:25:18

标签: tensorflow

我正在尝试在TensorFlow中构建一个大型CNN,并打算在多GPU系统上运行它。我采用了“塔式”系统并为两个GPU分割批次,同时保留CPU上的变量和其他计算。我的系统有32GB的内存,但是当我运行我的代码时,我得到错误:

E tensorflow/stream_executor/cuda/cuda_driver.cc:924] failed to alloc 17179869184 bytes on host: CUDA_ERROR_OUT_OF_MEMORY
W ./tensorflow/core/common_runtime/gpu/pool_allocator.h:195] could not allocate pinned host memory of size: 17179869184
Killed

如果我将CUDA设备隐藏到TensorFlow,我已经看到代码可以工作(虽然非常慢),因此它不使用cudaMallocHost()......

感谢您的时间。

2 个答案:

答案 0 :(得分:10)

有一些选择:

1-减少批量大小

2-使用内存增长:

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, ...)

3-不要分配整个GPU内存(只有90%):

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.9
session = tf.Session(config=config, ...)

答案 1 :(得分:0)

将代码中的batch_size减小到100,然后就可以使用