momento ho un parallelo per ciclo simile a questo:modo più semplice per utilizzare GPU parallelo per ciclo
int testValues[16]={5,2,2,10,4,4,2,100,5,2,4,3,29,4,1,52};
parallel_for (1, 100, 1, [&](int i){
int var4;
int values[16]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
/* ...nested for loops */
for (var4=0; var4<16; var4++) {
if (values[var4] != testValues[var4]) break;
}
/* ...end nested loops */
}
ho ottimizzato più possibile al punto che l'unica cosa che posso fare è aggiungere più risorse.
Sono interessato a utilizzare la GPU per aiutare a elaborare l'attività in parallelo. Ho letto che compiti simili in modo imbarazzante come questo possono fare uso di una moderna GPU in modo abbastanza efficace.
Utilizzo di qualsiasi lingua, qual è il modo più semplice di utilizzare la GPU per un ciclo parallelo semplice come questo?
Non so nulla di architetture GPU o codice GPU nativo.
Se il tuo compito è un compito di calcolo numerico di qualche tipo, o se puoi ri-lanciarlo come un problema basato su matrice matematica, allora potresti usare MATLAB. I nuovi MATLAB supportano sia parallel-for ('parfor' da Parallel Computing Toolbox) sia matrix math su Nvidia CUDA GPUs. Entrambe sono relativamente indolori e richiedono solo modeste modifiche al codice MATLAB esistente. –
Potrebbe essere utile qualche altra informazione su ciò che stai cercando di fare realmente.Ricorda che il trasferimento dei dati dalla CPU alla GPU comporta un sovraccarico significativo, quindi il calcolo della GPU fornisce un aumento delle prestazioni solo se stai facendo un sacco di lavoro computazionale per unità di dati di input. Calcolare il quadrato di ciascun numero in un vettore non è un buon uso di GPGPU (quasi nessun lavoro per unità di dati); calcolare la FFT di un vettore è un buon uso (un sacco di lavoro su piccoli dati). –
Ho diversi loop nidificati, nel ciclo più interno sto usando gli indici di loop per calcolare 16 valori e confrontarli con l'array testValues []. Non dovrebbe esserci alcun accesso significativo alla memoria. Inoltre sto usando una scheda AMD/ATI (6850). – Flash