Файл: Гетерогенные мультикомпьютерные системы.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 14.03.2024

Просмотров: 25

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Стандартные синхронные мо݅де݅ли вызовов, наподобие RP݅C, могут быть ре݅ал݅из݅ов݅ан݅ы поверх очередей.

В среду вы݅по݅лн݅ен݅ия HSA на пользовательском ур݅ов݅не входят ко݅мп݅он݅ен݅ты, которые необходимы при запуске уж݅е скомпилированной HS݅A-݅пр݅ог݅ра݅мм݅ы. Эти компоненты от݅ве݅ча݅ют за расположение задач в очередях и передачи ин݅фо݅рм݅ац݅ии о ресурсах текущей пл݅ат݅фо݅рм݅ы. Системный сл݅ой HSA ответственный за использование функций пл݅ан݅ир݅ов݅щи݅ка, управление па݅мя݅ть݅ю и вы݅де݅ле݅ни݅е ресурсов, в том чи݅сл݅е памяти по݅д очереди. Сю݅да же включена функция уп݅ра݅вл݅ен݅ия модулем MM݅U (Memory Ma݅na݅ge݅me݅nt Module), об݅оз݅наченый как HMMU и расположен в ар݅хи݅те݅кт݅ур݅е HSA.

Большинство современных систем, от мобильных устройств до суперкомпьютеров, содержащих ядра CPU и GPU, которые по отдельности очень специфичны, но как их лучше использовать в сочетании с "тяжелыми" приложениями, такими как распознавание лиц или физика твердого тела? Можно ли повысить производительность и энергоэффективность без изменения существующих моделей программирования? Концепция гетерогенных систем является шагом к решению этих задач.

Использование графических процессоров (GPU) наряду с классическими микропроцессорами (центральные процессоры, CPU) в настоящее время является общепринятой практикой в области параллельных вычислений на гетерогенных средах, объединяющей вычислительные элементы различных типов. Однако GPU и CPU изначально предназначены для разных устройств, направленных на решение своих задач, а их совместное использование представляет собой комплекс из нескольких задач. Например, они имеют отдельную память и отдельные адресные пространства, поэтому приложение должно явно копировать данные в память GPU и обратно в основную память компьютера.[14] При отправке вычислительной работы-реализация очереди устройства осуществляется через стек драйверов с помощью системных вызовов и ядра операционной системы, что вносит большую задержку и часто делает непрактичным выполнение небольших заданий на отдельном ускорителе. Кроме того, отправка заданий от одного ускорителя к другому или от процессора трудно.

HSA-это архитектура гетерогенных систем с общей когерентной памятью, гетерогенными вычислительными элементами, поддержкой управления очередями задач, широким спектром аппаратного обеспечения и языками высокого уровня. Свойство непротиворечивости памяти означает, что разные процессоры видят одно состояние, разделяемую память, даже когда память независимо обновляется на любом процессоре. Непротиворечивость памяти уже давно воспринимается как должное, как однородные многопроцессорные и многоядерные системы, но все же новинка гетерогенных систем.


В целом поддержание согласованности является сложной задачей. Однако возможность иметь разные типы процессоров (CPU, GPU, DSP) для работы с одними и теми же данными в общей памяти позволит вам избавиться от ненужных операций копирования и повысить производительность и энергоэффективность. В HSA-среде приложения, работающие на CPU, могут выполнять отдельные задачи на GPU / DSP так же легко, как и CPU. Вы можете сделать это, приложение должно предоставить указатели на данные в общей памяти и обновить соответствующие очереди задач.[15] При традиционном подходе приложению необходимо собрать все необходимые данные и с помощью драйверов операционной системы выполнить операции ввода-вывода для передачи данных на вычислительное устройство, а затем запустить процесс расчета. HSA позволяет разработчикам программного обеспечения создавать приложения без необходимости углубляться в детали различных ускорителей, доступных в целевой системе, таких как GPU, DSP, видеокодеры/декодеры и другие функции быстрого доступа.

Для упрощения работы операционной системы и приложений платформы HSA используется один набор виртуальных таблиц страниц для всех типов процессоров, что позволяет обмениваться указателями между собой, информационно-технологическим оборудованием - одни и те же указатели преобразуются в одни и те же физические адреса. Кроме того, такой подход устраняет необходимость в операционной системе, а диспетчер памяти отслеживает количество независимых наборов таблиц страниц для каждого устройства. Если CPU и GPU использовать те же ячейки памяти, традиционный ГПУ использует отдельное адресное пространство, и драйвер дисплея пришлось сбросить кэш при назначении памяти и процессора.

Платформа HSA предоставляет разработчику полностью когерентную память, что значительно упрощает создание приложений — от калькуляторов до различных архитектур, используемых в рамках общих моделей программирования, позволяющих использовать знакомые алгоритмы, например, производителя-потребителя. Однако, HSA также поддерживает несогласованную память, которая необходима для получения максимальной производительности, когда нет никакой потребности разделить данные между процессорами различных видов.

С помощью операционной системы подкачки механизм, который позволяет пользователю процессов для работы с большим объемом памяти, чем физической памяти, но обычный процессор может работать только с невыгружаемой памяти главного контроллера и операционной системы, чтобы поделиться частью физической памяти, пометить его нет - страницы и создать отдельное виртуальное адресное пространство, в частности ускорителя.[16] HSA позволяет избавиться от невыгружаемого пула памяти и общего адресного пространства, когда все GPU, так как механизм страницы прерывает использовать одно и то же пространство iso-адресов, таких как процессор, с возможностью подкачки.


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

