When attempting to use the AWS EC2 g6f instance type for CI in fvdb-core (working prototype on this branch), we receive an error at the first call to cudaMallocAsync at nanovdb/cuda/DeviceResource.h:22: CUDA error 801: operation not supported
Through some investigation, it appears that the stream-ordered memory pools capability is not exposed by the vGPU (g6f is a fractional L4 GPU instance). Confirmed when running:
> #include <cuda_runtime.h>
> #include <stdio.h>
>
> int main() {
> int supported = 0, driver = 0;
> cudaDriverGetVersion(&driver);
> cudaError_t e = cudaDeviceGetAttribute(
> &supported, cudaDevAttrMemoryPoolsSupported, 0);
> printf("driver=%d, query=%s, memoryPoolsSupported=%d\n",
> driver, cudaGetErrorString(e), supported);
> return e != cudaSuccess || !supported;
> }
driver=13000, query=no error, memoryPoolsSupported=0
These instances are running the latest AWS-supplied GRID driver (version 19.5/580.159.03) and can confirm the GPU device is available:
>nvidia-smi
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.159.03 Driver Version: 580.159.03 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA L4-3Q On | 00000000:31:00.0 Off | 0 |
| N/A N/A P0 N/A / N/A | 0MiB / 3072MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
From reading, it appears that memory pools can be enabled/disabled via hypervisor settings on the vGPU's setup. This seems likely to be disabled due to security concerns; I have opened up an AWS support ticket to confirm if this behaviour is intentional.
Regardless, support for this operating scenario (driver/hardware/CUDA support for cudaMallocAsync but unavailable capability) would require utilizing cudaMalloc (or a custom allocator) instead. This is a related issue in the work for #2232 and allowing NanoVDB to use an alternative allocator to enable successful execution on a vGPU configured in this way could be acceptance criteria for that work.
When attempting to use the AWS EC2
g6finstance type for CI infvdb-core(working prototype on this branch), we receive an error at the first call tocudaMallocAsyncatnanovdb/cuda/DeviceResource.h:22:CUDA error 801: operation not supportedThrough some investigation, it appears that the stream-ordered memory pools capability is not exposed by the vGPU (
g6fis a fractional L4 GPU instance). Confirmed when running:driver=13000, query=no error, memoryPoolsSupported=0These instances are running the latest AWS-supplied GRID driver (version 19.5/580.159.03) and can confirm the GPU device is available:
From reading, it appears that memory pools can be enabled/disabled via hypervisor settings on the vGPU's setup. This seems likely to be disabled due to security concerns; I have opened up an AWS support ticket to confirm if this behaviour is intentional.
Regardless, support for this operating scenario (driver/hardware/CUDA support for
cudaMallocAsyncbut unavailable capability) would require utilizingcudaMalloc(or a custom allocator) instead. This is a related issue in the work for #2232 and allowing NanoVDB to use an alternative allocator to enable successful execution on a vGPU configured in this way could be acceptance criteria for that work.