我的代码运行正常。但是在添加了一些与网络结构和数据都不相关的参数之后,出现了错误CUDA_ERROR_OUT_OF_MEMORY
。
2019-03-01 14:03:55.816700: E tensorflow/stream_executor/cuda/cuda_driver.cc:967] failed to alloc 8589934592 bytes on host: CUDA_ERROR_OUT_OF_MEMORY
2019-03-01 14:03:55.816744: W ./tensorflow/core/common_runtime/gpu/pool_allocator.h:195] could not allocate pinned host memory of size: 8589934592
2019-03-01 14:03:55.816788: E tensorflow/stream_executor/cuda/cuda_driver.cc:967] failed to alloc 7730940928 bytes on host: CUDA_ERROR_OUT_OF_MEMORY
2019-03-01 14:03:55.816808: W ./tensorflow/core/common_runtime/gpu/pool_allocator.h:195] could not allocate pinned host memory of size: 7730940928
我添加到代码中的代码如下:
log_string += "epoch={:<6d}".format(epoch)
除了上面的代码,没有任何变化(包括网络结构,数据)。我尝试了一些方法来限制GPU的使用,例如:
config = tf.ConfigProto(allow_soft_placement=True)
config.gpu_options.per_process_gpu_memory_fraction = 0.8
config.gpu_options.allow_growth = True
但是它根本不起作用。我使用队列来加载带有tfrecord文件的数据。我检查了CPU的使用情况,看来它确实耗尽了内存。但是我的问题是为什么我的代码之前可以正常工作?