Система поддержки
выполнения |
- дата последнего обновления 13.03.01 -
Оглавление
1 Функции
Lib-DVM
2 Состав Lib-DVM
3
Подходы и принципы реализации
Библиотека Lib-DVM является системой поддержки выполнения DVM-программ. Параллельная программа на языке Fortran-DVM (С-DVM) превращается в программу на языке Fortran 77 (Cи), содержащую вызовы функций Lib-DVM, и выполняющуюся в соответствии с моделью SPMD на каждом выделенном задаче процессоре. Функции Lib-DVM, вызываемые при выполнении параллельной программы, описаны в документе "LIB-DVM. Описание интерфейса" и служат для выполнения следующих основных операций:
Помимо выполнения этих операций, система поддержки должна обеспечивать:
Система поддержки должна использовать для передачи сообщений две коммуникационные библиотеки – MPI и PVM.
В состав библиотеки помимо функций, описанных в документе "LIB-DVM. Описание интерфейса", входит большое количество функций, обеспечивающих выполнение следующих вспомогательных операций:
3 Подходы и принципы реализации
Для обеспечения возможности использования различных коммуникационных библиотек, разработан набор функций обмена сообщениями, реализация которых для разных коммуникационных библиотек не требует больших усилий.
При инициализации:
- Один из процессоров (процессор ввода-вывода) читает управляющие параметры из файлов и рассылает их остальным процессорам.
- В соответствии с введенными параметрами осуществляется настройка системы поддержки, DVM-отладчика и подсистемы сбора характеристик выполнения программы.
- Заводятся буфера в памяти всех процессоров для накопления системной трассировки и характеристик выполнения программы.
- Производится синхронизация времени на всех процессорах.
- По указанию пользователя выдаются сообщения, содержащие основные режимы работы системы и характеристики среды её выполнения.
При завершении:
- Производится запись в файлы накопленной системной трассировки и характеристик выполнения программы.
- Осуществляется оповещение пользователя (по его желанию) о завершении выполнения программы.
Является подготовительной операцией для отображения на процессоры данных и вычислений, которое осуществляется через их отображение на абстрактную машину.
При создании массива строится его дескриптор, но память под него не выделяется. При уничтожении массива его дескриптор уничтожается и освобождается память, занимаемая массивом.
При отображении массива на каждом процессоре выделяется память для тех его элементов, которые располагаются на данном процессоре, а также для теневых граней.
Для каждого процессора определяются витки цикла, которые будут выполняться на данном процессоре, и порядок их выполнения.
Для каждого процессора определяются задачи, которые будут выполняться на данном процессоре. Начало и завершение выполнения параллельных задач производится специальными функциями Lib-DVM.
Редукционные операции производятся посредством сбора на специально выделенном процессоре (центральном процессоре задачи) частичных результатов редукции, полученных на тех процессорах, которые участвовали в выполнении параллельного цикла. После вычисления на центральном процессоре окончательного результата он рассылается всем остальным процессорам. Совмещение выполнения редукции с вычислениями достигается имитацией параллельного процесса на центральном процессоре посредством регулярного опроса прихода сообщений.
Обновление теневых граней реализовано как асинхронная операция. Совмещение обменов с вычислениями достигается посредством использования неблокирующих операций обмена.
Размер буферов определяется посредством анализа на каждом процессоре ссылок на удаленные элементы и диапазона витков цикла, выполняющихся на данном процессоре. Загрузка буферов, как и обновление теневых граней, может совмещаться с вычислениями.
Для программ на языке Си разработаны специальные версии стандартных программ ввода-вывода. Ввод информации производится на процессоре ввода-вывода посредством обычных функций ввода, а затем она рассылается остальным процессорам в соответствии с распределением данных. Для вывода данных, отсутствующих на процессоре ввода-вывода, они сначала пересылаются на него, а затем выводятся с него посредством обычных функций вывода.
Ввод-вывод для программ на языке Фортран организуется компилятором аналогично, при этом используются специальные функции Lib-DVM для перемещения данных между буфером процессора ввода-вывода и теми процессорами, на которых эти данные располагаются.
Эта трассировка используется для отладки DVM-программ, самой системы поддержки, а также служит входной информацией для предиктора.
Трассировка содержит информацию о вызываемых функциях и их параметрах, а также сведения о функционировании внутренних механизмов системы поддержки. Она может накапливаться в буфере, либо выводиться непосредственно в файл. Накопленная в буфере трассировка выгружается в файл при завершении выполнения программы. Состав трассируемых событий и режимы трассировки задаются в файле параметров.