Используют ли векторные типы OpenCL SIMD? - PullRequest
8 голосов
/ 29 августа 2011

В настоящее время у меня есть большой массив с плавающей точкой, который я обрабатываю в своем ядре OpenCL. Мне интересно, разделю ли я этот массив и использую вместо него массив векторных типов OpenCL, если это ускорит процесс. По сути, если бы у меня был массив из 4800 чисел с плавающей запятой, я бы разделил его на массив из 300 векторов с плавающей запятой16. Будет ли это использовать SIMD?

Ответы [ 2 ]

7 голосов
/ 29 августа 2011

Intel фактически описывает, что делает их OpenCL SDK: см. Написание оптимального кода OpenCL ™ с помощью Intel® OpenCL SDK . Вы можете проверить это, как дополнение к бенчмаркингу. Интересная часть начинается в главе 2.3.

Чтобы ответить на ваш вопрос: да, он воспользуется SIMD. Но чтобы «максимизировать использование векторных модулей ЦП с помощью векторных типов данных», вам действительно следует прочитать этот документ.

0 голосов
/ 29 августа 2011

Может или не может. Это зависит от реализации OpenCL и оборудования, на котором выполняется ваша программа.

Единственный способ проверить, обеспечивает ли это улучшение, состоит в том, чтобы провести сравнительный анализ платформ и представляющих интерес реализаций - для диапазона векторных размеров (например, сравнить 1 (скалярный), 2, 4, 8 и 16).

...