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
Respuesta
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.
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).
- 1. Cómo lanzar vectores SIMD int para flotar en GCC?
- 2. Distribución de OpenCL
- 3. ¿Por qué son distintos los tipos de cadenas y vectores?
- 4. ¿Cómo pasar y acceder a los vectores de C++ al kernel OpenCL?
- 5. Tipos personalizados en el kernel OpenCL
- 6. SIMD o no SIMD - multiplataforma
- 7. Lenguajes de programación SIMD
- 8. ¿Puede CUDA usar extensiones SIMD?
- 9. ¿Cómo se usan los patrones de vectores en las reglas de sintaxis?
- 10. Técnicas comunes de SIMD
- 11. vectores Boost versus vectores STL
- 12. biblioteca de matriz opencl
- 13. ¿Cómo comparar dos vectores usando SIMD y obtener un solo resultado booleano?
- 14. Función de plantilla C++ para matrices, vectores, tipos incorporados, STL
- 15. SSE (SIMD): multiplicar el vector por escalar
- 16. C++ SSE SIMD framework
- 17. OpenCL escalar del vector vs
- 18. ¿Opencl admite los punteros de función?
- 19. (extensiones SIMD) SSE apoyo en gcc
- 20. En Clojure, ¿cuándo deberían representarse los árboles de tipos de nodo heterogéneos utilizando registros o vectores?
- 21. Tabla de búsqueda utilizando SIMD
- 22. SIMD (AVX) comparar
- 23. SIMD el siguiente código
- 24. ¿Cómo utilizan los programas de Android NEON SIMD?
- 25. Ejemplos de OpenCL con benchmarks
- 26. Aparte de las consultas LINQ, ¿cómo se usan los tipos anónimos en C#?
- 27. Histograma de imagen OpenCL
- 28. Agregación de matriz SIMD para longitudes de matriz arbitrarias
- 29. ¿Los tipos de referencia son tipos anulables?
- 30. Operaciones de árbol de vectorización (SIMD)
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. –