Domanda

Sto avendo un problema strano .. Ho scritto un codice CUDA che esegue correttamente in emulazione e tutti i risultati presentarsi .. Tuttavia, quando eseguito su hardware "G210" .. i risultati nella memoria risultato sono sempre 0

sto passando due vettori al kernel, uno con variabili aleatorie l'altro viene inizializzato a zero, il codice copia il primo vettore a memoria condivisa, fa un po 'di scambio ed altre operazioni e quindi scrive di nuovo i risultati sul secondo vettore ( quella con le iniziali del 0)

Sto usando doppia precisione, viene utilizzata la bandiera SM13 -arch, tutto l'allocazione di memoria anche utilizzare sizeof (doppia) ..

Ho verificato se il kernel viene invocato, lo fa .. quindi nessun problema qui .. il cudaMemCpy non ha problemi ..

quello che potrebbe essere il problema .. :( perché dovrebbe funzionare in emulazione, ma non su HW

Io sono abbastanza confuso .. tutte le idee?

È stato utile?

Soluzione

Se non ricordo male, GeForce 210 non supporta Compute Capability 1.3, vale a dire non supporta doppie.

Prova riscrivere il codice per utilizzare singole, compilare con -arch = sm_12.

Altri suggerimenti

modalità di emulazione non è una simulazione accurata della GPU - non tenta di simulare il comportamento di thread simultanei e tutti i problemi che possono derivare da questo. Al fine di eseguire il debug del kernel probabilmente stai andando ad avere per una scomposizione in versioni più piccole fino a quando è possibile identificare il problema.

Emulazione utilizza un compilatore diverso, tutta la memoria è il padrone di casa, un solo thread in esecuzione, ecc Se si trova un bug in emulazione, aver trovato un bug nel codice. Se funziona in emulazione, che non significa che non si dispone di insetti. La tua domanda è fondamentalmente, Ho codice buggy, qual è il mio bug?

Consigli: valori di ritorno di controllo per tutto. Imparare a fare il controllo degli errori. Rendono conto che gli errori sul dispositivo possono presentarsi in modo asincrono rispetto al codice CPU. Utilizzare il debugger (forse acquistare una economici di fascia bassa GPU NVIDIA per rendere questo più facile). Dare cuprintf una prova, se si preferisce printf per il debug (disponibile sul forum di CUDA). Chiedere aiuto sul forum NVIDIA CUDA.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top