2012-11-15 11 views
5

Utilizzo Visual Studio 2010, parallel nsight 2.2 e cuda 4.2 per l'apprendimento. Il mio sistema è Windows 8 pro x64. Ho aperto il progetto di ordinamento di Radix che includeva l'SDK di calcolo CUD in VS e lo ho compilato senza errori. Il codice sorta utilizza la libreria di spinta:Come eseguire il debug delle funzioni di cuda thrust in Visual Studio 2010 con risoluzione parallela

if(keysOnly) 
    thrust::sort(d_keys.begin(), d_keys.end()); 
else 
    thrust::sort_by_key(d_keys.begin(), d_keys.end(), d_values.begin()); 

io voglio sapere come spinta alla spedizione l'funzione di ordinamento per i kernel CUDA, così ho cercato di aggiungere punti di interruzione di fronte a linee di cui sopra e compilato il progetto in modalità di debug. Ma quando uso parallel nsight per il debug di cuda, ci sono sempre errori che "nessuna corrispondenza di origine per breakpoint".

Quindi, i miei problemi sono:

  1. Come eseguire il debug di programmi di spinta CUDA in studio visivo con Nsight parallelo?
  2. Oppure c'è qualcuno che può istruirmi usando un altro modo per sapere come cuda assegna funzioni dipatch ai kernel di cuda o ad altre funzioni?

Qualsiasi consiglio sarà apprezzato!

risposta

2

Normalmente, il debug codice del dispositivo in CUDA, è necessario passare i:

-G -g 

interruttori a nvcc. Tuttavia questa modalità è not supported with thrust code. Puoi avere un'idea di come il codice di spinta viene inviato al dispositivo seguendo la struttura nei file di inclusione thrust. Dal momento che la spinta è un codice interamente templato, non ci sono librerie di cui preoccuparsi. Comunque questa è una proposta stimolante. Si può anche dire al compilatore di generare PTX:

-ptx 

che è one of the intermediate code types che il codice CUDA viene compilato. Comunque non è una cosa banale da analizzare. This link fornisce alcune idee alternative per il debugging con Thrust.

+0

Grazie Robert, ho letto la wiki di Wiki già sul debug. Ma penso che i suoi contenuti non siano molto utilizzabili per i miei problemi. Voglio solo conoscere i dettagli dei processi decisionali nella libreria thrust. Quindi stavo cercando di leggere il codice sorgente e potrei anche provare a leggere il codice ptx. Grazie! – Miles