Condividi tramite


Distribuire un carico di lavoro IoT Edge usando la condivisione GPU in Azure Stack Edge Pro

Questo articolo descrive in che modo i carichi di lavoro in contenitori possono condividere le GPU nel dispositivo AZURE Stack Edge Pro GPU. L'approccio prevede l'abilitazione del servizio Multi-Process (MPS) e quindi la specifica dei carichi di lavoro GPU tramite una distribuzione IoT Edge.

Prerequisiti

Prima di iniziare, verificare che:

  1. Si ha accesso a un dispositivo AZURE Stack Edge Pro GPU attivato e configurato per il calcolo. L'endpoint dell'API Kubernetes è stato aggiunto al file nel hosts client che accederà al dispositivo.

  2. È possibile accedere a un sistema client con un sistema operativo supportato. Se si usa un client Windows, il sistema deve eseguire PowerShell 5.0 o versione successiva per accedere al dispositivo.

  3. Salvare la distribuzione json seguente nel sistema locale. Si useranno le informazioni di questo file per eseguire la distribuzione di IoT Edge. Questa distribuzione si basa su contenitori CUDA semplici disponibili pubblicamente da NVIDIA.

    {
        "modulesContent": {
            "$edgeAgent": {
                "properties.desired": {
                    "modules": {
                        "cuda-sample1": {
                            "settings": {
                                "image": "nvidia/samples:nbody",
                                "createOptions": "{\"Entrypoint\":[\"/bin/sh\"],\"Cmd\":[\"-c\",\"/tmp/nbody -benchmark -i=1000; while true; do echo no-op; sleep 10000;done\"],\"HostConfig\":{\"IpcMode\":\"host\",\"PidMode\":\"host\"}}"
                            },
                            "type": "docker",
                            "version": "1.0",
                            "env": {
                                "NVIDIA_VISIBLE_DEVICES": {
                                    "value": "0"
                                }
                            },
                            "status": "running",
                            "restartPolicy": "never"
                        },
                        "cuda-sample2": {
                            "settings": {
                                "image": "nvidia/samples:nbody",
                                "createOptions": "{\"Entrypoint\":[\"/bin/sh\"],\"Cmd\":[\"-c\",\"/tmp/nbody -benchmark -i=1000; while true; do echo no-op; sleep 10000;done\"],\"HostConfig\":{\"IpcMode\":\"host\",\"PidMode\":\"host\"}}"
                            },
                            "type": "docker",
                            "version": "1.0",
                            "env": {
                                "NVIDIA_VISIBLE_DEVICES": {
                                    "value": "0"
                                }
                            },
                            "status": "running",
                            "restartPolicy": "never"
                        }
                    },
                    "runtime": {
                        "settings": {
                            "minDockerVersion": "v1.25"
                        },
                        "type": "docker"
                    },
                    "schemaVersion": "1.1",
                    "systemModules": {
                        "edgeAgent": {
                            "settings": {
                                "image": "mcr.microsoft.com/azureiotedge-agent:1.0",
                                "createOptions": ""
                            },
                            "type": "docker"
                        },
                        "edgeHub": {
                            "settings": {
                                "image": "mcr.microsoft.com/azureiotedge-hub:1.0",
                                "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
                            },
                            "type": "docker",
                            "status": "running",
                            "restartPolicy": "always"
                        }
                    }
                }
            },
            "$edgeHub": {
                "properties.desired": {
                    "routes": {
                        "route": "FROM /messages/* INTO $upstream"
                    },
                    "schemaVersion": "1.1",
                    "storeAndForwardConfiguration": {
                        "timeToLiveSecs": 7200
                    }
                }
            },
            "cuda-sample1": {
                "properties.desired": {}
            },
            "cuda-sample2": {
                "properties.desired": {}
            }
        }
    }
    

Verificare il driver GPU, la versione CUDA

