В.Д. Корнеев - Параллельное программирование в MPI (1162616), страница 4
Текст из файла (страница 4)
Это связано с тем, что здесь не рассматриваются конкретные вычислительные системы. Точные замеры эффективности 10 з'. Сюемм параллельных влгоритимвв задач конкретного параллельного алгоритма могут быть сделаны на конкретной вычислительной системе на некотором наборе данных. Эффективность параллельных алгоритмов зависит, во-первых, от вычислительной системы, на которой выполняется задача, а, во-вторых, от структуры самих алгоритмов.
Она определяется как отношение времени реализации параллельного алгоритма задачи ко времени реализапии последовательного алгоритма этой же задачи. Эффективность можно измерять н соотношением между временем, затраченным на обмен данными между процессами, и общим временем вычислений. Заметим, что эффективность алгоритмов, которые имеют глобальный обмен данными, снижается с ростом числа параллельных ветвей, т. к. с ростом числа компьютеров в системе скорость выполнения глобальной операции обмена будет падать. К таким задачам можно отнести, например, решение СЛАУ итерационными методами. Эффективность алгоритмов, у которых обмен данными осуществляется только локально, будет неизменной с ростом числа параллельных ветвей. Например, это задачи, решаемые сеточными методами.
2.1. Запуск параллельной программы В п. 1.3 были употреблены понятия виртуальный компьютер и виртуальная топология. Под виртуальны.н компьютером понимается программно реализуемый компьютер. Виртуальный компьютер работает в режиме интерпретации его физическим процессором. В одном физическом компьютере может находиться н работать одновременно виртуальных компьютеров — столько, сколько позволяет память физического компьютера. Работают виртуальные компьютеры в одном физическом в режиме квантования времени.
Под виртуальной топологией здесь понимается программно реализуемая топология связей между виртуальными компьютерами на физической системе. Подробное описание виртуальной топологии представлено в гл. 4. Создаваемая пользователем виртуальная среда позволяет обеспечивать хорошую переносимость параллельных программ, а значит и независимость от конкретных вычислительных систем.
Лля пользователя очень удобно решать свою задачу в рамках виртуальной среды, использовать столько компьютеров, сколько необходимо для решения его задачи, и задавать такую топологию связей между компьютерами, какая необходима. (При решении задачи на системе с небольшим количеством процессоров в одном физическом компьютере может оказаться много виртуальных компьютеров.
При интерпретации виртуальных компьютеров физическим процессором естественно тратится непроизводительное время на переключение с одного виртуального компьютера на другой.) Запуск параллельной программы зависит от типа ВС. Различаются запуски параллельных программ для сильно-связных ВС и для слабо-связных. Сильно-связными являются ВС как с разделяемой памятью, например, %11соп ОгарЬ|св Ог1и1п 2000, так и с распределенной памятью с быстрыми каналами, компьютеры которых сосредоточены в небольшом пространстве, например, Сгау ТЗП, Сгау ТЗЕ, 1ВМ БР2, МВС-1000. Слабо-связными являются ВС с компьютерами объединенными (в кластер) обычной сетью связи. Запуск параллельной программы продемонстрируем на примере. Попустим, требуется решить некоторую задачу. Алгоритм задачи распараллелен на Х процессов, независимо выполняющихся и взаимодействующих друг с другом.
Вначале рассмотрим запуск программы на сильно-связной ВС и на одном обычном однопроцессорном компьютере. На сильно-связной ВС и на одном компьютере запускаются только параллельные программы, ветви которой реализуются копиями одной н той же программы. Пусть программа имеет имя: ргоягаш.с. Программа предварительно компилируется: врзсс 1 3 -о ргоцгаа ехе ргоцгаа с В квадратных скобках стоят опции нужной оптимизации. Затем, программа запускается командой: шр1гпп -пр й' ргоцгаш ехе г.1. Запуск параллельной программы И = (1,2,3, ) — указывает количество виртуальных компьютеров, необходимых для решения рассматриваемой программы с именем ргоягаи ехе, По этой команде система МР1 создает (в оперативной памяти системы из И физических компьютеров) И виртуальных компьютеров, объединенных виртуальными каналами связи со структурой полный граф. И этой группе виртуальных компьютеров присваивается стандартное системное имя ИР1 СОИМ ИОй1.0.
После чего пользовательская программа ргойгав ехе загружается (копируется) в память каждого из созданных виртуальных компьютеров и стартует. Если И < И, то в некоторых (или всех) физических компьютерах будет создано несколько виртуальных. Виртуальные компьютеры, расположенные в одном физическом, будут работать в режиме интерпретации их физическим процессором с разделением времени. Созданные виртуальные компьютеры имеют линейную нумерацию (0,1,2,3, ) и являются базой для создания различных виртуальных топологий, необходимых для реализации конкретных задач, причем со своей внутренней нумерацией виртуальных компьютеров. На некоторых системах, например, МВС-1000, в каждом физическом компьютере создается только один виртуальный компьютер.
Отображение виртуальных компьютеров и структуры их связи на конкретную физическую систему осуществляется системой МР1 автоматически, т.е. пользователю не нужно переделывать свою программу для разных физических систем (с другими компьютерами и другой архитектурой). (Рассматриваемая версия МР1 не позволяет пользователю осуществлять это отображение, либо осуществлять пересылку виртуальных компьютеров в другие физические компьютеры, т. е. не позволяет перераспределять виртуальные компьютеры по физическим компьютерам.) Везде далее, используя слово компьютер, мы будем иметь в виду виртуальный компьютер, если особо не оговаривается противное. Теперь рассмотрим запуск программы на слабо-связной ВС. На слабо-связной ВС запускаются параллельные программы обоих указанных выше вариантов.
Допустим, что вычислительная система имеет И > 2 физических компьютеров с некоторой структурой связей. Далее рассматривается два варианта: 1) ВС вЂ” однородна (вычислительная система имеет одинаковые компьютеры, с одинаковыми операционными системами); 2) ВС вЂ” неоднородна. Для данного типа ВС имеется выделенный компьютер, с которого осуществляется запуск программы.
Этот компьютер назовем поее. Для обоих вариантов параллельной программы компиляция делается следующим образом. Для однородной ВС компиляцию программы (программ) достаточно сделать на пояс, а затем ргоигав ехе нужно записать во все компьютеры и одноименные директории. Для программ с разными ветвями по компьютерам рассылаются только соответствующие им ветви.
Для неоднородных ВС компиляцию программ обоих вариантов нужно делать на каждом компьютере и, затем, так же записать в одноименные директории. Для программ с разными ветвями на компьютерах компилируются только соответствующие им ветви. Для однородных и неоднородных ВС запуск программы осуществляется следующей командой: ирзгпп -иавЬ|пев1т1е васи|нее в -пр и ргоигал ехе Опция -шазЬзпевХз1е указывает системе, что список физических компьютеров нужно взять в файле иасп|пее в (этот список представляет собой список 1Р адресов машин; полагаем, что в нем указаны И компьютеров; и этот список должен находиться в компьютере Ьовс, с которого осуществляется запуск параллельной программы, т.е. в котором выполняется команда ирзгпп).
И = (1,2,3, ) — указывает количество виртуальных компьютеров, необходимых для решения рассматриваемой программы с именем ргоигаи ехе. Далее работа МР1 такая же, как и в описанном выше случае для сильно-связных ВС. Далее приведем примеры файлов со списком адресов компьютеров (в вышеприведенном примере имя этого файла иасЬ|пев е), Для однородных и неоднородных ВС файлы одинаковы.
12 х. Схемы параллельных алгоритмов задач 1. Допустим, ветви параллельной программы реализуются копиями одной и той же про- граммы. Простой файл со списком компьютеров будет выглядеть следующим образом: К1азп.ззсс.гп 1ье!с-а.зясс.гп ззб.ззсс.гп ззе!2.ззсс.гп Предположим, пользователь заказывает 8 компьютеров, т.е. и' = 8 в команде шрйгпп. Система МР! распределит созданные виртуальные компьютеры по физическим следующим образом: К1азс — О !слева имя физического, справа номер виртуального компьютеров), 1Сдс-а — 1, ззй — 2, ззе!2 — 3, К1азг — 4, тгдс-а — Б, ззд — 6, яяе!2 — 7. Перед запуском программа - ргоягащ.ехе предварительно должна быть размножена во всех физических компьютерах в одноименной директории, например, Коше/пале р/ргойгавв ехе. 2.
Количество и чередование имен компьютеров в списке может быть самым разнообразным. допустим, у нас та же вычислительная система и тот же заказ виртуальных компьютеров, что и в предыдущем случае. Файл со списком компьютеров может быть и таким: К1аяс,ззсс.гп 1се!с-а.ззсс.гп ззб.зясс.гп ззд2 язсс.гп яя62 ззсс.гп яз<1.ззсс.гп 1сдс-а ззсс.гп К1азс.язсс.гп В этом случае система МР! распределит созданные виртуальные компьютеры по физическим следующим образом: К1азс — О (слева нмя физического, справа номер виртуального компьютеров), 1сдс-а — 1, ззе! — 2, зяе!2 — 3, ззе!2 - 4, ззе! — Б, 1се!с-а - б, К1азс — 7.