Requisiti
Per questo esercizio, avrai bisogno di una macchina fisica con Linux e una GPU basata su NVIDIA o lanciare un'istanza basata su GPU su Amazon Web Services. O dovrebbe funzionare bene, ma se scegli di utilizzare una macchina fisica, dovrai assicurarti di avere i driver proprietari NVIDIA installati, consultare le istruzioni: https: // linuxhint.com/install-nvidia-drivers-linux
Avrai anche bisogno del toolkit CUDA installato. Questo esempio utilizza Ubuntu 16.04 LTS in particolare, ma ci sono download disponibili per la maggior parte delle principali distribuzioni Linux al seguente URL: https: // sviluppatore.nvidia.com/cuda-downloads
Preferisco il .Download basato su Deb e questi esempi presuteranno che tu abbia scelto quel percorso. Il file che scarichi è un .pacchetto deb ma non ha un .estensione di deb, quindi rinominarlo per avere un .Deb alla fine il suo utile. Quindi lo installi con:
sudo dpkg -i pacchetto nome.Deb
Se ti viene richiesto l'installazione di una chiave GPG, seguire le istruzioni fornite per farlo.
Ora dovrai installare il pacchetto CUDA stesso. Per farlo, corri:
Sudo Apt-get Aggiornamento
sudo apt -get install cuda -y
Questa parte può richiedere un po 'di tempo, quindi potresti voler prendere una tazza di caffè. Una volta terminato, consiglio di riavviare per garantire che tutti i moduli vengano ricaricati correttamente.
Successivamente, avrai bisogno della distribuzione di Anaconda Python. Puoi scaricarlo qui: https: // www.anaconda.com/download/#Linux
Prendi la versione a 64 bit e installala in questo modo:
sh anaconda*.sh(La stella nel comando sopra assicurerà che il comando sia eseguito indipendentemente dalla versione minore)
La posizione di installazione predefinita dovrebbe andare bene e, in questo tutorial, lo useremo. Per impostazione predefinita, si installa su ~/anaconda3
Alla fine dell'installazione, ti verrà richiesto di decidere se desideri aggiungere Anaconda al tuo percorso. Rispondi sì qui per semplificare l'esecuzione dei comandi necessari. Per garantire che questa modifica avvenga, dopo che il programma di installazione termina completamente, disconnersi, quindi accedere al tuo account.
Maggiori informazioni sull'installazione di Anaconda: https: // linuxhint.com/install-anaconda-python-on-ubuntu/
Finalmente dovremo installare numba. Numba utilizza il compilatore LLVM per compilare Python al codice macchina. Ciò non solo migliora le prestazioni del normale codice Python, ma fornisce anche la colla necessaria per inviare istruzioni alla GPU in forma binaria. Per fare questo, corri:
Conda Installa Numba
Limitazioni e vantaggi della programmazione GPU
È allettante pensare che possiamo convertire qualsiasi programma Python in un programma basato su GPU, accelerando drasticamente le sue prestazioni. Tuttavia, la GPU su una scheda video funziona in modo considerevole in modo diverso rispetto a una CPU standard in un computer.
Le CPU gestiscono molti input e output diversi e hanno un ampio assortimento di istruzioni per affrontare queste situazioni. Sono inoltre responsabili dell'accesso alla memoria, alla gestione del bus di sistema, alla gestione degli anelli di protezione, alla segmentazione e alla funzionalità di input/output. Sono multitasking estremi senza focus specifici.
Le GPU d'altra parte sono costruite per elaborare funzioni semplici con velocità accecantemente veloce. Per raggiungere questo obiettivo, si aspettano uno stato di input e output più uniforme. Specializzandosi in funzioni scalari. Una funzione scalare prende uno o più input ma restituisce solo un singolo output. Questi valori devono essere predefiniti da numpy.
Codice di esempio
In questo esempio, creeremo una semplice funzione che prende un elenco di valori, li aggiunge insieme e restituisce la somma. Per dimostrare il potere della GPU, eseguiremo una di queste funzioni sulla CPU e una sulla GPU e mostreremo i tempi. Il codice documentato è di seguito:
Importa Numpy come NPPer eseguire l'esempio, digita:
Python GPU-Example.Py
NOTA: se si esegue i problemi durante l'esecuzione del programma, prova a utilizzare "Contrastal Accelerate".
Come puoi vedere, la versione CPU funziona molto più lenta.
In caso contrario, le tue iterazioni sono troppo piccole. Regola i num. Questo perché la configurazione della GPU richiede una piccola ma evidente tempo, quindi per rendere l'operazione degno di essere necessario un carico di lavoro più elevato. Dopo averlo sollevato al di sopra della soglia per la tua macchina, noterai sostanziali miglioramenti delle prestazioni della versione GPU sulla versione CPU.
Conclusione
Spero che ti sia piaciuta la nostra introduzione di base nella programmazione GPU con Python. Sebbene l'esempio sopra sia banale, fornisce il framework necessario per prendere le tue idee utilizzando ulteriormente il potere della tua GPU.