Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 30.05.2014 | Доступ: свободный | Студентов: 288 / 30 | Длительность: 11:26:00

Лекция 3: Выполнение программ на Intel Xeon Phi. Модели организации вычислений с использованием Intel Xeon Phi

< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Аннотация: Архитектура и состав ПО, обеспечивающего выполнение программ на Intel Xeon Phi. Модели использования сопроцессора Intel Xeon Phi. Создание приложений для Intel Xeon Phi.

Архитектура и состав ПО, обеспечивающего выполнение программ на Intel Xeon Phi

Intel Manycore Platform Software Stack (MPSS)

Презентацию к лекции Вы можете скачать здесь.

Архитектура и состав программного обеспечения для сопроцессора Intel Xeon Phi ориентированы на выполнение высокопроизводительных приложений, способных максимально использовать возможность одновременного выполнения сотен потоков. Встроенное ПО позволяет использовать его в системах с шиной PCI Express, работающих под управлением операционных систем Linux или Windows.

Сопроцессор Intel Xeon Phi – это высокопроизводительная многоядерная система, реализованная в виде карты расширения PCI Express и соответствующая всем спецификациям PCI Express. В частности, сопроцессор реализует все необходимые интерфейсы и обслуживает запросы основной системы по опросу его состояния и конфигурированию. Базовая операционная система использует драйвер, взаимодействующий с сопроцессором как с устройством PCE Express.

Архитектура ПО сопроцессора Intel Xeon Phi

Рис. 3.1. Архитектура ПО сопроцессора Intel Xeon Phi

Библиотеки обеспечивают базовую функциональность, такую как определение сопроцессоров в системе, передачу данных между хостом и сопроцессором, загрузку исполняемых файлов на Xeon Phi и их запуск. Инструментальные средства позволяют управлять настройкам сопроцессора, получать информацию о его состоянии, обновлять его флеш-память и т.д.; с помощью ssh можно получить терминальный доступ к сопроцессору для запуска на нем программ.

С точки зрения базовой ОС сопроцессор представляет собой отдельный вычислительный SMP-домен, слабо связанный с основными процессорами системы. Поскольку сопроцессор интегрирован в базовую систему в виде карты расширения PCI Express, взаимодействие между базовой системой и сопроцессорами можно осуществлять несколькими различными способами, что позволяет реализовать и предоставить разработчикам несколько программных моделей использования сопроцессора. Для обеспечения разработки высокопроизводительных приложений доступны реализации ряда стандартных API: сокеты TCP/IP, MPI, OpenCL. Также доступны специализированные интерфейсы, позволяющие получать доступ к возможностям сопроцессора, например, SCIF API (Symmetric Communication Interface API) обеспечивает взаимодействие между базовой системой и сопроцессором, и API высокого уровня используют именно его для организации пересылок. Следующий рисунок иллюстрирует взаимосвязи между различными API, реализованными в MPSS (Intel MIC Architecture Manycore Platform Software Stack).

Компоненты ПО сопроцессора Intel Xeon Phi

увеличить изображение
Рис. 3.2. Компоненты ПО сопроцессора Intel Xeon Phi

На левой стороне схемы отображены программные компоненты, выполняющиеся на стороне базовой системы. В качестве операционной системы используется ядро Linux. На правой стороне приводятся программные компоненты, работающие на сопроцессоре; исполняющееся на нем ядро Linux адаптировано для архитектуры Intel Xeon Phi. Схема отражает структуру программного обеспечения по окончании загрузки базовой операционной системы и ОС сопроцессора.

Intel Xeon Phi Coprocessor Software Stack

увеличить изображение
Рис. 3.3. Intel Xeon Phi Coprocessor Software Stack

Поскольку архитектура Intel Xeon Phi похожа на другие архитектуры Intel, процесс старта и загрузки операционной системы сопроцессора похож на загрузку ОС базовой системы. Аналогом системного BIOS является Bootstrap, который начинает выполняться при подаче электрического питания на сопроцессор или его перезагрузке ответственен за загрузку операционной системы сопроцессора. Bootstrap состоит из двух частей (fboot0 и fboot1), первая из которых расположена в ROM сопроцессора и не может быть изменена, а вторая располагается во флеш-памяти и допускает обновление. В ходе работы второй части Bootstrap выполняется загрузка операционной системы сопроцессора из основной системы и передача управления ее загрузчику (Linux Loader).

Операционная система сопроцессора Intel Xeon Phi базируется на стандартном ядре Linux (kernel.org), в которое были внесены минимально возможные изменениями, требуемые для поддержки новой архитектуры и учитывающие отсутствие в сопроцессоре ряда стандартных для вычислительных систем аппаратных компонентов. ОС сопроцессора обеспечивает стандартные возможности, такие как создание/завершение процессов, планирование исполнения потоков, управление памятью, электропитанием, конфигурацией и т.д. Для обеспечения управления специфичными компонентами сопроцессора используется специальный драйвер.

