Что такое DVM?

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

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

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

Получить подробную информацию о DVM-системе и загрузить ее (в виде исходных текстов или библиотек выполняемых программ) можно через Интернет (http://www.keldysh.ru/dvm ,зеркала: DVM1, DVM2). Вместе с системой поставляется набор демонстрационных DVM-программ, а также документация пользователя и разработчика (в виде html-файлов и файлов Word97). Вопросы и замечания следует отправлять по адресу dvm@keldysh.ru.


Отладка DVM-программ

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

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


Использование DVM на кластере

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

Версию по умолчанию можно инициализировать командой "dvminit default". В результате инициализации в текущей директории появится скрипт dvm.

Для освоения DVM-системы могут быть полезны демонстрационные DVM-программы, которые можно взять из директории /usr/home/DVM/examples.


Трансляция и запуск программ

Программы на языках C-DVM и Fortran-DVM имеют расширения .cdv и .fdv, соответственно. Оттранслировать DVM-программу можно с помощью команды "dvm c program.cdv" или "dvm f program.fdv". Если нет ошибок, генерируется исполняемая программа (program), работающая в параллельном режиме поверх MPI.

Запустить программу на выполнение можно командой "dvm run M N program". Здесь MxN - размерность решетки процессоров (программа запускается на M*N процессорах).

В результате выполнения этой команды задача будет поставлена в очередь (Successfully added to queue) и ей присваивается уникальный номер (ID). По окончании работы пользователю выдается сообщение на терминал, создается файл отчета program.rep.


Просмотр статистики

Получить характеристики эффективности выполнения программы можно с помощью команды "dvm pa sts имя_выходного_файла".