2015-10-28 4 views
5

В чем разница между хост-процессором и сопроцессором? В частности, сопроцессор Xeon Phi и процессор Xeon Phi?Xeon Phi сопроцессор против процессора Xeon Phi?

У меня есть некоторые результаты работы на этих машинах (был запущен параллельный код диффузии OpenMP), который показывает, что хост-процессор работает намного быстрее, когда работает то же количество потоков. Я хотел бы знать различия и относить их к моим результатам.

+0

Что такое точная модель Phi в ваших машинах? Вы спрашиваете о режимах исполнения (модели) - https://software.intel.com/en-us/articles/intel-xeon-phi-programming-environment - они называются «Разгрузка»/«Сопроцессорный родной»/«Симметричный «? Процессы центрального процессора (а не Phi, но некоторые стандартные Xeon E3/E5) обычно быстрее, чем ядра Phi на скалярном коде; но у Phi много ядер, и они способны выполнять векторный код. – osgx

+0

Хост-процессоров Xeon Phi пока нет. У вас есть хост Xeon и сопроцессор Xeon Phi. Асимметрия производительности для одного и того же количества потоков легко понять, если вы прочтете опубликованный материал на Xeon Phi. Там есть несколько книг, которые вы можете найти в Интернете. – Jeff

+0

@osgx Модель: Intel (R) Xeon (R) CPU E5-2660 0 @ 2.20GHz - Кажется, прогоны были связаны с режимом выполнения. Я знаю, что прогон сопроцессора был в качестве основного режима сопроцессора, но я не уверен в случае с процессором. Считаете ли вы, что это должен быть режим разгрузки? – Amir

ответ

5

Чтобы повторно повторить то, что сказал Джефф в комментариях, у вас есть хост Xeon с прилагаемым сопроцессором Xeon Phi. Нынешнее поколение Xeon Phi (Knight's Corner) доступно только в качестве сопроцессора, а не как отдельный хост Xeon Phi (который должен быть доступен для следующего поколения с Knight's Landing).

При запуске программы без разгрузки с вашего хоста Xeon, от this website, похоже, что вы будете иметь возможность работать до 16 потоков. Обратите внимание, что скорость каждого из ваших ядер составляет около 2,2 ГГц.

Когда вы запускаете свою программу в собственном режиме выполнения на сопроцессоре Xeon Phi, вы сможете работать с большим количеством потоков. Оптимальное количество используемых нитей зависит от the model of Xeon Phi у вас есть (некоторые работают лучше всего с 56, другие с 60). Но обратите внимание, что каждое ядро ​​Xeon Phi (примерно 1,2 ГГц) заметно слабее, чем одно ядро ​​Xeon (примерно 2,2 ГГц). Преимущество многоядерной технологии Xeon Phi заключается в том, что вы можете столкнуться со многими ядрами.

Последняя очень важная вещь, которую следует учитывать, заключается в том, что Xeon Phi имеет набор инструкций SIMD 512 бит. Таким образом, на сопроцессоре Xeon Phi вы можете поддерживать намного лучшую векторную идентификацию SIMD, чем на хосте. В вашем случае, я считаю, что ваш хост Xeon имеет только 256-битный блок обработки изображений SIMD. Поэтому, если вы еще этого не сделали, вы можете улучшить свою производительность (до x16, если вы имеете дело с одноточечной) на вашем Xeon Phi, используя преимущества SIMD-векторизации. Ваш хост Xeon откажется только от производительности x8. Просто, чтобы запустить вас в google trek, OpenMP 4.0 позволяет писать такие вещи, как #pragma omp simd, чтобы сообщить компилятору, когда нужно векторизовать петли нижнего уровня по всему вашему коду. Если вам действительно нужна максимальная производительность от Xeon Phi, добавление вексеризации SIMD является необходимостью.

Таким образом, чтобы прямо ответить на ваш вопрос: сравнение результатов производительности между хостом Xeon и сопроцессором Xeon Phi с использованием того же количества ядер бесполезно. Мы уже знаем, что каждое ядро ​​Xeon Phi медленнее, чем каждое ядро ​​Xeon.Вы должны сравнивать результаты, используя максимальное количество ядер, каждый из которых позволяет (60 и 16 соответственно), и, используя максимальную выгоду от блока векторной обработки, если вы хотите прямое сравнение.

+0

Хороший ответ - всего лишь несколько нот: – froth

+3

Хороший ответ - всего лишь несколько нот: каждое ядро ​​на сопроцессоре имеет 4 потока для всего 240 потоков на сопроцессоре на 60 ядер. Каждый поток выдает инструкцию, самое большее, все остальные часы. Таким образом, для каждого ядра занято не менее 2 потоков на ядро. Таким образом, в зависимости от поведения кэша вашего кода и того, насколько параллелизм существует, вы иногда можете получить более высокую производительность, используя меньше, чем максимальное количество ядер. Однако, если у вас есть параллелизм, используя все ядра (но 1 - хотите оставить его для ОС и т. Д.) Max_cores X 3 или 4 потока на ядро ​​является оптимальным. – froth

+1

@froth true. Единственная причина, по которой я не добавил, что мой ответ заключается в том, что он не отражал мой личный опыт. С 60-ядерным сопроцессором я обычно вижу лучшую производительность, используя 60 потоков (или иногда 120 потоков). Но я видел только ухудшение производительности всякий раз, когда я добавил больше потоков за этот момент. Это было то, что я тестировал каждый раз, когда я запускал код на Xeon Phi, хотя из того, что вы упомянули, должно быть верно. – NoseKnowsAll

1

Если вы говорите о текущем поколении (KNC), а не о следующем (KNL), это определения.

Хост-процессор: цепочка ~ 8 ядер/~ 16 Xeon, на которой размещается сопроцессор, что означает хост Xeon, из которого сопроцессор подключен через шину PCIe.

Сопроцессор: Сопроцессор потоковой передачи ~ 60 ядер/~ 240, который висит на хосте Xeon на шине PCIe Xeon.

Хозяева фермы выгружают высоко параллельно параллельные/векторизованные задания на сопроцессор, используя либо инструкции по разгрузке, либо запуская их изначально с использованием некоторой парадигмы распределенного программирования, такой как MPI.

Что касается комментариев к хост-процессору следующего поколения, то комментатор ссылается на то, что следующее поколение Xeon Phi (KNL) может быть сконфигурировано либо как сопроцессор, висящий на шине PCIe (например, 1-й ген Xeon Phi , KNC) или как обычный процессор, который вы подключаете к материнской плате.

Смежные вопросы