mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user