tensorflow - TensorFlow 如何在 Windows 10 的 GPU 上同时使用共享和专用 GPU 内存?
问题描述
在运行 TensorFlow 作业时,我有时会收到一个非致命错误,提示 GPU 内存超出,然后我在 Windows 10 的性能监视器上看到“共享内存 GPU 使用情况”。
TensorFlow 是如何做到这一点的?我查看了 CUDA 文档,但没有找到对性能监视器中使用的专用和共享概念的引用。CUDA 中有一个共享内存的概念,但我认为它是设备上的东西,而不是我在性能监视器中看到的 RAM,它是由 BIOS 从 CPU RAM 分配的。
注意:有人提出了类似的问题,但另一位发帖人没有回答。
解决方案
我想我偶然发现了这一点。如果有多个进程同时访问 GPU,则 Windows 10 任务管理器性能选项卡报告的“共享 GPU 内存”确实会被使用。我通过编写一个 Python 程序发现了这一点,该程序使用多处理来排队多个 GPU 任务,我看到“共享 GPU 内存”开始填满。这是我看到它发生的唯一方式。
所以它只用于排队任务。每个单独的任务仍然仅限于板载 DRAM 减去永久分配给实际图形处理的任何内容,这似乎约为 1GB。