Il primo passaggio consiste nel verificare che il dispositivo esegua i driver GPU necessari e le versioni CUDA.

  1. Connettersi all’interfaccia di PowerShell del dispositivo.

  2. Esegui questo comando:

    Get-HcsGpuNvidiaSmi

  3. Nell'output smi NVIDIA prendere nota della versione GPU e della versione CUDA nel dispositivo. Se si esegue il software Azure Stack Edge 2102, questa versione corrisponde alle versioni del driver seguenti:

    • Versione del driver GPU: 460.32.03
    • Versione CUDA: 11.2

    Di seguito è riportato un esempio di output:

    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    K8S-1HXQG13CL-1HXQG13:
    
    Tue Feb 23 10:34:01 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
    |-------------------------------+----------------------+----------------------+
    | 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  Tesla T4            On   | 0000041F:00:00.0 Off |                    0 |
    | N/A   40C    P8    15W /  70W |      0MiB / 15109MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+
    [10.100.10.10]: PS>  
    
  4. Mantenere aperta questa sessione perché verrà usata per visualizzare l'output smi NVIDIA in tutto l'articolo.

Eseguire la distribuzione senza condivisione del contesto

È ora possibile distribuire un'applicazione nel dispositivo quando il servizio Multi-Process non è in esecuzione e non è presente alcuna condivisione del contesto. La distribuzione viene eseguita tramite il portale di Azure nello iotedge spazio dei nomi esistente nel dispositivo.

Creare un utente nello spazio dei nomi IoT Edge

Prima di tutto si creerà un utente che si connetterà allo spazio dei iotedge nomi . I moduli IoT Edge vengono distribuiti nello spazio dei nomi iotedge. Per altre informazioni, vedere Spazi dei nomi Kubernetes nel dispositivo.

Seguire questa procedura per creare un utente e concedere all'utente l'accesso allo spazio dei iotedge nomi.

  1. Connettersi all’interfaccia di PowerShell del dispositivo.

  2. Creare un nuovo utente nello spazio dei iotedge nomi . Esegui questo comando:

    New-HcsKubernetesUser -UserName <user name>

    Di seguito è riportato un esempio di output:

    [10.100.10.10]: PS>New-HcsKubernetesUser -UserName iotedgeuser
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: 
    ===========================//snipped //======================// snipped //=============================
        server: https://compute.myasegpudev.wdshcsso.com:6443
      name: kubernetes
    contexts:
    - context:
        cluster: kubernetes
        user: iotedgeuser
      name: iotedgeuser@kubernetes
    current-context: iotedgeuser@kubernetes
    kind: Config
    preferences: {}
    users:
    - name: iotedgeuser
      user:
        client-certificate-data: 
    ===========================//snipped //======================// snipped //=============================
        client-key-data: 
    ===========================//snipped //======================// snipped ============================
    PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
    
  3. Copiare l'output visualizzato in testo normale. Salvare l'output come file di configurazione (senza estensione) nella .kube cartella del profilo utente nel computer locale, C:\Users\<username>\.kubead esempio .

  4. Concedere all'utente creato l'accesso allo spazio dei iotedge nomi . Esegui questo comando:

    Grant-HcsKubernetesNamespaceAccess -Namespace iotedge -UserName <user name>

    Di seguito è riportato un esempio di output:

    [10.100.10.10]: PS>Grant-HcsKubernetesNamespaceAccess -Namespace iotedge -UserName iotedgeuser
    [10.100.10.10]: PS>    
    

Per istruzioni dettagliate, vedere Connettersi e gestire un cluster Kubernetes tramite kubectl nel dispositivo Azure Stack Edge Pro GPU.

Distribuire moduli tramite il portale

