c++ - 使用tensorflow C++的OpenGL程序对cuInit的调用失败: CUDA_ERROR_OUT_OF_MEMORY

标签 c++ opengl tensorflow

我在Python上使用tensorflow训练了一个没有任何问题的模型。我现在正在尝试将此模型的推理集成到预先存在的支持 OpenGL 的软件中。但是,我在 cuInit 期间(也就是说,甚至早于加载模型,就在 session 创建时)收到了 CUDA_ERROR_OUT_OF_MEMORY 。 OpenGL 似乎确实占用了一些 MiB 内存(大约 300 MB),如 gpustatnvidia-smi 所示。

当 TF 和 OpenGL 都试图访问/分配 GPU 内存时,是否可能会发生冲突?以前有人遇到过这个问题吗?我在谷歌搜索中发现的大多数引用文献都是在模型加载时,而不是在 session /CUDA 初始化时。这是否与 OpenGL 完全无关,我只是找错了树?一个简单的 TF C++ 推理示例即可运行。如有任何帮助,我们将不胜感激。

为了完整性,这里是 tensorflow 日志输出:

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 的引用会导致同样的问题,因此它与库之间的冲突无关。

最佳答案

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

关于c++ - 使用tensorflow C++的OpenGL程序对cuInit的调用失败: CUDA_ERROR_OUT_OF_MEMORY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48154126/

相关文章:

c++ - 构建 Qt Slog 时的错误信息计算

xcode - 过剩和界面生成器

opengl - 处理 3d 对象 Dominoes Vuforia 上的触摸

c++ - 使用 openGL 进行纹理映射

python - Keras 深度学习模型在训练中始终给出相同的帐户

python - 兼容 Keras 和 Tensorflow 版本

c++ - 如何修复使用变量初始化数组时的错误?

c++ - Bison 解析器 : When do I need 'return' and when I don't?

c++ - 如何不阻塞加入标准线程

tensorflow - 如何结合两个卡住模型(Tensorflow)进行物体检测?