2012-06-01 20 views
5

Ho cercato su google e sono stato in grado di trovare solo il a trivial example del nuovo parallelismo dinamico in Compute Capability 3.0 in uno dei loro Tech Brief collegati from here. Sono consapevole che le schede specifiche HPC probably won't be available fino a questo momento l'anno prossimo (dopo che i laboratori nat'l ottengono il loro). E sì, mi rendo conto che il semplice esempio che hanno dato è sufficiente per farti andare, ma più è il più allegro.Carattere di CUDA 5 Esempi di parallelismo dinamico

Ci sono altri esempi che ho perso?

Per risparmiare la fatica, qui è l'intero esempio dato nel breve Tech:

__global__ ChildKernel(void* data){ 
    //Operate on data 
} 
__global__ ParentKernel(void *data){ 
    ChildKernel<<<16, 1>>>(data); 
} 
// In Host Code 
ParentKernel<<<256, 64>>(data); 

// Recursion is also supported 
__global__ RecursiveKernel(void* data){ 
    if(continueRecursion == true) 
     RecursiveKernel<<<64, 16>>>(data); 
} 

EDIT: Il discorso GTC New Features In the CUDA Programming Model focalizzata principalmente sul nuovo parallelismo dinamico in CUDA 5. Il collegamento ha la video e diapositive. Ancora solo esempi di giocattoli, ma molti più dettagli rispetto al precedente tecnico.

+2

Qual è esattamente la tua domanda? Forse mi manca qualcosa qui. Che cosa vuoi che noi rispondiamo? – Bart

+1

"Ci sono altri esempi che mi sono persi?" non è una domanda appropriata? Se non pensi che questo sia il forum appropriato per la mia domanda, fallo semplicemente a valle. – maxywb

+0

Al GTC, una delle demo che hanno mostrato per Kepler era una simulazione di collisione di galassie. Penso che stessero usando il parallelismo dinamico lì. Forse il codice per questo è disponibile da qualche parte. –

risposta

0

Penso che la capacità di calcolo 3.0 non includa il paralelismo dinamico. Verrà incluso nell'architettura GK110 (ovvero "Big Kepler"), non so quale numero di capacità di calcolo verrà assegnato (3.1 forse). Quelle carte non saranno disponibili fino alla fine di quest'anno (sto aspettando così tanto per quelle). Per quanto ne so, il 3.0 corrisponde ai chip GK104 come il GTX690 o il GT640M per i laptop.

+1

non esiste una capacità di calcolo 3.1! 3.5 è una vera funzionalità di GK110. – geek

4

Ho modificato il titolo della domanda in "... CUDA 5 ...", poiché il parallelismo dinamico è nuovo in CUDA 5, non in CUDA 4. Non abbiamo ancora nessun esempio pubblico disponibile, perché non lo facciamo avere a disposizione hardware pubblico in grado di eseguirli. CUDA 5.0 supporterà il parallelismo dinamico ma solo su Compute Capability 3.5 e successive (GK110, ad esempio). Questi saranno disponibili più avanti nell'anno.

Rilasceremo alcuni esempi con un candidato di rilascio CUDA 5 più vicino al momento in cui l'hardware è disponibile.

+0

Potremmo pensare che la nuova chiamata del kernel all'interno della chiamata del kernel genitore sia una chiamata del kernel assolutamente nuova (come se fosse chiamata dall'host)? Vale a dire, abbiamo alcuni problemi relativi alla memoria condivisa, alla prevenzione della divergenza, ecc. Sarà interessante leggerne altri, specialmente quale thread può chiamare un altro kernel, i suoi costi ecc. – phoad

0

Volevo solo controllare con voi tutti dato che il CUDA 5 RC è stato rilasciato di recente. Ho cercato negli esempi SDK e non sono riuscito a trovare alcun parallelismo dinamico lì. Qualcuno mi corregga se sbaglio. Ho cercato il kernel lanciato all'interno dei kernel per grepping per "< < <" e non ho trovato nulla.

+0

Sono ancora riuscito a trovare il riassunto tecnico. Dalla mia comprensione del programma di rilascio, i laboratori di Nat'l otterranno il primo crack delle carte Big Kepler e il resto di noi li otterrà qualche volta all'inizio del prossimo anno. Anche se questo non spiega ancora la mancanza di esempi. – maxywb

5

Giusto per confermare che il parallelismo dinamico è supportato solo su GPU con una capacità di calcolo da 3,5 in su.

Ho un GPU CUDA 3.0 con 5.0 installato ho compilato gli esempi dinamica parallelismo nvcc -arch = sm_30 test.cu

e ha ricevuto il seguito errore di compilazione test.cu (10): errore: chiamando a globale La funzione ("child_launch") da una funzione globale ("parent_launch") è consentita solo sull'architettura compute_35 o successiva.

informazioni GPU

dispositivo 0: "GeForce GT 640" CUDA Versione driver/Runtime versione 5.0/5.0 CUDA Capability Major/Minor numero di versione: 3.0

spero che questo aiuti