2011-08-29 15 views
7

Actualmente tengo una gran cantidad de flotadores que proceso en mi kernel OpenCL. Me pregunto si dividiré esta matriz y usaré una matriz de vectores tipo OpenCL, en caso de que acelere el proceso. Básicamente, si tuviera una matriz de 4,800 flotantes, los dividiría en una matriz de 300 vectores float16. ¿Esto tomaría ventaja de SIMD?Los tipos de vectores OpenCL usan SIMD

+2

OpenCL ya debería aprovechar las características SIMD del hardware subyacente, o sería bastante inútil para la programación de GPU. Sin embargo, no estoy seguro de lo que hace en la CPU, aunque la CPU no es el dominio perfecto de OpenCL para jugar sus puntos fuertes. –

Respuesta

7

Intel realmente describe lo que hace su OpenCL SDK: vea Writing Optimal OpenCL™ Code with Intel® OpenCL SDK. Es posible que desee verificarlo, como una adición a la evaluación comparativa. La parte interesante comienza en el capítulo 2.3.

Para responder a su pregunta: sí, se aprovechará de SIMD. Pero para "maximizar la utilización de las unidades de vectores de CPU mediante el uso de tipos de datos vectoriales", realmente debería leer ese documento.

0

Podría, o no. Depende de la implementación de OpenCL y del hardware en el que se ejecuta el programa.

La única manera de ver si proporciona una mejora es haciendo una prueba de referencia en las plataformas e implementaciones de interés para el rango de tamaños vectoriales (por ejemplo, compare 1 (escalar), 2, 4, 8 y 16).

Cuestiones relacionadas