§12. Отечественная разработка – система DVM

DVM-система, созданная в Институте прикладной математики им. М.В. Келдыша РАН, позволяет разрабатывать на языках C-DVM и Fortran-DVM параллельные программы для ЭВМ различной архитектуры и сетей ЭВМ. Аббревиатура DVM соответствует двум понятиям: Distributed Virtual Memory и Distributed Virtual Machine. Первое отражает наличие единого адресного пространства. Второе отражает использование виртуальных машин для двухступенчатой схемы отображения данных и вычислений на реальную параллельную машину.

При использовании языков C-DVM и Fortran-DVM программист имеет только один вариант программы и для последовательного, и для параллельного выполнения. Эта программа, помимо описания алгоритма обычными средствами языков Си или Фортран 77, содержит правила параллельного выполнения этого алгоритма. Эти правила оформляются синтаксически таким образом, что они являются “невидимыми” для стандартных компиляторов с последовательных языков Си и Фортран и не препятствуют выполнению и отладке DVM-программы на рабочих станциях как обычной последовательной программы.

Программисту предоставляются следующие возможности спецификации параллельного выполнения программы:

·     распределение элементов массива между процессорами;

·     распределение витков цикла между процессорами;

·     спецификация параллельно выполняющихся секций программы (параллельных задач) и отображение их на процессоры;

·     организация эффективного доступа к удаленным (расположенным на других процессорах) данным;

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

Компилятор переводит программу на языке C-DVM (Fortran-DVM) в программу на стандартном языке Cи (Фортран), расширенную функциями системы поддержки выполнения DVM-программ, которая для организации межпроцессорного взаимодействия использует стандартные коммуникационные библиотеки (MPI, PVM, Router).

Отладка программ осуществляется следующим образом.

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

Для отладки программы на реальной параллельной машине используются также средства накопления трассировки.

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

Для облегчения отладки производительности служит специальный инструмент (предиктор), позволяющий на рабочей станции смоделировать выполнение DVM-программы на параллельной ЭВМ или кластере рабочих станций с заданными параметрами (топологии коммуникационной сети, ее пропускной способности, а также производительности процессоров).

DVM-система используется на рабочих станциях и персональных ЭВМ с операционными системами UNIX и WINDOWS 95/NT. Опыт выполнения DVM-программ на параллельных ЭВМ (МВС-100, МВС-1000 и Convex SPP1000) и кластерах рабочих станций (SGI и SUN) подтверждает их высокую эффективность и переносимость.

Цели создания DVM-системы

·     Простота разработки параллельных программ.

·     Мобильность среди различных архитектур ЭВМ (последовательных и параллельных).

·     Высокая эффективность выполнения программы.

·     Повторное использование (композиция параллельных приложений из нескольких модулей).

·     Единая модель параллелизма для языков Си и Фортран 77, как следствие этого, единая система поддержки, отладки, оценки и предсказания производительности.

Разработка программ на языках C-DVM и Fortran DVM

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

Важным достоинством DVM-подхода является то, что спецификации параллелизма (DVM-указания) оформляются в виде специальных комментариев и остаются “невидимыми” для стандартных компиляторов.

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

Во-вторых, это позволило предложить следующий метод поэтапной отладки DVM-программ.

На первом этапе программа отлаживается на рабочей станции как последовательная программа, используя обычные методы и средства отладки. На втором этапе программа выполняется на той же рабочей станции в специальном режиме проверки DVM-указаний. На третьем этапе программа может быть выполнена на параллельной машине (или ее модели, например MPI-машине в среде Windows 95 или UNIX) в специальном режиме, когда промежуточные результаты параллельного выполнения сравниваются с эталонными результатами (например, результатами последовательного выполнения).

Мобильность программ

Среди последовательных ЭВМ мобильность DVM-программ обеспечивается “прозрачностью” DVM-указаний для стандартных компиляторов с языков Си и Фортран 77.

Компиляторы с языков C-DVM и Fortran DVM преобразуют DVM-указания в вызовы функций единой системы поддержки Lib-DVM, которая реализована на языке Си и базируется на стандартных коммуникационных библиотеках MPI, Router и PVM. Поэтому система поддержки переносима на любые ЭВМ, для которых существует реализация MPI или PVM.

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

Эффективность выполнения программ

Существуют следующие возможности повышения эффективности DVM-программ:

·     использование групповых асинхронных взаимодействий процессоров (одновременное выполнение нескольких редукций и обменов для нескольких массивов);

·     возможность перекрытия простоев процессоров при групповых асинхронных взаимодействиях с вычислениями;

·     автоматическое изменение порядка выполнения витков цикла для опережающих вычислений и рассылок данных.

Повторное использование программ

DVM-программа динамически настраивается на параметры приложения (количество и размер массивов данных).

DVM-процедура динамически настраивается на распределение фактических параметров и подмножество процессоров параллельной ЭВМ.

Состав DVM-системы

DVM-система состоит из следующих компонентов: компилятор Fortran-DVM, компилятор C-DVM, библиотека поддержки Lib-DVM, DVM-отладчик, предсказатель производительности DVM-программ, анализатор производительности DVM-программ.

Эти компоненты выполняют следующие функции:

·     Fortran-DVM компилятор превращает параллельную программу в программу на языке Fortran 77 (SPMD модель), расширенную вызовами функций Lib-DVM, или в программу на языках HPF1 или HPF2.

·     C-DVM компилятор превращает параллельную программу в программу на языке ANSI Си (SPMD модель), расширенную вызовами функций Lib-DVM.

·     Библиотека Lib-DVM - это система поддержки выполнения DVM-программ (написанных на языках Fortran DVM или C-DVM). Функции Lib-DVM используют стандартные коммуникационные системы MPI, PVM и Router.

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

·     Анализатор производительности определяет характеристики эффективности выполнения параллельной программы. Он с заданной степенью детализации предоставляет пользователю информацию о производительности всей DVM-программы и различных ее фрагментов.

·     Предсказатель производительности - это набор средств для прогнозирования характеристик производительности DVM-программ на различных MPP и кластерах рабочих станций. Он позволяет на рабочей станции получить характеристики DVM-программы и использовать их для прогнозирования эффективности выполнения программы на различных параллельных ЭВМ с заданными параметрами.