NVIDIA GRID vGPU 上来宾虚拟机的 CUDA 内核行为
Behavior of CUDA kernels from guest VM on NVIDIA GRID vGPU
前段时间 NVIDIA 引入了利用其 GRID GPU 的 vGPU 概念,其中一个物理 GPU 被虚拟化为多个 vGPU,每个 vGPU 都分配给一个来宾 VM。
虽然 GRID 文档在内存隔离方面非常清楚,但不清楚的是来自 guestVM 的内核如何在主硬件上执行。
Grid 数据表在其 table 之一 (table 1) 中提到了 CUDA Cores(time-sliced shared) 。这是否意味着来自一个来宾 VM 的 CUDA 内核捕获整个 GPU 的时间片,然后是来自其他 VM 的内核?
目前,无法从使用 GRID vGPU 的虚拟机发起 CUDA 操作,只有一个例外。
如果使用的 GRID (2.0) 配置文件是将整个物理 GPU 映射到单个 VM 的配置文件,则在这种情况下可以进行 CUDA 操作。在那种情况下,一般的 CUDA 行为应该类似于裸机操作。
目前,此类行为确实涉及图形操作和 CUDA 操作之间的时间切片 ("context switching"),这与在裸机场景中看到的行为相同。
这可能会在未来发生变化。
注意这里的"physical GPU"指的是一个完整的逻辑GPU设备。例如,Tesla M60 有两个这样的 "physical GPUs" 板载(每个都有 8GB 内存),因此可以支持两个这样的 VM,其中所选的 GRID 配置文件指示将整个物理 GPU 映射到单个VM.
可以找到对此行为的引用 here:
However it should be noted that there are some limitations here, with NVIDIA noting that CUDA vGPU support requires using the GRID 2.0 “8GB profile.”
前段时间 NVIDIA 引入了利用其 GRID GPU 的 vGPU 概念,其中一个物理 GPU 被虚拟化为多个 vGPU,每个 vGPU 都分配给一个来宾 VM。 虽然 GRID 文档在内存隔离方面非常清楚,但不清楚的是来自 guestVM 的内核如何在主硬件上执行。
Grid 数据表在其 table 之一 (table 1) 中提到了 CUDA Cores(time-sliced shared) 。这是否意味着来自一个来宾 VM 的 CUDA 内核捕获整个 GPU 的时间片,然后是来自其他 VM 的内核?
目前,无法从使用 GRID vGPU 的虚拟机发起 CUDA 操作,只有一个例外。
如果使用的 GRID (2.0) 配置文件是将整个物理 GPU 映射到单个 VM 的配置文件,则在这种情况下可以进行 CUDA 操作。在那种情况下,一般的 CUDA 行为应该类似于裸机操作。
目前,此类行为确实涉及图形操作和 CUDA 操作之间的时间切片 ("context switching"),这与在裸机场景中看到的行为相同。
这可能会在未来发生变化。
注意这里的"physical GPU"指的是一个完整的逻辑GPU设备。例如,Tesla M60 有两个这样的 "physical GPUs" 板载(每个都有 8GB 内存),因此可以支持两个这样的 VM,其中所选的 GRID 配置文件指示将整个物理 GPU 映射到单个VM.
可以找到对此行为的引用 here:
However it should be noted that there are some limitations here, with NVIDIA noting that CUDA vGPU support requires using the GRID 2.0 “8GB profile.”