Testi consigliati
Per approfondire la piattaforma di computazione parallela CUDA e il relativo modello di programmazione consultare:
Documenti ufficiali di NVIDIA che accompagnao il toolkit
CUDA sono:
NSIGHT ECLIPSE
Di seguito i passi per sviluppare un progetto in CUDA C in
ambiente mac o linux con NVIDIA® Nsight™ Eclipse Edition, l'IDE
per lo sviluppo di applicazioni CUDA. Il vantaggio rispetto a
Nsight di Visual Studio per windows è che è possibile sviluppare
'trasparentemente' le applicazioni su un sever remoto dotato di
scheda GPU.
1. Creare un nuovo progetto
|
- Aprire l'app Nsight distribuita con il toolkit CUDA,
scaricabile dal sito NVIDIA download
(le istruzioni per l'installazione doc)
- Scegliere nuovo progetto come indicato
|
2. Dare un nome al progetto
|
- Il progetto apparirà col nome scelto all'interno del
cuda-workspace che è stato indicato all'avvio dell'app
|
3. Scegliere la capability
|
- La compute capability specifica l'architettura della
scheda GPU, è data nelle specifiche della scheda (oppure
eseguire il programma deviceQuery distribuito nei samples)
|
4. Aggiungere un file
|
- Aggiungere un nuovo file e salvarlo con estensione .cu
per i file CUDA e .c/.cpp per quelli in C/C++
|
5. Editare il file
|
- I file possono essere editati, compilati e il progetto
eseguito dall'ambiente di sviluppo. Se la il PC su cui si
lavora possiede una scheda GPU, tutte queste operazioni si
possono svolgere in locale, altrimenti si può scegliere un
server remoto, come spiegato di seguito
|
6. Aggiungere un sistema remoto
|
- Come si vede l'app consente di aggiungere un 'remote
system' (per es. lagrange) contenete una scheda Nvidia e sul
quale deve essere installato il toolkit (in sostanza vengono
usati i tool del server per compilazione e profilazione)
- Per aggiungere una macchina (via SSH) occorre avere un
account e le credenziali per accedervi, dati che vengono
richiesti in questa fase
|
7. Setup dei tool del server
|
- Viene richiesto di specificare il 'work-space' nel
filesystem remoto (navigando con l'uso di finestra grafica)
- Si deve localizzare il 'toolkit' del sistema remoto
(con navigazione + autodetection) da impiegare per tutti i
compiti citati
|
8. Switch tra target remoti
|
- E' possibile scegliere tra i diversi target (compreso
quello locale) per compilare il progetto
- Lo switch comporta anche la ricompilazione automatica
del progetto nel sistema di destinazione
- Come si vede in figura, Nsight crea in automatico per
ogni sistema due versioni del proogetto: Debug e Release.
Nella prima i parametri di compilazione abilitano il
debugging, su cui si può attivare il tool cuda-GDB. Nella
seconda i parametri di default sono quelli di ottimizzazione
del codice da parte del compilatore
|
9. Creare un laucher
|
- Dal menu 'Run configuration' è possibile definire un
launcher per eseguire l'applicazione remota o locale.
- Navigare sul sistema per scegliere l'eseguibile
(tipicamente sotto la dir Debug o Release) creato a valle
della compilazione
|
10. Console per i risultati
|
- I risultai di compilazione e di esecuzione sono
riportati dalla console (finestra sottostante)
- La console riporta anche i comandi di compilazione,
linking ed esecuzione impiegati dai tool CUDA, completi dei
rispettivi parametri di invocazione del comando
|
NSIGHT VISUAL STUDIO
Di seguito i passi per sviluppare un progetto in CUDA C in
ambiente Windows con NVIDIA® Nsight™ Visual Studio, l'IDE
per lo sviluppo di applicazioni CUDA.
1. Creare un nuovo progetto
|
- Aprire l'app Visual Studio contenete l'estensione Nsight distribuita con il
toolkit CUDA,
scaricabile dal sito NVIDIA download
(le istruzioni per l'installazione doc)
- Scegliere nuovo progetto come indicato
|
2. Dare un nome al progetto
|
- Il progetto apparirà col nome scelto all'interno del
cuda-workspace presente nel filesystem utente
|
4. Aggiungere un file
|
- Aggiungere un nuovo file scegliendo 'Add new item'.
|
5. Scegliere il tipo di file
|
- Scegliere il tipo di file. La prima scelta specifica un file o modulo
contenete codice sorgente, la seconda un file header contente le
principali dichiarazioni e definizioni, come d'uso in C/C++.
|
6. Editare il file
|
- I file possono essere editati e compilati in locale
direttamente dall'IDE.
- Se la il PC su cui si lavora possiede una scheda GPU,
allora il progetto può essere anche eseguito dall'ambiente di
sviluppo. Altrimenti si può scegliere un server remoto su cui
eseguire, come spiegato di seguito.
|
7. Compilazione
|
- Scegliere di effettuare la build del progetto dal relativo menu
(questo è sempre possibile anche se il PC non possiede una
scheda NVIDIA GPU).
|
8. Output dei risultati
VB Nsight crea in automatico per ogni sistema target scelto
due versioni del progetto: Debug e Release. Nella prima i
parametri di compilazione abilitano il debugging, su cui si può
attivare il tool cuda-GDB. Nella seconda i parametri di default
sono quelli di ottimizzazione del codice da parte del compilatore
e serve per le simulazioni effettive giacché più efficiente.
|
- I risultati della compilazione, esecuzione o di altre
operazioni vengono visualizzati nella finestra di Output (qui
si mostra la versione Debug).
|
9. Definizione delle proprietà
|
- Il setup dell'applicazione si effettua attarverso la
finestra delle proprietà del progetto (tasto destro sul file
nome del progetto), che comprendono i parametri di
compilazione, linking, esecuzione e molti altri.
|
10. Scegliere la capability
|
- La compute capability specifica l'architettura della
scheda GPU, è normalmente indicta nelle specifiche della scheda (oppure
ricavarle dal programma deviceQuery distribuito nei samples)
|
9. Client SSH per connessioni a Linux
Esistono numerose applicazioni per l'emulazione dell'ambiente
Linux in M. Windows. MobaXterm è uno di questi ed è un completo
client SSH per Windows dotato di numerose funzionalità, compreso
l'X server grafico per avviare le applicazioni Linux. Di seguito
si mostra come usare MobaXterm per accedere via SSH a Lagrange,
compilare ed eseguire un'applicazione CUDA usando il terminale.
|
- Il terminale che si vede in figura è l'emulazione di un
Xterm Linux mediante il quale è possibile eseguire comandi in
locale oppure in remoto, come per es. attivare una connessione
per mezzo del client SSH.
|
10. Trasferimento file
|
- E' possibile avviare una sessione per il trasferimento
(usando la trasmissione sicura sftp compresa in MobaXterm) di
file dal PC al server Lagrange e viceversa.
- Nell'esempio si mostra il trasferimento dei file prodotti
da VB Nsight (sinistra) sotto l'omologa directory di Lagrange
(destra)
|
11. Compilazione ed esecuzione remote
|
- A trasferimento avvenuto, è possibile compilare impiegando
il compilatore nvcc locale i file di progetto (per avere i
file binari corretti) e successivamente eseguire
l'applicazione sempre da linea di comando sullo stesso terminale.
- Per Lagrange, la connessione è stata effettuata con il comado 'ssh
"nome_utente"@cuda.lagrange.di.unimi.it'
|