Система поддержки выполнения
параллельных программ
(библиотека Lib-DVM)
Предварительный дизайн
* Октябрь, 2000 *

- дата последнего обновления 13.03.01 -


Оглавление

1 Функции Lib-DVM
2 Состав Lib-DVM
3 Подходы и принципы реализации


1 Функции Lib-DVM

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

  1. Инициализация системы поддержки и завершение работы с ней.
  2. Построение абстрактной машины.
  3. Отображение абстрактной машины.
  4. Создание и уничтожение распределенного массива.
  5. Отображение распределенного массива.
  6. Отображение параллельного цикла.
  7. Отображение параллельных задач.
  8. Выполнение редукционных операций.
  9. Обновление теневых граней распределенных массивов.
  10. Создание и загрузка буферов для доступа к удаленным данным.
  11. Выполнение операций ввода-вывода.

Помимо выполнения этих операций, система поддержки должна обеспечивать:

  1. Обращения к подсистеме сбора характеристик выполнения программы на каждом процессоре.
  2. Обращения к DVM-отладчику.
  3. Накопление системной трассировки – трассировки обращений к функциям Lib-DVM и функциям коммуникационных библиотек. Эта трассировка используется для отладки DVM-программ, самой системы поддержки, а также служит входной информацией для предиктора.
  4. Ввод параметров, управляющих работой системы поддержки, DVM-отладчика и подсистемы сбора характеристик выполнения.

Система поддержки должна использовать для передачи сообщений две коммуникационные библиотеки – MPI и PVM.

2 Состав Lib-DVM

В состав библиотеки помимо функций, описанных в документе "LIB-DVM. Описание интерфейса", входит большое количество функций, обеспечивающих выполнение следующих вспомогательных операций:

  1. Операции обмена сообщениями.
  2. Динамическое распределение памяти.
  3. Синхронизация программ.
  4. Ввод управляющих параметров.
  5. Накопление системной трассировки.
  6. Взаимодействие с DVM-отладчиком и подсистемой сбора характеристик выполнения программы.

3 Подходы и принципы реализации

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

  1. Инициализация системы поддержки и завершение работы с ней.

При инициализации:

При завершении:

  1. Построение и отображение абстрактной машины.

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

  1. Создание и уничтожение распределенного массива.

При создании массива строится его дескриптор, но память под него не выделяется. При уничтожении массива его дескриптор уничтожается и освобождается память, занимаемая массивом.

  1. Отображение распределенного массива на абстрактную машину.

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

  1. Отображение параллельного цикла на абстрактную машину.

Для каждого процессора определяются витки цикла, которые будут выполняться на данном процессоре, и порядок их выполнения.

  1. Отображение параллельных задач на абстрактную машину.

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

  1. Выполнение редукционных операций.

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

  1. Обновление теневых граней распределенных массивов.

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

  1. Создание и загрузка буферов для доступа к удаленным данным.

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

  1. Выполнение операций ввода-вывода.

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

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

  1. Накопление трассировки обращений к функциям Lib-DVM и функциям коммуникационных библиотек.

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

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