Distribuire moduli IoT Edge tramite il portale di Azure. Verranno distribuiti moduli di esempio NVIDIA CUDA disponibili pubblicamente che eseguono la simulazione n-body.

  1. Assicurarsi che il servizio IoT Edge sia in esecuzione nel dispositivo.

    Servizio IoT Edge in esecuzione.

  2. Selezionare il riquadro IoT Edge nel riquadro destro. Passare a Proprietà di IoT Edge>. Nel riquadro destro selezionare la risorsa hub IoT associata al dispositivo.

    Visualizzare proprietà.

  3. Nella risorsa hub IoT passare a Automatico Gestione dispositivi > IoT Edge. Nel riquadro destro selezionare il dispositivo IoT Edge associato al dispositivo.

    Passare a IoT Edge.

  4. Selezionare Imposta moduli.

    Passare a Imposta moduli.

  5. Selezionare + Aggiungi > + modulo IoT Edge.

    Aggiungi modulo IoT Edge.

  6. Nella scheda Impostazioni modulo specificare il nome del modulo IoT Edge e l'URI immagine. Impostare Criteri pull immagine su Sì per la creazione.

    Impostazioni del modulo.

  7. Nella scheda Variabili di ambiente specificare NVIDIA_VISIBLE_DEVICES come 0.

    variabili di ambiente.

  8. Nella scheda Opzioni di creazione del contenitore specificare le opzioni seguenti:

    {
        "Entrypoint": [
            "/bin/sh"
        ],
        "Cmd": [
            "-c",
            "/tmp/nbody -benchmark -i=1000; while true; do echo no-op; sleep 10000;done"
        ],
        "HostConfig": {
            "IpcMode": "host",
            "PidMode": "host"
        }
    }    
    

    Le opzioni vengono visualizzate nel modo seguente:

    Opzioni di creazione del contenitore.

    Selezionare Aggiungi.

  9. Il modulo aggiunto deve essere visualizzato come In esecuzione.

    Esaminare e creare la distribuzione.

  10. Ripetere tutti i passaggi per aggiungere un modulo seguito durante l'aggiunta del primo modulo. In questo esempio specificare il nome del modulo come cuda-sample2.

    Impostazioni del modulo per il secondo modulo.

    Usare la stessa variabile di ambiente di entrambi i moduli condividerà la stessa GPU.

    Variabile di ambiente per il secondo modulo.

    Usare le stesse opzioni di creazione del contenitore fornite per il primo modulo e selezionare Aggiungi.

    Opzioni di creazione del contenitore per i moduli di secondo.

  11. Nella pagina Imposta moduli selezionare Rivedi e crea e quindi crea.

    Esaminare e creare la seconda distribuzione.

  12. Lo stato di runtime di entrambi i moduli dovrebbe ora essere In esecuzione.

    2° stato di distribuzione.

