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
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.
- 1. Utilizzo di più GPU CUDA
- 2. Multi-GPU Computazione Cuda
- 3. È possibile eseguire CUDA su GPU AMD?
- 4. Cuda - CPU OpenCL 4x più veloce di OpenCL o CUDA versione GPU
- 5. Esecuzione simultanea del kernel GPU da più processi
- 6. Come eseguire CUDA senza una GPU utilizzando un'implementazione software?
- 7. Come si calcola il carico su una scheda gpu di nvidia (compatibile con cuda)?
- 8. Esecuzione concomitante del kernel CUDA con più kernel per flusso
- 9. programma cuda su VMware
- 10. comando superiore per GPU usando CUDA
- 11. tensorflow più sessioni con più GPU
- 12. Grande moltiplicazione matrice su gpu
- 13. Julia: calcoli paralleli CUSPARSE su più GPU
- 14. Come abilitare Keras con Theano di utilizzare più GPU
- 15. Implementazione parallela per più SVD utilizzando CUDA
- 16. CUDA: come usare thrust :: sort_by_key direttamente sulla GPU?
- 17. Algoritmo di fattorizzazione Cholesky sparse per GPU
- 18. Esecuzione di più siti su node.js
- 19. Elaborazione delle immagini su CUDA o OpenCV?
- 20. Esecuzione di istruzioni CPU/GPU dal codice gestito
- 21. cuda, interoperabilità OpenGL: errore cudaErrorMemoryAllocation su cudaGraphicsGLRegisterBuffer
- 22. Esecuzione di più azioni una dopo l'altra
- 23. Emulazione di FP64 con 2 FP32 su una GPU
- 24. matematica di alta precisione su GPU
- 25. Utilizzo di una GPU come scheda video e GPGPU
- 26. Esempi di CUDA SDK generano vari errori nel sistema multi-gpu
- 27. Calcolo GPU parallelo usando OpenCV
- 28. Trasferimento efficiente di file di grandi dimensioni (fino a 2 GB) alla GPU CUDA?
- 29. Errore nell'uso di Tensorflow con GPU
- 30. Come definire una memoria condivisa CUDA con una dimensione nota in fase di esecuzione?