14.2.3. Система программирования mpС
Язык mpС ‒ первый язык высокого уровня, разработанный специально
для программирования неоднородных сетей. Он имеет все средства для
определения основных свойств параллельного алгоритма, влияющие на
скорость его выполнения в неоднородной вычислительной среде:
необходимое число параллельных процессов; объем вычислений и
передаваемых данных в рамках каждого процесса; сценарий взаимодействия
процессов и т.д. mpC позволяет менять эти характеристики динамически во
время выполнения программы. Информация, извлеченная из описания
параллельного алгоритма, вместе с данными о реальной производительности
процессоров
и
коммуникационных
каналов,
помогает
системе
программирования mpC найти эффективный способ отображения процессов
mpC-программы на компьютеры сети.
148
Язык и система программирования mpC разработана в Институте
системного программирования РАН. Детали описания и текущее состояние
проекта можно найти на сайте http://www.ispras.ru/~mpc.
Основы программирования на
mpC
mpC-программа
‒
множество
параллельных
процессов,
взаимодействующих посредством неявной передачи сообщений. Количество
процессов, составляющих программу и характеристики компьютеров, на
которых эти процессы выполняются, указываются пользователем программы
в момент ее запуска. Реализацию этого механизма обеспечивают внешние
средства. Код на mpC, составленный в соответствии с моделью SPMD,
управляет тем, какие именно вычисления выполняются каждым из процессов
программы.
Группа процессов, совместно выполняющих некоторый параллельный
алгоритм, в языке mpC называется сетью. Сеть в mpC ‒ механизм,
позволяющий программисту абстрагироваться от реальных физических
процессов параллельной программы. В простом случае сеть - множество
виртуальных процессоров.
Определение сети в программе вызывает создание группы реальных
процессов, представляющей эту сеть: каждому виртуальному процессору
соответствует отдельный процесс параллельной программы. В разные
моменты времени выполнения параллельной программы один и тот же
реальный
параллельный
процесс
может
представлять
различные
виртуальные процессоры различных сетей.
Вопросы и задания
1.
Какие конструкции языка С препятствуют автоматическому
распараллеливанию программ?
2.
Отвечая на предыдущий вопрос, вы сформировали список
конструкций,
препятствующих
автоматическому
распараллеливанию
программ. Внимательно проанализируйте полученный список и подумайте,
149
верно ли такое утверждение: "Любую программу, в которой нет конструкций
из списка, можно автоматически распараллелить"?
3.
В цикле содержится вызов функции. Какие конструкции языков
необходимо учитывать, чтобы определить, являются ли все итерации данного
цикла независимыми или нет? Рассмотрите языки С и Fortran.
4.
Какой вычислительной системе лучше соответствует технология
ОрепМР: вычислительному кластеру из рабочих станций или SMP-
компьютеру?
5.
Чем отличаются понятия "процесс" и "нить"?
6.
Верно ли утверждение: "OpenMP-программы работают согласно
модели SingleProgram Multiple Data (SPMD)?"
7.
Чем различаются общие и локальные переменные в
последовательной секции ОреnМР-программы?
8.
Допускает ли ОреnМР изменение числа параллельных нитей по
ходу работы программы?
9.
Как будет обрабатываться такая конструкция: в параллельном
цикле стоит вызов функции, в теле которой так же есть параллельный цикл?
10.
Почему в ОрепМР нет конструкций, аналогичных директивам
DVM ALIGN и
DISTRIBUTE?
11.
Предположим, что в ОрепМР не было бы директивы BARRIER.
Смоделируйте барьерную синхронизацию нитей с помощью других средств
ОрепМР, в частности, с помощью механизма критических секций.
12.
Можно ли автоматически конвертировать DVM-программу в
программу на ОреnМР?
13.
Напишите с помощью ОреnМР, DVM и трС программы
перемножения двух матриц, решения системы линейных уравнений методом
Гаусса, нахождения обратной матрицы. Проанализируйте выполненную
работу с точки зрения эффективности полученных программ, простоты
написания программ, переносимости программ.
150
14.
Проанализируйте, что общего и чем различаются классы
переменных вОреnМР, DVM и трС.
15.
Для чего в DVM введена директива ALIGN?
16.
Сравните модели выполнения параллельных циклов в ОреnМР и
DVM.
17.
Для нахождения суммы элементов вектора в рамках ОреnМР при
сложении частичных сумм можно воспользоваться критической секцией. Как
выполнить эту же операцию в DVM?
Do'stlaringiz bilan baham: |