共享内存是主系统 RAM 中为图形保留的区域。参考:
https://en.wikipedia.org/wiki/Shared_graphics_memory
https://www.makeuseof.com/tag/can-shared-graphics-finally-compete-with-a-dedicated-graphics-card/
https://youtube.com/watch?v=E5WyJY1zwcQ
这种类型的内存是集成显卡(例如 Intel HD 系列)通常使用的内存。
这不在您的 NVIDIA GPU 上,CUDA 无法使用它。Tensorflow 在 GPU 上运行时不能使用它,因为 CUDA 不能使用它,在 CPU 上运行时也不能使用它,因为它是为图形保留的。
即使 CUDA 可以以某种方式使用它。它不会有用,因为系统 RAM 带宽比 GPU 内存带宽小 10 倍左右, 并且您必须以某种方式通过慢速(和高延迟)PCIE 总线从 GPU 获取数据。
参考带宽:GeForce GTX 980:224 GB/s 台式机主板上的 DDR4:约 25GB/s PCIe 16x:16GB/s
这没有考虑延迟。在实践中,在数据上运行 GPU 计算任务,这些数据太大而无法放入 GPU 内存并且每次访问时都必须通过 PCIe 传输,对于大多数类型的计算来说是如此缓慢,以至于在 CPU 上执行相同的计算会快得多.
当您的机器中有 NVIDIA 卡时,为什么会看到分配了这种内存?好问题。我可以想到几种可能性:
(a) 您同时激活了 NVIDIA 和 Intel 图形驱动程序(例如,在两者上运行不同的显示器时会发生这种情况)。在 BIOS 中卸载 Intel 驱动程序和/或禁用 Intel HD 显卡,共享内存将消失。
(b) NVIDIA 正在使用它。这可能是例如额外的纹理内存等。它也可能不是真正的内存,而只是对应于 GPU 内存的内存映射区域。在 NVIDIA 驱动程序的高级设置中查看控制此设置的设置。
无论如何,不,Tensorflow 没有任何东西可以使用。