Симметричный коммуникационный интерфейс

Симметричный коммуникационный интерфейс (Symmetric Communication Interface, SCIF) – базовый механизм взаимодействия между процессорами основной системы и сопроцессором. Он обеспечивает взаимодействие между основными процессорами системы и сопроцессорами, а также между несколькими сопроцессорами, установленными в одной системе. SCIF использует возможности механизма прямого доступа к памяти (DMA) со стороны сопроцессора, а также возможность отображения физической памяти системы или любого сопроцессора в виртуальное адресное пространства любого процесса, выполняющегося в базовой системе или на любом сопроцессоре. Взаимодействие между парой клиентов SCIF основано на прямом доступе к памяти друг друга, в частности, взаимодействие между двумя сопроцессорами производится без использования оперативной памяти основной системы.

Набор драйверов, используемых для управления сопроцессором на стороне базовой операционной системы, называется базовым драйвером (Host driver). Его первичной задачей является инициализация сопроцессоров Intel Xeon Phi, что включает загрузку на них операционных систем с необходимыми параметрами. По завершении загрузки сопроцессоров базовый драйвер служит основой SCIF-коммуникаций. Он непосредственно не обеспечивает никаких средств межпроцессного взаимодействия, но все высокоуровневые механизмы (сокеты, MPI и т.д.) базируются на предоставляемой им функциональности.

Для передачи данных между сопроцессором и основной системой можно использовать либо копирование памяти, либо DMA-передачу. Копирование памяти оптимизировано для многопоточного использования, обеспечивая параллельное обслуживание множества запросов для максимального использования пропускной способности шины PCI Express. Однако, когда необходимо уменьшить нагрузку на процессоры основной системы или размер передаваемых данных превышает размер пакета PCI Express, предпочтительней использовать прямой доступ к памяти. Также необходимо отметить, что DMA-передачи, инициированные процессором основной системы, имеют меньшую латентность, чем передачи, инициированные сопроцессором. Приложения могут явно указывать, какой способ передачи следует использовать, либо оставить это на усмотрение драйвера.

Ganglia – масштабируемая распределенная система мониторинга для высокопроизводительных вычислительных систем. Существуют версии для различных архитектур и операционных систем, и она используется на тысячах кластеров. Для интеграции с ganglia и подобным ей системам MPSS предоставляет стандартный интерфейс доступа к данным мониторинга на всех сопроцессорах Intel Xeon Phi (виртуальные файловые системы proc или sysfs), а также предоставляет образцы плагина для сбора дополнительных метрик и настроек системы мониторинга. Каждый сопроцессор представляется в системе мониторинга как отдельный узел.

Для обеспечения эффективности работы высокопроизводительных приложений, для сопроцессора разработан OFED (OpenFabrics Enterprise Distribution) – комплекс программных средств для использования RDMA (Remote Direct Memory Access, удаленный прямой доступ к памяти) и выполнения приема/передачи данных без вызовов ядра ОС. OFED широко используется в приложениях, требующих эффективной работы с сетью и хранилищами данных, и при организации параллельных вычислений. Также, OFED является предпочтительным механизмом передачи для библиотеки Intel MPI, которая может в таком случае использовать интерфейс SCIF для организации взаимодействия между сопроцессорами Intel Xeon Phi в рамках одного узла и между сопроцессором и процессорами базовой системы. При таком взаимодействии с точки зрения MPI каждый сопроцессор считается отдельным узлом.

Реализация библиотеки Intel MPI для архитектуры MIC поддерживает работу только с системой управления параллельными заданиями Hydra. Каждый узел и каждый сопроцессор Intel Xeon Phi идентифицируются уникальным символьным именем или IP-адресом, что позволяет выбрать для каждого процесса исполняемый файл, соответствующий архитектуре, на которой он будет выполняться.

Intel Debugger (idb) – средство отладки гетерогенных приложений, позволяющее отлаживать как приложения, работающие только на сопроцессоре, так и приложения, использующие и центральный процессор, и сопроцессор. Для отладки приложений, использующих Intel Xeon Phi, можно также использовать GNU Project Debugger (gdb).

< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Svetlana Svetlana
Svetlana Svetlana

Здравствуйие! Я хочу пройти курс Введение в принципы функционирования и применения современных мультиядерных архитектур (на примере Intel Xeon Phi), в презентации самостоятельной работы №1 указаны логин и пароль для доступ на кластер и выполнения самостоятельных работ, но войти по такой паре логин-пароль не получается. Как предполагается выполнение самосоятельных работ в этом курсе?

Владимир Хаванских
Владимир Хаванских
Россия, Москва, Высшая школа экономики
Дмитрий Кифель
Дмитрий Кифель
Казахстан, Темиртау