Целью данного исследования является создание модуля-предиктора, способного построить модель выполнения программы на графическом процессоре, оценить её время работы и эффективность (загруженность ускорителя во время работы). Использование данного модуля предполагается в системе САПФОР (Система Автоматизации расПараллеливания ФОРтран-программ) для выбора лучшей схемы распараллеливания на графический ускоритель.
Система САПФОР [13] состоит из следующих компонент:
-
Анализатор Фортран-программ, который выявляет свойства последовательной программы по тексту программы и записывает их в базу данных;
-
База данных используется для хранения и передачи данных между компонентами системы;
-
Эксперты (DVM-эксперт, OpenMP-эксперт, DVM/OpenMP-эксперт, DVMН-эксперт) строят схемы распараллеливания, на их основании осуществляют прогнозирование временных характеристик, записывают схемы и характеристики в базу данных.
-
Генератор, который по схемам распараллеливания, содержащимся в базе данных, строит текст параллельной программы;
-
Диалоговая оболочка, с которой взаимодействует конечный пользователь.
В последнее время система развивалась в сторону поддержки современного Фортрана, создания DVMН-эксперта для кластеров с графическими ускорителями, улучшения версии диалоговой оболочки для работы с реальными приложениями [5].
Требования, предъявляемые к модулю-предиктору.
К разработке предъявляются следующие требования:
-
входными данными для модуля-предиктора является база данных САПФОР, полученная после работы анализатора и DVMH-эксперта;
-
также модуль принимает на вход параметры графического ускорителя, для которого строится прогноз;
-
модуль-предиктор при построении модели программы отображает операторы DVMH-циклов в инструкции, подаваемые графическому процессору;
-
за основу должна быть принята аналитическая модель программы, без построения кода, выполняемого на ускорителе, т. к. предиктор предполагается использовать в DVMH-эксперте для автоматизации выбора схем распараллеливания;
-
для уточнения оценки модуль должен основываться на указаниях-директивах для графического процессора, которые записывает в базу данных DVMH-эксперт;
-
необходимо смоделировать отображение витков цикла большой размерности на трёхмерную решётку блоков ускорителя;
-
необходимо смоделировать действия, осуществляемые библиотекой поддержки Lib-DVM по отображению циклов программы на графический ускоритель;
-
модуль-предиктор должен рассчитывать для каждого параллельного цикла такие характеристики эффективности, как: загруженность ускорителя (степень использования ресурсов), степень параллелизма по вычислениям, степень параллелизма по доступам в память;
-
предиктор анализирует затраты (в тактах) на обращения к памяти и вычисления для каждой функции-ядра, построенной на основе соответствующего параллельного цикла;
-
исходя из заданной конфигурации ускорителя, правил по отображению циклов на графический ускоритель, осуществляемых Lib-DVM, рассчитанных временных характеристик и степеней параллелизма, предиктор осуществляет прогноз времени выполнения параллельных циклов.
Стоит отметить, что требование аналитического моделирования работы программы (без симуляции реального запуска) существенно, в силу того, что эксперт по распараллеливанию на графический процессор может не иметь оборудования, необходимого для запуска и проведения тестов параллельной программы. Более того, вариант параллельной программы может ещё не существовать, ведь прогнозирование характеристик необходимо для выбора наилучшей схемы распараллеливания, согласно которой будет осуществляться реальное отображение на графический процессор.
В настоящее время, в связи с увеличением использования графических процессоров в составе вычислительных кластеров, исследования эффективности выполнения программ на GPU особенно актуальны. При этом нет единой, наиболее полной модели, которая отвечала бы всем требованиям данного исследования. Рассмотрим наиболее близкие:
3.1 Аналитическая модель с учётом внутреннего параллелизма
В этом исследовании предложена методика для оценки числа тактов выполнения скомпилированной программы на графическом ускорителе. В работе содержатся формулы для расчёта параллелизма по памяти, арифметическим операциям. Показывается, как подсчитать число одновременно выполняемых доступов в глобальную память ускорителя. От оптимальности схемы доступа к памяти зависит число обращений и, как следствие, эффективность. Для каждого конкретного запуска возможна оценка эффективности использования вычислительных ресурсов и степени параллелизма. Вследствие этого, возможно установить недостаток ресурсов, необходимых для эффективного запуска программы в данной конфигурации.
Недостатком модели [10] является расчёт, который основан в предположение того, что код пользователя написан и скомпилирован под конкретную архитектуру. В частности, примеры в данной работе написаны с использованием CUDA, протестированы для ускорителей с поддержкой CUDA 1.0 и CUDA 1.3. Предполагается, что количество выполняемых инструкций - параметр модели, пользователь вычисляет сам каким-либо способом по скомпилированному коду. Это создаёт трудности для подсчёта автоматизированного отображения.
Для получения результатов запуска в работе были использованы ускорители архитектуры Tesla. В архитектуре Tesla присутствует общий для всех потоковых мультипроцессоров кэш, который можно отключить. Прогноз в модели построен для случая без использования кэша.
Модель предоставляет высокую точность предсказания тактов работы: ошибка не превосходит 10-13%.
В работе [11] программа рассматривается как набор ядровых функций, запускаемых на графическом процессоре независимо друг от друга. В исследовании была построена собственная модель для оценки времени исполнения ядровых функций, с учётом особенностей архитектуры GPU. Подробно рассмотрены случаи полного перекрытия и отсутствия перекрытия выполнения арифметических операций и доступов к памяти. На практике оба этих случая достаточно редки, т. к. чаще всего можно осуществить хотя бы частичное перекрытие счёта и обменов с памятью. Подход, принятый в данной модели, описывает степень такого совмещения.
Преимуществом данной модели является детальный анализ влияния типа арифметической инструкции на выполнение программы. Разные команды требуют разное количество тактов, что в свою очередь отражается на итоговом времени работы и эффективности.
3.3 Особенности настоящего исследования в сравнении с существующими
Ключевой особенностью рассмотренных ранее моделей является наличие кода на языках CUDA C/C++/Fortran. Кроме этого, модели построены в расчёте на использование компилятора NVCC. Также означенные выше модели предполагают, что пользователь подсчитывает и указывает число выполняемых инструкций как параметр, необходимый для прогноза.
Условия настоящего исследования предполагают, что для прогнозирования за основу взят алгоритм, параллельной версии которого для графического ускорителя ещё не существует. Исходный код на языке Фортран анализируется и строится некоторая модель выполнения. Чтобы модель как можно более точным образом описывала действия Lib-DVM по отображению параллельной программы на ускоритель, при этом соответствуя ограничениям, предлагается использование эвристик, предложенных в предыдущей версии предиктора [8], информации, содержащейся в базе данных САПФОР после работы анализатора и DVMH-эксперта, а также некоторых других предположений относительно возможной работы параллельного алгоритма. Работа ориентирована на архитектуру Fermi (compute capability 2.0). Алгоритмы работы с кэш-памятью в архитектуре Fermi не являются прозрачными для программиста. Для учёта влияния кэш-памяти была реализована упрощённая модель кэша. Анализ когерентности доступов в глобальную память в данной модели производится на основе исходного кода Фортран программы и директив, размещённых DVMH-экспертом.
За основу для непосредственного подсчёта тактов было взята модифицированная модель с учётом внутреннего параллелизма [10]. При этом характеристики, необходимые для подсчёта, собираются автоматически.
Достарыңызбен бөлісу: |