rtsIDr (1158390)
Текст из файла
120
Институт Прикладной Математики им. М.В.Келдыша
Российская Академия наук
Система поддержки выполнения
параллельных программ
(библиотека Lib-DVM)
Описание интерфейса
Март, 2000
ОГЛАВЛЕНИЕ
1 Введение 6
2 Инициализация системы поддержки и завершение с ней работы 6
3 Построение представлений абстрактной машины 8
3.1 Опрос ссылки на текущую абстрактную машину 8
3.2 Создание представления абстрактной машины 8
3.3 Опрос ссылки на элемент представления абстрактной машины 9
3.4 Уничтожение представления абстрактной машины 9
4 Многопроцессорные системы 10
4.1 Опрос ссылки на многопроцессорную систему 10
4.2 Создание подсистемы заданной многопроцессорной системы 10
4.3 Реконфигурация (изменение формы) многопроцессорной системы 11
4.4 Уничтожение многопроцессорной системы 11
4.5 Веса элементов многопроцессорной системы 12
4.6 Задание весов координат процессоров по весам их загрузки 16
5 Отображение представления абстрактной машины 18
5.1 Задание отображения представления абстрактной машины на многопроцессорную систему (распределение ресурсов) 18
5.2 Изменение отображения представления абстрактной машины на многопроцессорную систему (перераспределение ресурсов) 22
5.3 Опрос карты отображения 23
5.4 Задание отображения представления абстрактной машины по карте отображения 23
5.5 Изменение отображения представления абстрактной машины по карте отображения 24
5.6 Уничтожение карты отображения 25
5.7 Неравномерное блочное распределение 26
6 Создание и уничтожение распределенного массива 27
6.1 Создание распределенного массива 27
6.2 Уничтожение распределенного массива 28
6.3 Создание дополнительного заголовка распределенного массива 29
6.4 Уничтожение заголовка распределенного массива 29
7 Отображение распределенного массива 29
7.1 Задание расположения (выравнивание) распределенного массива 29
7.2 Суперпозиция выравниваний 32
7.3 Изменение расположения распределенного массива 34
7.4 Опрос карты отображения 35
7.5 Задание расположения распределенного массива по карте отображения 35
7.6 Изменение расположения распределенного массива по карте отображения 36
7.7 Уничтожение карты отображения 37
7.8 Опрос ссылки на представление абстрактной машины, в которое отображён заданный распределённый массив 37
8 Определение программного блока 37
9 Описание параллельного цикла 38
9.1 Создание параллельного цикла 38
9.2 Отображение параллельного цикла 39
9.3 Изменение порядка выполнения витков цикла 43
9.4 Опрос необходимости продолжения выполнения параллельного цикла 45
9.5 Завершение параллельного цикла 46
9.6 Задание информации о зависимостях по данным между витками параллельного цикла 46
10 Представление программы в виде соовокупности параллельно выполняющихся подзадач 47
10.1 Отображение абстрактной машины (создание подзадачи) 47
10.2 Начало выполнения (активизация, пуск) подзадачи 48
10.3 Завершение выполнения (останов) текущей подзадачи 48
11 Редукция 49
11.1 Создание редукционной переменной 49
11.2 Создание редукционной группы 51
11.3 Включение редукционной переменной в редукционную группу 51
11.4 Запоминание значений редукционных переменных 53
11.5 Запуск редукционной группы 54
11.6 Ожидание завершения редукции 54
11.7 Уничтожение редукционной группы 55
11.8 Уничтожение редукционной переменной 55
12 Обмен границами распределенных массивов 56
12.1 Создание группы границ 58
12.2 Включение границы распределенного массива в группу границ 59
12.3 Запуск обмена границами заданной группы 62
12.4 Инициализация приема импортируемых элементов заданной группы границ 62
12.5 Инициализация передачи экспортируемых элементов заданной группы границ 62
12.6 Ожидание завершения обмена границами заданной группы 63
12.7 Уничтожение группы границ 63
13 Доступ к элементам распределенных массивов 64
13.1 Копирование элемента распределенного массива 64
13.1.1 Чтение элемента распределенного массива и присвоение ему значения 64
13.1.2 Копирование элемента одного распределенного массива в элемент другого распределенного массива 65
13.1.3 Обобщенная пересылка элемента распределенного массива 65
13.2 Копирование распределенных массивов 66
13.3 Асинхронное копирование распределенных массивов 68
13.4 Доступ к элементам локальной части распределенного массива 69
13.4.1 Опрос принадлежности элемента распределенного массива его локальной части 70
13.4.2 Опрос начальных и конечных значений индексов локальной части распределенного массива 71
13.4.3 Чтение элемента локальной части распределенного массива 71
13.4.4 Присвоение значения элементу локальной части распределенного массива 71
13.4.5 Копирование элемента локальной части одного распределенного массива в элемент локальной части другого распределенного массива 72
13.4.6 Опрос адреса элемента локальной части распределенного массива 72
13.5 Макрокоманды доступа к элементам локальных частей распределенных массивов размерностей от 1 до 7 72
13.6 Последовательный опрос значений индексов элементов распределенного массива 73
14 Регулярный доступ к удаленным данным 74
14.1 Создание буфера удалённых элементов распределённого массива 74
14.2 Запуск загрузки буфера удаленных элементов распределенного массива 79
14.3 Ожидание завершения загрузки буфера удаленных элементов распределенного массива 79
14.4 Уничтожение буфера удаленных элементов распределенного массива 80
14.5 Доступ к размещенным в локальной части буфера удаленным элементам 80
14.6 Создание группы буферов удаленных элементов 81
14.7 Включение в группу буфера удаленных элементов 82
14.8 Запуск загрузки буферов удаленных элементов заданной группы 82
14.9 Ожидание завершения загрузки буферов удаленных элементов заданной группы 82
14.10 Уничтожение группы буферов удаленных элементов 83
14.11 Опрос типа доступа к элементам распределенного массива 83
15 Нерегулярный доступ к удаленным данным 85
15.1 Создание буфера удаленных элементов нерегулярного доступа 85
15.2 Запуск загрузки буфера удаленных элементов нерегулярного доступа 86
15.3 Ожидание завершения загрузки буфера удаленных элементов нерегулярного доступа 86
15.4 Уничтожение буфера удаленных элементов нерегулярного доступа 87
15.5 Доступ к размещенным в буфере удаленным элементам 87
15.6 Создание группы буферов удаленных элементов нерегулярного доступа 88
15.7 Включение в группу буфера удаленных элементов нерегулярного доступа 88
15.8 Запуск загрузки буферов удаленных элементов заданной группы 88
15.9 Ожидание завершения загрузки буферов удаленных элементов заданной группы 89
15.10 Уничтожение группы буферов удаленных элементов нерегулярного доступа 89
16 ВВОД/ВЫВОД 89
16.1 Аналоги библиотеки языка C 89
16.1.1 Функции ввода/вывода высокого уровня 89
16.1.2 Функции ввода/вывода нижнего уровня 91
16.1.3 Операции над каталогами и файлами 92
16.2 Чтение файла в подмассив распределенного массива 92
16.3 Запись подмассива распределенного массива в файл 94
17 Вспомогательные функции 96
17.1 Опрос размерности заданного объекта 96
17.2 Опрос размера заданного измерения заданного объекта 96
17.3 Опрос признака распределенного массива 97
17.4 Опрос длины элемента распределенного массива 98
17.5 Уничтожение заданного объекта 98
17.6 Опрос признака процессора ввода/вывода 98
17.7 Рассылка областей памяти процессора ввода/вывода 98
18 Об использовании функций системы поддержки в Фортране 99
19 Примеры программ, использующих функции системы поддержки 102
19.1 Решение уравнения Лапласа методом Якоби 102
19.2 Параллельный цикл с регулярной зависимостью по данным между витками 111
20 Литература 121
1Введение
Прежде чем перейти к описанию функций библиотеки Lib-DVM, опишем кратко используемую модель параллельных вычислений.
Последовательная программа на исходном языке Fortran-77 или Си превращается в программу на том же языке, содержащую вызовы функций Lib-DVM, и выполняющуюся в соответствии с моделью SPMD на каждом выделенном задаче процессоре.
В момент запуска программы существует единственная её ветвь (поток управления), которая начинает свое выполнение с первого оператора программы сразу на всех процессорах многопроцессорной системы.
Многопроцессорной системой (или системой процессоров) будем называть ту машину, которая предоставляется программе пользователя аппаратурой и базовым системным программным обеспечением. Для распределённой ЭВМ примером такой машины может служить MPI-машина. В этом случае, многопроцессорная система это группа MPI-процессов, которые создаются при запуске параллельной программы на выполнение. Число процессоров многопроцессорной системы и её представление в виде многомерной решетки задаётся в командной строке при запуске программы.
Все объявленные в программе переменные (за исключением специально указанных «распределённых» массивов) размножаются по всем процессорам.
При входе в параллельный цикл ветвь разбивается на некоторое количество параллельных ветвей, каждая из которых выполняется на выделенном ей процессоре многопроцессорной системы.
При выходе из параллельной конструкции все ветви сливаются в ту же самую ветвь, которая выполнялась до входа в параллельную конструкцию. В этот момент все изменения размноженных переменных, которые были произведены параллельными ветвями, становятся видны всем процессорам, выполняющим данную ветвь (т.е. переменные приводятся в согласованное состояние).
2Инициализация системы поддержки и завершение с ней работы
Инициализация из программы на языке C:
| .long rtl_init ( | .long | InitParam, |
Инициализация из программы на языке Фортран:
long linit_ (long *InitParamPtr);
где:
| InitParam или |
|
|
| argc | | число параметров-строк в командной строке; |
| argv | | массив указателей на параметры-строки командной строки. |
Функции rtl_init и linit_ производят инициализацию структур, управляющих функционированием системы поддержки, в соответствии с заданными в файлах параметрами, определяющими режимы межпроцессорных обменов, накопления статистики и трассировки и т.д.
Параметр инициализации может принимать значения:
| 0 | | стандартная инициализация; |
| 1 | | инициализация с блокировкой средств динамического контроля [3] (включение средств динамического контроля, заданное в параметрах запуска системы поддержки, в этом случае подавляется). |
Возвращается нулевое значение.
long lexit_ (long *UserResPtr);
*UserResPtr код завершения пользовательской программы.
Функция lexit_ осуществляет корректное завершение функционирования системы поддержки (возврат занятой в процессе работы памяти, запись в файлы накопленной статистической и трассировочной информации и т.д.).
Возврата из функции не происходит.
Замечание. Запуск программы пользователя для выполнения на многопроцессорной системе требует задания (в качестве параметров запуска) характеристик многопроцессорной системы как многомерного массива: размерности и размеров по каждому измерению.
Пусть размерность многопроцессорной системы задана равной n, а размер по измерению k равным PSSizek (1 ≤ k ≤ n). Тогда при инициализации системы поддержки каждому процессору будет присвоен внутренний номер ProcNumberint:
| ProcNumberint(I1, ... ,In) = | n | n |
где Ik значение индекса процессора по измерению k индексного пространства многопроцессорной системы (0 ≤ Ik ≤ PSSizek 1). То есть, внутренний номер это линейный индекс процессора в индексном пространстве многопроцессорной системы.
При межпроцессорных обменах в качестве адреса процессора используется его идентификатор ProcIdent. Соответствие
ProcNumberint ProcIdent
возвращается системе поддержки системой передачи сообщений (Message Passing System) при её инициализации.
Среди процессоров выделенного задаче решающего поля функционально выделены два: процессор ввода/вывода и центральный процессор. Процессор ввода/вывода предназначен для непосредственного общения с файловой системой (см.п.16) и имеет нулевой внутренний номер. Центральный процессор осуществляет вычисление редукционных функций (см.п.11) и определяется индексным вектором ([PSSize1/2], ... ,[PSSizen/2]).
3Построение представлений абстрактной машины
Понятие абстрактной машины введено для двухступенчатого отображения параллельной программы на реальный параллельный компьютер. Программист создает абстрактную машину, наиболее подходящую для своей программы (позволяющую учесть весь потенциальный параллелизм программы), затем задает отображение на эту машину своей программы и данных, а также указывает правила отображения этой абстрактной машины на реальный параллельный компьютер. Поэтому абстрактная машина представляет собой иерархию абстрактных параллельных подсистем, каждая из которых может быть представлена в виде многомерного массива подсистем следующего уровня иерархии. При этом допускается одновременное существование нескольких вариантов такого представления каждой подсистемы.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.














