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. Si ha accesso 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. Connessione all'interfaccia di PowerShell del dispositivo.

  2. Esegui questo comando:

    Get-HcsGpuNvidiaSmi

  3. Nell'output di Nvidia smi 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. Tenere 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. Connessione 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 Connessione a 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.

    IoT Edge service running.

  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.

    View properties.

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

    Go to IoT Edge.

  4. Selezionare Imposta moduli.

    Go to Set Modules.

  5. Selezionare + Aggiungi > + modulo IoT Edge.

    Add IoT Edge module.

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

    Module settings.

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

    Environment variables.

  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:

    Container create options.

    Seleziona Aggiungi.

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

    Review and create deployment.

  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.

    Module settings for 2nd module.

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

    Environment variable for 2nd module.

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

    Container create options for 2nd modules.

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

    Review and create 2nd deployment.

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

    2nd deployment status.

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. Una volta completata la simulazione, l'output smi Nvidia mostrerà che non sono presenti processi in esecuzione nel dispositivo.

    [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.

      Select Set module.

    3. Nella scheda Moduli selezionare un modulo.

      Select a module.

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

      Modify module settings.

    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.

      Review and create updated deployment.

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

      Verify deployment status.

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. Connessione 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 di Nvidia smi dall'interfaccia 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