Monitorare la distribuzione del carico di lavoro

  1. Aprire una nuova sessione di PowerShell.

  2. Elencare i pod in esecuzione nello spazio dei iotedge nomi . Esegui questo comando:

    kubectl get pods -n iotedge

    Di seguito è riportato un esempio di output:

    PS C:\WINDOWS\system32> kubectl get pods -n iotedge --kubeconfig C:\GPU-sharing\kubeconfigs\configiotuser1
    NAME                            READY   STATUS    RESTARTS   AGE
    cuda-sample1-869989578c-ssng8   2/2     Running   0          5s
    cuda-sample2-6db6d98689-d74kb   2/2     Running   0          4s
    edgeagent-79f988968b-7p2tv      2/2     Running   0          6d21h
    edgehub-d6c764847-l8v4m         2/2     Running   0          24h
    iotedged-55fdb7b5c6-l9zn8       1/1     Running   1          6d21h
    PS C:\WINDOWS\system32>   
    

    Nel dispositivo sono presenti due pod cuda-sample1-97c494d7f-lnmns e cuda-sample2-d9f6c4688-2rld9 in esecuzione.

  3. Mentre entrambi i contenitori eseguono la simulazione n-body, visualizzare l'utilizzo della GPU dall'output smi NVIDIA. Passare all'interfaccia di PowerShell del dispositivo ed eseguire Get-HcsGpuNvidiaSmi.

    Di seguito è riportato un esempio di output quando entrambi i contenitori eseguono la simulazione n-body:

    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    K8S-1HXQG13CL-1HXQG13:
    
    Fri Mar  5 13:31:16 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
    |-------------------------------+----------------------+----------------------+
    | 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  Tesla T4            On   | 00002C74:00:00.0 Off |                    0 |
    | N/A   52C    P0    69W /  70W |    221MiB / 15109MiB |    100%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |    0   N/A  N/A    188342      C   /tmp/nbody                        109MiB |
    |    0   N/A  N/A    188413      C   /tmp/nbody                        109MiB |
    +-----------------------------------------------------------------------------+
    [10.100.10.10]: PS>
    

    Come si può notare, sono disponibili due contenitori in esecuzione con simulazione n corpo sulla GPU 0. È anche possibile visualizzare l'utilizzo della memoria corrispondente.

  4. Al termine della simulazione, l'output smi NVIDIA mostrerà che nel dispositivo non sono in esecuzione processi.

    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    K8S-1HXQG13CL-1HXQG13:
    
    Fri Mar  5 13:54:48 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
    |-------------------------------+----------------------+----------------------+
    | 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  Tesla T4            On   | 00002C74:00:00.0 Off |                    0 |
    | N/A   34C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+
    [10.100.10.10]: PS>
    
  5. Al termine della simulazione n-body, visualizzare i log per comprendere i dettagli della distribuzione e il tempo necessario per il completamento della simulazione.

    Di seguito è riportato un esempio di output del primo contenitore:

    PS C:\WINDOWS\system32> kubectl -n iotedge  --kubeconfig C:\GPU-sharing\kubeconfigs\configiotuser1 logs cuda-sample1-869989578c-ssng8 cuda-sample1
    Run "nbody -benchmark [-numbodies=<numBodies>]" to measure performance.
    ==============// snipped //===================//  snipped  //=============
    > Windowed mode
    > Simulation data stored in video memory
    > Single precision floating point simulation
    > 1 Devices used for simulation
    GPU Device 0: "Turing" with compute capability 7.5
    
    > Compute 7.5 CUDA device: [Tesla T4]
    40960 bodies, total time for 10000 iterations: 170171.531 ms
    = 98.590 billion interactions per second
    = 1971.801 single-precision GFLOP/s at 20 flops per interaction
    no-op
    PS C:\WINDOWS\system32>
    

    Di seguito è riportato un esempio di output del secondo contenitore:

    PS C:\WINDOWS\system32> kubectl -n iotedge  --kubeconfig C:\GPU-sharing\kubeconfigs\configiotuser1 logs cuda-sample2-6db6d98689-d74kb cuda-sample2
    Run "nbody -benchmark [-numbodies=<numBodies>]" to measure performance.
    ==============// snipped //===================//  snipped  //=============
    > Windowed mode
    > Simulation data stored in video memory
    > Single precision floating point simulation
    > 1 Devices used for simulation
    GPU Device 0: "Turing" with compute capability 7.5
    
    > Compute 7.5 CUDA device: [Tesla T4]
    40960 bodies, total time for 10000 iterations: 170054.969 ms
    = 98.658 billion interactions per second
    = 1973.152 single-precision GFLOP/s at 20 flops per interaction
    no-op
    PS C:\WINDOWS\system32>
    
  6. Arrestare la distribuzione del modulo. Nella risorsa hub IoT per il dispositivo:

    1. Passare a Distribuzione > automatica dei dispositivi IoT Edge. Selezionare il dispositivo IoT Edge corrispondente al dispositivo.

    2. Passare a Imposta moduli e selezionare un modulo.

      Selezionare Imposta modulo.

    3. Nella scheda Moduli selezionare un modulo.

      Selezionare un modulo.

    4. Nella scheda Impostazioni modulo impostare Stato desiderato su arrestato. Selezionare Aggiorna.

      Modificare le impostazioni del modulo.

    5. Ripetere i passaggi per arrestare il secondo modulo distribuito nel dispositivo. Selezionare Rivedi e crea e quindi Crea. Questa operazione deve aggiornare la distribuzione.

      Esaminare e creare una distribuzione aggiornata.

    6. Aggiornare la pagina Imposta moduli più volte. fino a quando lo stato del runtime del modulo non viene visualizzato come Arrestato.

      Verificare lo stato della distribuzione.

Eseguire la distribuzione con la condivisione del contesto

