Есть ли инструкции SIMD (SSE / AVX) в x86-совместимых ускорителях Intel Xeon Phi?

Есть ли инструкции SIMD (SSE / AVX) в x86-совместимых ускорителях MIC Intel Xeon Phi?

http://en.wikipedia.org/wiki/Xeon_Phi


person Alex    schedule 26.03.2014    source источник
comment
Совместимо с какой версией Xeon Phi? У более ранних были проблемы, будущие утверждают, что поддерживают даже AVX-512.   -  person Leeor    schedule 26.03.2014
comment
Я не верю, что текущий Xeon Phi может запускать SSE / AVX (2). Даже его AVX-512 немного отличается от того, что будет в Skylake и будущих чипах Xeon Phi.   -  person Mysticial    schedule 27.03.2014
comment
@Mysticial Т.е. текущий Xeon Phi может работать только с AVX-512, но не с SSE / AVX2, не так ли?   -  person Alex    schedule 27.03.2014
comment
@Alex Я считаю, что это правильно.   -  person Mysticial    schedule 27.03.2014


Ответы (1)


Да, текущее поколение сопроцессоров Intel Xeon Phi (кодовое название «Knight's Corner», сокращенно KNC) поддерживает 512-битный набор инструкций SIMD под названием «Intel® Initial Many Core Instructions» (сокращенно Intel® IMCI).

Intel IMCI не "совместим" и не эквивалентен SSE, AVX, AVX2 или AVX-512 ISA. Однако официально объявлено, что следующие запланированные поколения Xeon Phi (кодовое название "Knight's Landing", сокращенно KNL) будет поддерживать AVX-512 ISA.

И Intel IMCI (поддерживаемый KNC), и AVX-512 (поддерживаемый KNL) представляют собой 512-битные наборы инструкций SIMD, поддерживающие FMA и позволяющие упаковать 8 чисел двойной точности или 16 чисел с плавающей запятой одинарной точности или 16 32-битных чисел. целые числа (т.е. в два раза «больше», чем AVX или AVX2).

Хотя KNC не может "запускать" двоичные файлы SSE или AVX, это часто не имеет значения, потому что для того, чтобы сгенерировать двоичный файл вашего приложения для работы на KNC, вам необходимо перекомпилировать код, используя Компилятор Intel C / C ++ / Fortran, который, как известно, автоматически или полуавтоматически генерирует относительно эффективные векторные коды (для SSE, AVX, IMCI и т. Д.), А также дает вам возможность при необходимости использовать встроенные функции IMCI.

Боковое примечание: для Knights Landing (с поддержкой AVX-512) набор инструментов Intel больше не будет единственным вариантом, но он, вероятно, продолжит предоставлять множество преимуществ, включая надежное явное и автоматическое векторизацию, а также хороший уровень интеграции с Intel инструменты профилирования (обратите внимание, например, на анализ AVX-512 в Советник Intel (векторизация)).

AVX-512 ISA совместим с SSE, AVX и AVX2. Поэтому приложения, скомпилированные для AVX на Xeon, будут работать на KNL, в то время как приложения, скомпилированные для AVX-512 на Xeon Phi KNL, обычно будут работать на будущих поколениях. Xeon (для поддержки AVX-512 в будущем).

Разницу между AVX, IMCI и будущими наборами инструкций AVX-512 можно легко изучить, используя следующее онлайн-руководство: http://software.intel.com/sites/landingpage/IntrinsicsGuide/

person zam    schedule 28.03.2014
comment
Спасибо! потому что для того, чтобы сгенерировать двоичный файл вашего приложения для работы на KNC, вам необходимо перекомпилировать свой код с помощью компилятора Intel C / C ++ / Fortran, который, как известно, автоматически или полуавтоматически генерирует относительно эффективные векторные коды (для SSE, AVX , IMCI и т.д.) - да, но если я не использую встроенную или встроенную сборку SSE / AVX [1/2] -инструкции, и если я использую только автоматическую векторизацию. - person Alex; 29.03.2014
comment
Да, если вы используете только встроенную сборку, вам придется обновлять реализацию сборки каждый раз, когда появляется более широкий / новый ISA, и ваш код не всегда переносится. Это одна из причин, почему существует так много более высокоуровневых и более переносимых абстракций SIMD, доступных для процессоров x86, а также для всех Xeon Phi-s. Это: 1) встроенные функции, 2) классы vec и различные библиотеки SIMD, 3) средства явной векторизации в стандартах OpenMP4.0 и Cilk Plus, 4) автоматическая векторизация компилятора. - person zam; 29.03.2014
comment
Да, и может быть, Intel TBB использует и SIMD, и MultiThreading, не так ли? Мне нравится этот SIMD, присутствующий в OpenMP4, потому что он кроссплатформенный и кросс-аппаратный. - person Alex; 29.03.2014
comment
Я не знаю о каких-либо планах библиотеки Intel TBB по внедрению поддержки программирования SIMD, и я не уверен в их внутренней реализации; но я знаю, что вы можете комбинировать потоки TBB с любыми другими фреймворками / прагмами SIMD, такими как прагма OMP4 simd, Cilk или специфические прагмы компилятора. Кстати, я сказал SIMD framework, то есть pragma simd, а не pragma parallel for (комбинирование разных параллельных fors также довольно часто работает, но требует, чтобы вы дополнительно проверяли совместимость для пары конкретных сред выполнения) - person zam; 01.04.2014