numba和tensorflow一起给出了CUDA_ERROR_OUT_OF_MEMORY
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numba和tensorflow一起给出了CUDA_ERROR_OUT_OF_MEMORY相关的知识,希望对你有一定的参考价值。
我在python中使用了numba和tensorflow来计算3-d循环问题。
首先,我多次使用numba来准备输入数据,一切都很好。然后我使用tensorflow进行深度学习,一切都很好。
接下来,当我第二次回到上面的程序,即使用numba时,它给了我一个错误CUDA_ERROR_OUT_OF_MEMORY。
如果我杀死线程并重新启动内核,我可以运行它,但在第二次运行时仍然失败。
似乎问题在于张量流,但我不知道。我在代码的开头和结尾添加了numba.cuda.defer_cleanup()但它没有多大帮助。
有谁知道如何解决这个问题?
答案
您可以尝试调整TF在其初始分配中尝试采用的可见内存分数。例如:假设您有12GB的GPU内存并且想要分配~4GB:
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
要么
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config,graph=detection_graph)
在第二种方法中,您将告诉TF允许GPU增长。这些选项可以帮助您摆脱困境
以上是关于numba和tensorflow一起给出了CUDA_ERROR_OUT_OF_MEMORY的主要内容,如果未能解决你的问题,请参考以下文章
为啥同时使用 numba.cuda 和 CuPy 从 GPU 传输数据这么慢?
可以在用户创建的 numba CUDA 设备函数中调用 numba.cuda.random 设备函数吗?
如何使用 Python 和 Numba 获取 GPU 中的 CUDA 内核数量?