È ora possibile distribuire la simulazione n-body in due contenitori CUDA quando MPS è in esecuzione nel dispositivo. Prima di tutto, si abiliterà MPS nel dispositivo.

  1. Connettersi all’interfaccia di PowerShell del dispositivo.

  2. Per abilitare MPS nel dispositivo, eseguire il Start-HcsGpuMPS comando .

    [10.100.10.10]: PS>Start-HcsGpuMPS
    K8S-1HXQG13CL-1HXQG13:
    Set compute mode to EXCLUSIVE_PROCESS for GPU 0000191E:00:00.0.
    All done.
    Created nvidia-mps.service
    [10.100.10.10]: PS>    
    
  3. Ottenere l'output smi NVIDIA dall'interfaccia di PowerShell del dispositivo. È possibile visualizzare il nvidia-cuda-mps-server processo o il servizio MPS è in esecuzione nel dispositivo.

    Di seguito è riportato un esempio di output:

    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    K8S-1HXQG13CL-1HXQG13:
    
    Thu Mar  4 12:37:39 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
    |-------------------------------+----------------------+----------------------+
    | 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  Tesla T4            On   | 00002C74:00:00.0 Off |                    0 |
    | N/A   36C    P8     9W /  70W |     28MiB / 15109MiB |      0%   E. Process |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |    0   N/A  N/A    122792      C   nvidia-cuda-mps-server             25MiB |
    +-----------------------------------------------------------------------------+
    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    
  4. Distribuire i moduli arrestati in precedenza. Impostare Lo stato desiderato su in esecuzione tramite Set modules (Imposta moduli).

    Di seguito è riportato l'output di esempio:

    PS C:\WINDOWS\system32> kubectl get pods -n iotedge --kubeconfig C:\GPU-sharing\kubeconfigs\configiotuser1
    NAME                            READY   STATUS    RESTARTS   AGE
    cuda-sample1-869989578c-2zxh6   2/2     Running   0          44s
    cuda-sample2-6db6d98689-fn7mx   2/2     Running   0          44s
    edgeagent-79f988968b-7p2tv      2/2     Running   0          5d20h
    edgehub-d6c764847-l8v4m         2/2     Running   0          27m
    iotedged-55fdb7b5c6-l9zn8       1/1     Running   1          5d20h
    PS C:\WINDOWS\system32>
    

    È possibile notare che i moduli vengono distribuiti e in esecuzione nel dispositivo.

  5. Quando i moduli vengono distribuiti, la simulazione n-body viene avviata anche in entrambi i contenitori. Di seguito è riportato l'output di esempio quando la simulazione è stata completata nel primo contenitore:

    PS C:\WINDOWS\system32> kubectl -n iotedge logs cuda-sample1-869989578c-2zxh6 cuda-sample1
    Run "nbody -benchmark [-numbodies=<numBodies>]" to measure performance.
    ==============// snipped //===================//  snipped  //=============
    
    > Windowed mode
    > Simulation data stored in video memory
    > Single precision floating point simulation
    > 1 Devices used for simulation
    GPU Device 0: "Turing" with compute capability 7.5
    
    > Compute 7.5 CUDA device: [Tesla T4]
    40960 bodies, total time for 10000 iterations: 155256.062 ms
    = 108.062 billion interactions per second
    = 2161.232 single-precision GFLOP/s at 20 flops per interaction
    no-op
    PS C:\WINDOWS\system32> 
    

    Di seguito è riportato l'output di esempio al termine della simulazione nel secondo contenitore:

    PS C:\WINDOWS\system32> kubectl -n iotedge  --kubeconfig C:\GPU-sharing\kubeconfigs\configiotuser1 logs cuda-sample2-6db6d98689-fn7mx cuda-sample2
    Run "nbody -benchmark [-numbodies=<numBodies>]" to measure performance.
    ==============// snipped //===================//  snipped  //=============
    
    > Windowed mode
    > Simulation data stored in video memory
    > Single precision floating point simulation
    > 1 Devices used for simulation
    GPU Device 0: "Turing" with compute capability 7.5
    
    > Compute 7.5 CUDA device: [Tesla T4]
    40960 bodies, total time for 10000 iterations: 155366.359 ms
    = 107.985 billion interactions per second
    = 2159.697 single-precision GFLOP/s at 20 flops per interaction
    no-op
    PS C:\WINDOWS\system32>    
    
  6. Ottenere l'output smi NVIDIA dall'interfaccia PowerShell del dispositivo quando entrambi i contenitori eseguono la simulazione n-body. Di seguito è riportato un esempio di output. Esistono tre processi, il nvidia-cuda-mps-server processo (tipo C) corrisponde al servizio MPS e i /tmp/nbody processi (tipo M + C) corrispondono ai carichi di lavoro n-body distribuiti dai moduli.

    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    K8S-1HXQG13CL-1HXQG13:
    
    Thu Mar  4 12:59:44 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
    |-------------------------------+----------------------+----------------------+
    | 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  Tesla T4            On   | 00002C74:00:00.0 Off |                    0 |
    | N/A   54C    P0    69W /  70W |    242MiB / 15109MiB |    100%   E. Process |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |    0   N/A  N/A     56832    M+C   /tmp/nbody                        107MiB |
    |    0   N/A  N/A     56900    M+C   /tmp/nbody                        107MiB |
    |    0   N/A  N/A    122792      C   nvidia-cuda-mps-server             25MiB |
    +-----------------------------------------------------------------------------+
    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    

Passaggi successivi