带有张量流的OpenGL程序C++对cuInit进行了失败的调用:CUDA_ERROR_OUT_OF_MEMORY



我已经在python上使用tensorflow训练了一个没有问题的模型。我现在正在尝试将此模型的推理集成到预先存在的支持 OpenGL 的软件中。但是,我在cuInit期间得到了一个CUDA_ERROR_OUT_OF_MEMORY(即,甚至比加载模型更早,就在创建会话时)。看起来,OpenGL确实占用了一些MiB的内存(约300 MB),如gpustatnvidia-smi所示。

当TF和OpenGL都试图访问/分配GPU内存时,是否存在冲突?以前有人遇到过这个问题吗?我发现谷歌搜索的大多数参考都是在模型加载时,而不是在会话/CUDA初始化时。这与OpenGL完全无关,我只是吠错了树吗?一个简单的 TF C++推理示例有效。任何帮助,不胜感激。

为了完整起见,以下是张量流日志记录输出:

2018-01-08 12:11:38.321136: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2018-01-08 12:11:38.379100: E tensorflow/stream_executor/cuda/cuda_driver.cc:406] failed call to cuInit: CUDA_ERROR_OUT_OF_MEMORY
2018-01-08 12:11:38.379388: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:158] retrieving CUDA diagnostic information for host: rosenblatt
2018-01-08 12:11:38.379413: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:165] hostname: rosenblatt
2018-01-08 12:11:38.379508: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:189] libcuda reported version is: 384.98.0
2018-01-08 12:11:38.380425: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:369] driver version file contents: """NVRM version: NVIDIA UNIX x86_64 Kernel Module  384.98  Thu Oct 26 15:16:01 PDT 2017 GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)"""
2018-01-08 12:11:38.380481: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:193] kernel reported version is: 384.98.0
2018-01-08 12:11:38.380497: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:300] kernel version seems to match DSO: 384.98.0

编辑:删除对OpenGL的所有引用导致了同样的问题,因此它与库之间的冲突无关。

好的,问题是在二进制文件的调试版本中使用了清理器。发布版本或没有清理器的调试版本按预期工作。

最新更新