utils.py 1.1 KB
Newer Older
1
2
3
4
5
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

"""Shared utilities for GPU Memory Service."""

6
7
import os
import tempfile
8
import uuid
9

10
11
12
13
14
from cuda.bindings import driver as cuda
from gpu_memory_service.common.cuda_vmm_utils import (
    check_cuda_result,
    ensure_cuda_initialized,
)
15
16
17
18
19


def get_socket_path(device: int) -> str:
    """Get GMS socket path for the given CUDA device.

20
21
    The socket path is based on GPU UUID resolved by CUDA.
    CUDA_VISIBLE_DEVICES remapping is handled by CUDA device enumeration.
22
23
24
25
26

    Args:
        device: CUDA device index.

    Returns:
27
        Socket path (e.g., "<tempdir>/gms_GPU-12345678-1234-1234-1234-123456789abc.sock").
28
    """
29
30
31
32
33
34
35
36
37
38
    ensure_cuda_initialized()

    result, cu_device = cuda.cuDeviceGet(device)
    check_cuda_result(result, "cuDeviceGet")

    result, cu_uuid = cuda.cuDeviceGetUuid(cu_device)
    check_cuda_result(result, "cuDeviceGetUuid")

    gpu_uuid = f"GPU-{uuid.UUID(bytes=bytes(cu_uuid.bytes))}"
    return os.path.join(tempfile.gettempdir(), f"gms_{gpu_uuid}.sock")