Используют ли векторные типы OpenCL SIMD

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


person A Person    schedule 29.08.2011    source источник
comment
OpenCL уже должен использовать возможности SIMD базового оборудования, иначе он будет совершенно бесполезен для программирования на GPU. Я не уверен, что он делает с ЦП, хотя ЦП в любом случае не является идеальным доменом OpenCL для использования его сильных сторон.   -  person Christian Rau    schedule 29.08.2011


Ответы (2)


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

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

person w-m    schedule 29.08.2011

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

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

person grrussel    schedule 29.08.2011