Введение в архитектуру компьютеров

ЯЗЫКИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ


При эксплуатации первых многопроцессорных ВС для повышения эффективности их работы возникла необходимость в параллельных алгоритмах, а следовательно, и в языках параллельного программирования

(ЯПП), имеющих специальные средства для описания параллельных процессов. ЯПП в первую очередь должны предоставлять программистам средства для описания явного и обнаружения скрытого параллелизма. На сегодняшний день разработаны параллельные алгоритмы во многих областях обработки информации. Поэтому нужен язык, который позволял бы описывать имеющиеся параллельные алгоритмы. На создание подобных языков существенное влияние оказывают принципы, заложенные в языках моделирования различных явлений, ибо они включают мощные средства отображения параллельных процессов. Кроме того, при разработке языков необходимо учитывать те средства описания параллелизма, которые присутствуют в современных языках программирования (АЛГОЛ-68, ПАСКАЛЬ, PL/1, МОДУЛА и др.), и структуру параллельных методов численного решения задач.

Среди ЯПП можно выделить две группы языков исходя из средств задания взаимодействий между параллельными процессами:

· взаимодействия фрагментов (процессов) через доступ к общим пе-ременным;

· взаимодействия посредством передачи межпроцессорных сообщений.

Еще один из возможных признаков классификации языков – число вовлекаемых во взаимодействие процессов. Можно выделить языки, обеспечивающие явное задание:

· индивидуальных (парных) взаимодействий между фрагментами: механизм подчиненных процессов ОС/360, язык взаимодействующих процессов Хоара, ОССАМ, язык граф-схем;

· групповых взаимодействий между фрагментами (процессами): ОВС-КОБОЛ (ФОРТРАН), параллельный КОБОЛ, языковые средства суперкомпьютера ИЛЛИАК-4.

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

· кто и когда осуществляет разбиение исходной программы и распределение по процессорам;

· какое время сохраняется разбиение;

· каковы максимально неделимые участки;

· какие критерии используются при разбиении и распределении.



Содержание раздела