В качестве ускорителей для таких задач можно использовать единое адресное пространство и прерывания страниц, предоставляемые архитектурой HSA, что значительно повышает производительность без усложнения программного кода. В дополнение к общему адресному пространству позволяет использовать структуры данных, содержащие указатели, такие как связанные списки и деревья, оба из которых доступны на ЦП и GPU. При традиционном подходе такие случаи требуют отдельного рассмотрения программистом и часто являются основной причиной невозможности перенести алгоритмы на GPU.

Глава 3. Построение системы

3.1 Поддержка технологий программирования и архитектуры HSA

В некоторых процессорах уже используется функционал HSA, но архитектура HSA в полном объеме не обнародована, так находится еще в разработке у рабочих групп HAS Foundation. Так например, применяются в Google Nexus 10 и Google Chromebook системы на кристалле с процессорными ядрами ARM Cortex-A15 и графическими ядрами рода Mali-T600 используют когерентную общую память hUMA (heterogeneous Uniform Memory Access), что позволяет увеличивать производительность приложений OpenCL.[17]

Если использовать комплекс CPU+GPU, то это даст увеличение скорости от 3 до 15 раз в сравнении с обычной обработкой изображений на CPU.

Процессоры рода AMD Kaveri поддерживают когерентную память hUMA и объединяют до четырех ядер с микроархитектурой SteamrollerB и графическое ядро GCN, которое может содержать до 512 потоковых процессоров.

При использовании нового процессора скорость выполнения алгоритма распознавания лиц увеличилась в 2,3 раза, при уменьшении потребления энергоресурсов в 2,4 раза при сравнении с работой процессора прошлого поколения AMD Triniti. Такие показатели стали досягаемы при использовании комплексной работы CPU и GPU ядер. Следующим пунктом в модернизации HSA находится реализация вытесняемости задач и замена контекста на GPU-ядрах.


От того, как быстро приложения начнут использовать новую архитектуру зависит их успех и скорость их распространения. Также новые архитектуры распространяются быстрее если они спроектированы наиболее просто.

Аппаратная поддержка, программные интерфейсы, компоненты среды выполнения и модули ядра, выполняющие основную работу по поддержке когерентной памяти и управлению очередями, все это содержит в себе архитектура HSA.

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

В настоящее время в HAS Foundation поставлена задача о постановлении гетерогенных, а также параллельных систем не прибегая к изучению дополнительных языков программирования, в следствии модернизации уже существующих языков и библиотек.[18]

Решение данной задачи дает возможность программистам вместе с их уже разработанными приложениями воспользоваться преимуществами архитектуры HSA — так, к примеру, компания AMD использует этот процесс при оптимизации под HSA средств написания параллельных продуктов для гетерогенных сред: OpenCL и C++ AMP.

В то же время производится обеспечивание поддержки HSA в таких языках, как Java и Python. Так библиотека APARAPI имеет возможность заменять байткод Java в OpenCL, использовав специальный класс Java.

В настоящее время разрабатывается проект Sumatra, под руководством компаний AMD и Oracle, данный проект планируется к выходу в конце 2015 года, он предоставляет виртуальной машине Java возможность использования HSA. В связи с тем, что стандартные библиотеки подвергаются обнавлению, многие Java- приложения могут использовать HSA с сохранением кода.

В задачу HSA также входит устранение барьера сложности разработки приложений среди CPU, GPU и DSP различных типов, а также уменьшение задержек при совместном взаимодействии, поддержание широкого набора программных платформ и технологий программирования.

В настоящее время укорители GPU и DSPне имеют достаточную гипкость для того, чтобы решить некоторые задачи, в свою очередь архитектура HSA имеет доступ к единственному адресному пространству от каждого вычислительного устройства.[19]

HSA группирует процессоры CPU, GPU, DSP и прочие ускорители в целостную конструкцию с единым принципом вычислительной системы, несомненно это в большей степени упрощает разработчикам процесс решения различных вычислительных задач.


3.2 Построение Grid-системы

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

Архитектура Grid устанавливает требования к основным классам технологических компонентов (протоколы, услуги, API, SDK), но он не предлагает строгие спецификации, что позволяет возможность их свободного развития в рамках представленной концепции. Архитектура протоколов Grid состоит из таких уровней, как базовый, уровень соединения, уровень ресурсов, уровень объединения и уровень приложения. Компоненты на каждом уровне могут использовать функции и компоненты одного из следующих уровней.

Терминология Grid-это группа людей и организаций, которые решают общую проблему и предоставляют друг другу свои ресурсы, называемая виртуальной организацией (ВО). Например, виртуальная организация может быть коллекцией всех людей, участвующих в научном сотрудничестве. Виртуальные организации могут различаться по составу, масштабу, времени существования, роду деятельности, целям, отношениям между участниками (доверительные, не доверительные) и т.д.

Причины появления Grid, а также ВЕБ-технологий, имеют те же тенденции с точки зрения масштабов и использования. Однако следует понимать большое различие между Web и Grid: несмотря на большой объем Интернета, количество хост-компьютеров, участвующих в типичной транзакции в Интернете, все еще невелико и намного меньше, чем во многих приложениях Grid.[20]

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

Конвергенция виртуализации, распределенных вычислений и архитектур, ориентированных на обслуживание, является важным поворотным моментом в развитии архитектуры Enterprise it architecture. Сочетание возможностей этих технологий создает предпосылки для решения наиболее важных задач для бизнеса сегодня.