Add support for Nvidia Hopper GPU architecture.

With this change, we can now run simple CUDA applications on H100 GPUs.

```
$ docker run --runtime=runsc --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubi8
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done
```

Note that this was tested with 525.60.13 driver version.

Updates #14

PiperOrigin-RevId: 534607359
This commit is contained in:
Ayush Ranjan
2023-05-23 17:02:31 -07:00
committed by gVisor bot
parent 8f69139e70
commit 333bd93e1a
3 changed files with 24 additions and 6 deletions
+14 -2
View File
@@ -34,11 +34,14 @@ const (
TURING_CHANNEL_GPFIFO_A = 0x0000c46f
AMPERE_CHANNEL_GPFIFO_A = 0x0000c56f
TURING_DMA_COPY_A = 0x0000c5b5
AMPERE_DMA_COPY_A = 0x0000c6b5
AMPERE_DMA_COPY_B = 0x0000c7b5
TURING_COMPUTE_A = 0x0000c5c0
HOPPER_USERMODE_A = 0x0000c661
AMPERE_DMA_COPY_A = 0x0000c6b5
AMPERE_COMPUTE_A = 0x0000c6c0
AMPERE_DMA_COPY_B = 0x0000c7b5
HOPPER_DMA_COPY_A = 0x0000c8b5
ADA_COMPUTE_A = 0x0000c9c0
HOPPER_COMPUTE_A = 0x0000cbc0
)
// NV0005_ALLOC_PARAMETERS is the alloc params type for NV01_EVENT_OS_EVENT,
@@ -197,3 +200,12 @@ type NV_GR_ALLOCATION_PARAMETERS struct {
Size uint32
Caps uint32
}
// NV_HOPPER_USERMODE_A_PARAMS is the alloc param type for HOPPER_USERMODE_A,
// from src/common/sdk/nvidia/inc/nvos.h.
//
// +marshal
type NV_HOPPER_USERMODE_A_PARAMS struct {
Bar1Mapping uint8
Priv uint8
}
+4 -2
View File
@@ -53,8 +53,9 @@ const (
// From src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000system.h:
const (
NV0000_CTRL_CMD_SYSTEM_GET_BUILD_VERSION = 0x101
NV0000_CTRL_CMD_SYSTEM_GET_FABRIC_STATUS = 0x136
NV0000_CTRL_CMD_SYSTEM_GET_BUILD_VERSION = 0x101
NV0000_CTRL_CMD_SYSTEM_GET_FABRIC_STATUS = 0x136
NV0000_CTRL_CMD_SYSTEM_GET_P2P_CAPS_MATRIX = 0x13a
)
// +marshal
@@ -160,6 +161,7 @@ const (
NV2080_CTRL_CMD_GPU_GET_ENGINES_V2 = 0x20800170
NV2080_CTRL_CMD_GPU_GET_ACTIVE_PARTITION_IDS = 0x2080018b
NV2080_CTRL_CMD_GPU_GET_COMPUTE_POLICY_CONFIG = 0x20800195
NV2080_CTRL_CMD_GET_GPU_FABRIC_PROBE_INFO = 0x208001a3
)
// From src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080gr.h:
+6 -2
View File
@@ -547,6 +547,7 @@ func rmControl(fi *frontendIoctlState) (uintptr, error) {
nvgpu.NV0000_CTRL_CMD_GPU_GET_MEMOP_ENABLE,
nvgpu.NV0000_CTRL_CMD_SYNC_GPU_BOOST_GROUP_INFO,
nvgpu.NV0000_CTRL_CMD_SYSTEM_GET_FABRIC_STATUS,
nvgpu.NV0000_CTRL_CMD_SYSTEM_GET_P2P_CAPS_MATRIX,
nvgpu.NV0080_CTRL_CMD_FB_GET_CAPS_V2,
nvgpu.NV0080_CTRL_CMD_GPU_GET_NUM_SUBDEVICES,
nvgpu.NV0080_CTRL_CMD_GPU_QUERY_SW_STATE_PERSISTENCE,
@@ -572,6 +573,7 @@ func rmControl(fi *frontendIoctlState) (uintptr, error) {
nvgpu.NV2080_CTRL_CMD_GPU_GET_ENGINES_V2,
nvgpu.NV2080_CTRL_CMD_GPU_GET_ACTIVE_PARTITION_IDS,
nvgpu.NV2080_CTRL_CMD_GPU_GET_COMPUTE_POLICY_CONFIG,
nvgpu.NV2080_CTRL_CMD_GET_GPU_FABRIC_PROBE_INFO,
nvgpu.NV2080_CTRL_CMD_GR_SET_CTXSW_PREEMPTION_MODE,
nvgpu.NV2080_CTRL_CMD_GR_GET_CTX_BUFFER_SIZE,
nvgpu.NV2080_CTRL_CMD_GR_GET_GLOBAL_SM_ORDER,
@@ -769,10 +771,12 @@ func rmAlloc(fi *frontendIoctlState) (uintptr, error) {
return rmAllocSimple[nvgpu.NV_CHANNEL_GROUP_ALLOCATION_PARAMETERS](fi, &ioctlParams, isNVOS64)
case nvgpu.TURING_CHANNEL_GPFIFO_A, nvgpu.AMPERE_CHANNEL_GPFIFO_A:
return rmAllocSimple[nvgpu.NV_CHANNEL_ALLOC_PARAMS](fi, &ioctlParams, isNVOS64)
case nvgpu.TURING_DMA_COPY_A, nvgpu.AMPERE_DMA_COPY_A, nvgpu.AMPERE_DMA_COPY_B:
case nvgpu.TURING_DMA_COPY_A, nvgpu.AMPERE_DMA_COPY_A, nvgpu.AMPERE_DMA_COPY_B, nvgpu.HOPPER_DMA_COPY_A:
return rmAllocSimple[nvgpu.NVB0B5_ALLOCATION_PARAMETERS](fi, &ioctlParams, isNVOS64)
case nvgpu.TURING_COMPUTE_A, nvgpu.AMPERE_COMPUTE_A, nvgpu.ADA_COMPUTE_A:
case nvgpu.TURING_COMPUTE_A, nvgpu.AMPERE_COMPUTE_A, nvgpu.ADA_COMPUTE_A, nvgpu.HOPPER_COMPUTE_A:
return rmAllocSimple[nvgpu.NV_GR_ALLOCATION_PARAMETERS](fi, &ioctlParams, isNVOS64)
case nvgpu.HOPPER_USERMODE_A:
return rmAllocSimple[nvgpu.NV_HOPPER_USERMODE_A_PARAMS](fi, &ioctlParams, isNVOS64)
case
nvgpu.GF100_SUBDEVICE_MASTER,
nvgpu.TURING_USERMODE_A: