1. ВВЕДЕНИЕ

Современный этап развития вычислительной техники ха­рактеризуется интенсивными исследованиями в области па­раллельных вычислительных систем и параллельного програм­мирования, и новые концепции в технологии, архитектуре и организации ЭВМ привели к созданию таких систем, способ­ных выполнять большое число параллельных преобразований. Когда такие параллельные вычислительные системы станут реальностью и будет создано программное обеспечение, по­зволяющее достигнуть максимального соотношения эффектив­ности и стоимости, они, несомненно, дадут импульс новым исследованиям и разработкам и помогут открыть еще не изве­стные методы и расширить области приложений. На сегодняш­ний день наши знания о параллельных вычислениях весьма скромны в сравнении с результатами в области последователь­ных вычислений, и для того, чтобы в полной мере можно было бы использовать все преимущества предлагаемых параллель­ных архитектур, необходимо решить много сложных проблем в области языков программирования и компиляторов.

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

В течение последних 20-30 лет пристальное внимание многих ученых было привлечено к параллельной обработке данных и теории сложности алгоритмов. Дело в том, что даль­нейшее повышение скорости вычислений за счет создания все более быстрых ЭВМ станет со временем либо невозможным, либо экономически невыгодным. Наиболее естественным тогда может быть именно параллельное соединение нескольких ЭВМ. Имеяр процессоров, мы можем получить значительное повышение быстродействия (хотя и несколько меньшее, чем в р раз). Однако после многих лет работы и после того, как было получено большое число превосходных теоретических резуль­татов, параллельные вычисления триумфа не достигли. Основ­ными причинами этого можно назвать следующие:

1. Все реализованные параллельные системы применялись для решения задач, которые можно назвать задачами «с внут­ренним параллелизмом». Так, например, система наблюдения РЕРЕ производит слежение за некоторым количеством воздуш­ных целей, и каждому процессору поручена своя цель, над ко­торой он работает независимо от других процессоров и одно­временно с ними. Но исследования показали, что таких задач с внутренним параллелизмом мало, и почти все применяемые алгоритмы имеют чисто последовательный характер.

2. У математиков есть обыкновение при отсутствии у них нужной ЭВМ создавать абстрактную машину (теоретическую модель), оставляя инженерам заботы по ее практической реа­лизации. К сожалению, такая абстрактная машина оказывает­ся непрактичной, поскольку теоретическая модель предпола­гает, что все р процессоров связаны с общей памятью большо­го объема. Теоретически всегда, когда два или более процессо­ров запрашивают из памяти одно и то же слово, они мгновен­но его получают. Однако практически это почти недостижи­мо. На практике подобные ситуации иногда приводят к стран­ному поведению системы: известен пример системы, которая снижала свою производительность при добавлении новых процессоров. Кроме того, в теоретической модели число про­цессоров не ограничено. Это, конечно, было бы неплохо, по­тому что, например, параллельное перемножение двух матриц размера п x п требует порядка п3 процессоров. При довольно «скромном» п =100 потребовался бы миллион процессоров.

3. В одной из первых параллельных систем, ILLIAC-1V, каждый подчиненный процессор (ПП) имеет свою «локаль­ную память». К сожалению, между данными, записанными в локальных устройствах памяти, могут быть такие зависимос­ти, при которых из 64 ПП работает только один, а остальные бездействуют. Эту ситуацию можно назвать «вырождением па­раллельности в последовательность», и попытки уменьшить количество подобных ситуаций не всегда увенчивались успе­хом.

4. Довольно важной целью распараллеливания вычисле­ний является достижение надежности и живучести. Надеж­ность мы определяем как способность системы обнаружить неисправный блок и отключить его. Под живучестью систе­мы мы будем понимать возможность продолжения работы после отключения неисправного блока. ГЬЫАС и аналогич­ные ему системы не обладают ни тем, ни другим свойством: если некоторый блок вышел из строя, то система сможет про­должить работу только после его замены или ремонта.

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