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