2015-07-27 19 views
7

Il documento CUDA non specifica quanti processi CUDA possono condividere una GPU. Ad esempio, se lancio più di un programma CUDA dallo stesso utente con una sola scheda GPU installata nel sistema, qual è l'effetto? Garantirà la correttezza dell'esecuzione? In che modo la GPU pianifica le attività in questo caso?Esecuzione di più di un'applicazione CUDA su una GPU

risposta

13

L'attività CUDA da processi host indipendenti creerà normalmente CUDA contexts indipendente, uno per ogni processo. Pertanto, l'attività CUDA avviata da processi host separati avverrà in contesti CUDA separati, sullo stesso dispositivo.

L'attività CUDA in contesti separati verrà serializzata. La GPU eseguirà l'attività da un processo e, quando tale attività è inattiva, potrà e cambierà contesto in un altro contesto per completare l'attività CUDA avviata dall'altro processo. Il comportamento dettagliato della pianificazione inter-contesto non è specificato. (L'esecuzione di più contesti su una singola GPU non può normalmente violare i limiti di base della GPU, come la disponibilità di memoria per le allocazioni dei dispositivi.)

L'"eccezione" a questo caso (serializzazione dell'attività della GPU da processi host indipendenti) sarebbe la CUDA Server multiprocesso. In poche parole, lo MPS funge da "canalizzazione" per raccogliere l'attività CUDA proveniente da diversi processi host ed esegue tale attività come se fosse emessa da un singolo processo host. Il principale vantaggio è evitare lo serialization of kernels which might otherwise be able to run concurrently. Il caso d'uso canonico sarebbe per il lancio di più ranghi MPI che tutti intendono utilizzare una singola risorsa GPU.

Si noti che la descrizione precedente si applica alle GPU che si trovano nel "Default" compute mode. Le GPU nelle modalità di calcolo "Processo esclusivo" o "Discussione esclusiva" respingono qualsiasi tentativo di creare più di un processo/contesto su un singolo dispositivo. In una di queste modalità, i tentativi da parte di altri processi di utilizzare un dispositivo già in uso comporteranno il fallimento di un'API CUDA. La modalità di calcolo è modificabile in alcuni casi utilizzando lo nvidia-smi utility.

Problemi correlati