2011-08-29 8 views
7

Attualmente ho una vasta gamma di float che elaboro nel mio kernel OpenCL mi chiedo se divido questo array e usi invece un array di tipo vettoriale OpenCL, se accelera il processo. Fondamentalmente se avessi una matrice di 4.800 float la dividerei in una matrice di 300 vettori float16. Questo trae vantaggio da SIMD?I tipi di vettore OpenCL usano SIMD

+2

OpenCL dovrebbe già sfruttare le funzionalità SIMD dell'hardware sottostante, o sarebbe abbastanza inutile per la programmazione GPU. Non sono sicuro di cosa faccia la CPU, anche se la CPU non è il dominio perfetto di OpenCL per giocare i suoi punti di forza, comunque. –

risposta

7

Intel descrive in realtà ciò che fa il loro SDK OpenCL: vedere Writing Optimal OpenCL™ Code with Intel® OpenCL SDK. Potresti volerlo controllare, come aggiunta al benchmarking. La parte interessante inizia al capitolo 2.3.

Per rispondere alla tua domanda: sì, sfrutterà SIMD. Ma per "massimizzare l'utilizzo delle unità vettoriali della CPU usando i tipi di dati vettoriali" dovresti davvero leggere quel documento.

0

Potrebbe, o potrebbe non. Dipende dall'implementazione di OpenCL e dall'hardware su cui viene eseguito il programma.

L'unico modo per vedere se fornisce un miglioramento è il benchmark sulle piattaforme e le implementazioni di interesse - per l'intervallo di dimensioni del vettore (ad esempio confrontare 1 (scalare), 2, 4, 8 e 16).