如何确定OpenCL中的可用设备内存?

nul*_*ace 7 memory memory-management opencl

我想知道在分配缓冲区之前我的设备上有多少可用内存.这可能吗?我知道有CL_DEVICE_GLOBAL_MEM_SIZE总内存和CL_DEVICE_MAX_MEM_ALLOC_SIZE单个对象的最大大小,但我想知道当前的内存状态.

目前我可能不得不使用OpenGL特定于供应商的扩展.

Mat*_*gro 4

不,没有办法,也没有必要知道,GPU 内存可以虚拟化,驱动程序会在需要/不需要时从 GPU 换入/换出内存。

  • 如果我不想要交换开销怎么办?例如,我正在为 3d 动画包(Maya)编写一个插件。如果场景中有两个角色,其中一个角色耗尽了所有 VRAM,我只希望另一个角色使用 CPU 设备。当它们都动画时,交换开销不会影响性能吗? (6认同)
  • 知道没办法很好,但为什么说没必要呢?我不想换入/换出内存,而且由于我也在使用 GL,所以我不想耗尽 GL 的所有内存。 (5认同)