Принципы параллельной обработки


Функциональная схема БИС обычно реализует принцип действия последовательных ЭВМ, когда в единицу времени исполняется только одна команда. При этом в работе участвует довольно малая часть вентилей микросхемы, в результате быстродействие всего чипа оказывается меньше, чем максимальная производительность всех устройств Vnc <<Vmax.

Требования к вычислительной мощости неуклонно растут и превосходят не только Vnc, но даже максимальные вычислительные мощности микросхем Vmax, поэтому необходимо использовать максимальную мощность микросхемы Vmax максимальную часть вентилей микросхемы. А так как рост быстродействия электроники не безграничен, необходимо использовать суммарную мощь функциональных устройств микросхемы - применять параллелизм.

Параллелизм - в данном контексте это возможность одновременного выполнения нескольких арифметико-логических и служебных операций.

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

Особое значение приобретает параллельная обработка для ЭВМ пятого поколения, предназначенных для выполнения алгоритмов искусственного интеллекта. Такие алгоритмы часто носят комбинаторный характер и требуют большой вычислительной мощности.

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

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

Язык программирования является средством переноса параллелизма алгоритма на параллелизм ЭВМ, и тип языка может в сильной степени влиять на результат переноса.

Для сравнения параллельных алгоритмов необходимо уметь оценивать степень параллелизма. Одновременное выполнение операций возможно, если они логически независимы. Таким образом, описание зависимостей операций по данным полностью определяет параллелизм некоторого метода вычислений.

Программные объекты A и B (команды, операторы, программы) являются независимыми и могут выполняться параллельно, если выполняется следующее условие:

(1.1)

где In(A) - набор входных, а Out(A) - набор выходных переменных объекта A. Если условие (1.1) не выполняется, то между A и B существует зависимость и они не могут выполняться параллельно. Если условие (1.1) нарушается в первом терме, то такая зависимость называется прямой. Приведем пример:

A: R = R1 + R2
B: Z = R + C

Здесь операторы A и B не могут выполняться одновременно, так как результат A является операндом B.

Если условие нарушено во втором терме, то такая зависимость называется обратной:

A: R = R1 + R2
B: R1 = C1 + C2

Здесь операторы A и B не могут выполняться одновременно, так как выполнение B вызывает изменение операнда в A.

Наконец, если условие не выполняется в третьем терме, то та-кая зависимость называется конкуренционной:

A: R = R1 + R2
B: R = C1 + C2

Здесь одновременное выполнение операторов дает неопределенный результат.

Увеличение параллелизма любой программы заключается в поиске и устранении указанных зависимостей.

Формы параллелизма

Форма параллелизма обычно достаточно просто характеризует некоторый класс прикладных задач и предъявляет определенные требования к структуре, необходимой для решения этого класса задач параллельной ЭВМ.

Изучение ряда алгоритмов и программ показало, что можно выделить следующие основные формы параллелизма: естественный или векторный параллелизм; параллелизм независимых ветвей; параллелизм смежных операций или скалярный параллелизм.

Векторный параллелизм. Наиболее распространенной в обработке структур данных является векторная операция (естественный параллелизм). Вектор - одномерный массив, который образуется из многомерного массива, если один из индексов не фиксирован и пробегает все значения в диапазоне его изменения. В параллельных языках этот индекс обычно обозначается знаком *. Пусть, например, A, B, C - двумерные массивы. Тогда можно записать такую векторную операцию:

C (*, j) = A (*, j) + B (*, j).

На последовательных языках эта операция выражается с помощью цикла DO:

DO 1 I = 1,N
1 C(I,J) = A(I,J) + B(I,J)

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

Области применения векторных операций над массивами обширны: цифровая обработка сигналов (цифровые фильтры); механика, моделирование сплошных сред; метеорология; оптимизация; задачи движения; расчеты электрических характеристик БИС и т. д.

Параллелизм независимых ветвей. Суть параллелизма независимых ветвей состоит в том, что в программе решения большой задачи могут быть выделены независимые программные части - ветви. Под независимостью ветвей в первую очередь понимается независимость по данным.

В параллельных языках запуск параллельных ветвей осуществляется с помощью оператора FORK M1, M2 , ..., ML, где M1, M2, ..., ML - имена независимых ветвей. Каждая ветвь заканчивается оператором JOIN (R,K), выполнение которого вызывает вычитание единицы из ячейки памяти R. Так как в R предварительно записано число, равное количеству ветвей, то при последнем срабатывании оператора JOIN (все ветви выполнены) в R оказывается нуль и управление передается на оператор K. Иногда в JOIN описывается подмножество ветвей, при выполнении которого срабатывает этот оператор.

В последовательных языках аналогов операторам FORK и JOIN нет и ветви выполняются друг за другом.

Скалярный параллелизм. При исполнении программы регулярно встречаются ситуации, когда исходные данные для i-й операции вырабатываются заранее, например, при выполнении (i-2)-й или (i-3)-й операции. Тогда при соответствующем построении вычислительной системы можно совместить во времени выполнение i-й операции с выполнением (i-1)-й, (i-2)-й, ... операций. В таком понимании скалярный параллелизм похож на параллелизм независимых ветвей, однако они очень отличаются длиной ветвей и требуют разных вычислительных систем. Рассмотрим пример.

Пусть имеется программа для расчета ширины запрещенной зоны транзистора и в этой программе есть участок - определение энергии примесей по формуле

Тогда последовательная программа для вычисления E будет такой:

F1 = M * Q ** 4 * P ** 2
F2 = 8 * E0 ** 2 * E ** 2 * H ** 2
E = F1/F2

Здесь имеется параллелизм, но при записи на Фортране (показано выше) или Ассемблере у нас нет возможности явно отразить его. Явное представление параллелизма для вычисления E задается ярусно-параллеьной формой (ЯПФ) (см. рис. 1.1).

Рис. 1.2. ЯПФ вычисления величины E

Ширина параллелизма первого яруса этой ЯПФ (первый такт) сильно зависит от числа операций, включаемых в состав ЯПФ. Так, в примере для l1 = 4 параллелизм первого такта равен двум, для l1 = 12 параллелизм равен пяти.

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

Для скалярного параллелизма часто используют термин мелкозернистый параллелизм (МЗП), в отличие от крупнозернистого параллелизма (КЗП), к которому относят векторный параллелизм и параллелизм независимых ветвей.

Организация и эффективность параллельных ЭВМ

Критерии классификации параллельных ЭВМ могут быть разными: вид соединения процессоров, способ функционирования процессорного поля, область применения и т.д.

Одна из наиболее известных классификаций параллельных ЭВМ предложена Флинном и отражает форму реализуемого ЭВМ параллелизма. Основными понятиями классификации являются "поток команд" и "поток данных". Под потоком команд упрощенно понимают последовательность команд одной программы. Поток данных - это последовательность данных, обрабатываемых одной программой.

Согласно классификации Флинна имеется четыре больших класса ЭВМ:

  1. ОКОД - одиночный поток команд-одиночный поток данных. Это последовательные ЭВМ, в которых выполняется единственная программа, т. е. имеется только один счетчик команд и одно арифметико-логическое устройство (АЛУ). Сюда можно, например, отнести все модели ЕС ЭВМ;
  2. ОКМД - одиночный поток команд-множественный поток данных. В таких ЭВМ выполняется единственная программа, но каждая ее команда обрабатывает много чисел. Это соответствует векторной форме параллелизма. В классе ОКМД будут рассмотрены два типа ЭВМ: с арифметическими конвейерами (векторно-конвейерные ЭВМ) и процессорные матрицы. К классу ОКМД-ЭВМ относятся машины CRAY-1, ПС-2000, ILLIAC-IV;
  3. МКОД - множественный поток команд-одиночный поток данных. Подразумевается, что в данном классе несколько команд одновременно работает с одним элементом данных, однако эта позиция классификации Флинна на практике не нашла применения;
  4. МКМД - множественный поток команд-множественный поток данных. В таких ЭВМ одновременно и независимо друг от друга выполняется несколько программных ветвей, в определенные промежутки времени обменивающихся данными. К машинам этого класса относится ЭВМ "Эльбрус". В классе МКМД будут рассмотрены машины двух типов: с управлением от потока команд (IF - instruction flow) и управлением от потока данных (DF - data flow). Если в ЭВМ первого типа используется традиционное выполнение команд по ходу их расположения в программе, то применение ЭВМ второго типа предполагает активацию операторов по мере их текущей готовности.

В случае DF все узлы информационного графа задачи представляются в виде отдельных операторов:

КОП О1, О2, A3, БС,

где О1, О2 - поля для приема первого и второго операндов от других операторов; A3 - адрес (имя) оператора, куда посылается результат; БС - блок событий. В БС записывается число, равное количеству операндов, которое нужно принять, чтобы начать вы-полнение данного оператора. После приема очередного операнда из БС вычитается единица; когда в БС оказывается нуль, оператор начинает выполняться. Программа полностью повторяет ИГ, но ее операторы могут располагаться в памяти произвольно. Выполняться они будут независимо от начального расположения в следующем порядке:


такты

номера операторов

1

1,3

2

2

3

4

Во всех случаях последовательность вычислений определяет-ся связями операторов, поэтому оператор 2 никогда не будет выполнен раньше оператора 1, оператор 4 - раньше оператора 3, т. е. сохраняется логика ИГ. Вычислительный процесс управляется готовностью данных. Это и есть управление потоком данных. Считается, что такая форма представления ИГ обеспечивает наибольший потенциальный параллелизм.

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

Вопрос об эффективности параллельных ЭВМ возникает на разных стадиях исследования и разработки ЭВМ. Следует различать эффективность параллельных ЭВМ в процессе их функцио-нирования и эффективность параллельных алгоритмов.

В зависимости от стадии разработки полезными оказываются различные характеристики эффективности ЭВМ. Рассмотрим следующие характеристики:

  1. Ускорение r параллельной системы, которое используется на начальных этапах проектирования или в научных исследованиях для оценки предельных возможностей архитектуры.
  2. Быстродействие V, которое является главной характеристикой при конкретном проектировании или выборе существующей параллельной ЭВМ под класс пользовательских задач.

Ускорение определяется выражением:

r = T1/Tn,

где T1 - время решения задачи на однопроцессорной системе, а Tn - время решения той же задачи на n - процессорной системе.

Пусть W = Wск + Wпр, где W - общее число операций в задаче, Wпр - число операций, которые можно выполнять параллельно, а Wck - число скалярных (нераспараллеливаемых) операций.

Обозначим также через t время выполнения одной операции. Тогда получаем известный закон Амдала :

(1.2)

Здесь a = Wck /W - удельный вес скалярных операций.

Закон Амдала определяет принципиально важные для параллельных вычислений положения:

  1. Ускорение вычислений зависит как от потенциального параллелизма задачи (величина 1-a), так и от параметров аппаратуры (числа процессоров n).
  2. Предельное ускорение вычислений определяется свойствами задачи.

Пусть, например, a = 0,2 (что является реальным значением), тогда ускорение не может превосходить 5 при любом числе процессоров, то есть максимальное ускорение определяется потенци-альным параллелизмом задачи. Очевидной является чрезвычайно высокая чувствительность ускорения к изменению величины a.

Выражение (1.2) определяет ускорение только одного уровня вычислительной системы. Однако, реальные системы являются многоуровневыми как с точки зрения программных конструкций, так и по аппаратуре, что и показано в таблице.

Реальные параллельные ЭВМ обычно используют параллелизм нескольких уровней и полное ускорение такой ЭВМ R можно в первом приближении описать выражением:

(1.3)

где M - число вложенных уровней вычислений, используемых для распараллеливания, а ri - собственное ускорение уровня i, определяемое параллелизмом соответствующих данному уровню объектов: независимых задач, программ, ветвей, итераций цикла, операторов, отдельных операций выражения.

Таблица 1.1.

Уровни программных конструкций и соответствующие им структуры ЭВМ

№п/п

Уровни программны хконструкций для параллельного исполнения

Структуры вычислительных систем

1.

Независимые задачи и программы

Многомашинные системы

2.

Программы и подпрограммы одной задачи

МКМД-ЭВМ с общей и локальной памятью

3.

Ветви и циклы одной программы

МКМД-ЭВМ, ОКМД конвейерного типа или процессорные матрицы

4.

Операторы, выражения, линейные участки программ

Системы для суперскалярных вычислений

Наиболее важной характеристикой параллельных ЭВМ при проектировании или выборе новой ЭВМ является быстродействие. Различают следующие разновидности характеристик быстродействия:

1. Номинальное (максимальное, пиковое) быстродействие:

(1.4)

Здесь n - число процессоров или АЛУ; k - число различных команд в списке команд ЭВМ; γi - удельный вес команд i-го типа в программе, ti - время выполнения команды типа i. Если ti задавать в тактах, то выражение (1.4) будет определять архитектурную скорость, измеряемую числом команд, выполняемых за один такт. Этот параметр особенно важен для суперскалярных процессоров. Веса команд определяют путем сбора статистики по частотам команд в реальных программах. Известны смеси команд Гибсона, Флинна и ряд других.

Для микропроцессоров с сокращенной системой команд, в которых большинство команд выполняется за один такт, вычисление Vн упрощается:

Vн = n/t = n/f,

где f - частота синхронизации микропроцессора, а n - число одновременно выполняемых команд (для суперскалярных микропроцессоров).

Очевидно, что номинальное быстродействие определяет только свойства оборудования, причем, в предположении, что оно полностью загружено в каждом такте, что, конечно, далеко от действительности.

В качестве единицы быстродействия используются:

а) МИПС (MIPS-Million Instructions per Second) - как для целочисленных операций, так и для смеси команд, входящих в состав эталонной программы;

б) Мегафлопс (MFlops-Million Float Instructions per Second) - как для операций с плавающей запятой, так и для смеси команд с преобладанием плавающих команд.

2. Реальное быстродействие ЭВМ Vp определяется с учетом всех факторов, сопутствующих выполнению пользовательских программ. Наилучшим способом определения Vp было бы выполнение реальных пользовательских задач и измерение времени их выполнения, тогда можно было бы считать, что:

где k - число выполненных задач; zi - число выполненных в i-й задаче команд; Tk - время решения k задач.

Реальное быстродействие обычно в 5-10 раз меньше номинального.

Однако, при проектировании или выборе наиболее подходящей ЭВМ среди уже существующих, программы пользователя для этой ЭВМ еще не написаны. В этих случаях для характеристики быстродействия используются стандартные тестовые программы, называемые эталонами (benchmarks). Эти программы могут быть созданы искусственным путем с учетом статистики реальных программ, могут быть специальным набором частей реальных программ, могут быть смесью двух предыдущих типов программ. Главные требования к этим тестовым программам состоят в следующем:

  1. Тестовые программы должны учитывать эффективность работы операционной системы, компиляторов, системы ввода вывода, всех видов памяти (включая КЭШ), процессоров, то есть тех частей ЭВМ, которые работают при выполнении реальных программ.
  2. Тестовые программы должны быть достаточно точными, то есть давать результаты, которые будут близки к результатам, по-лученным при выполнении реальных программ. Наиболее извест-ны следующие тестовые программы: LINPACK, Livermore, Fortran Kernel, SPECint, SPECfp и др.

Основные этапы развития параллельной обработки

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

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

Появление параллельных ЭВМ с различной организацией (конвейерные ЭВМ, процессорные матрицы, многопроцессорные ЭВМ) вызвано различными причинами. Совершенствование этих ЭВМ происходило по внутренним законам развития данного типа машин.

Рассмотрим основные этапы совершенствования параллельных ЭВМ для каждого типа структур.

Конвейерные ЭВМ. Основополагающим моментом для развития конвейерных ЭВМ явилось обоснование академиком С.А.Лебедевым в 1956 г. метода, названного "принципом водопровода" (позже он стал называться конвейером). Прежде всего был реализован конвейер команд, на основании которого практи-чески одновременно были построены советская ЭВМ БЭСМ-6 (1957-1966 гг., разработка Института точной механики и вычислительной техники АН СССР) и английская машина ATLAS (1957-1963 гг.). Конвейер команд предполагал наличие многоблочной памяти и секционированного процессора, в котором на разных этапах обработки находилось несколько команд.

Конвейер команд позволил получить в ЭВМ БЭСМ-6 быстродействие в 1 млн. оп/с. В дальнейшем конвейеры команд совершенствовались и стали необходимым элементом всех быстродействующих ЭВМ, в частности, использовались в известных семействах ЭВМ IBM/360 и ЕС ЭВМ.

Следующим заметным шагом в развитии конвейерной обработки, реализованном в ЭВМ CDC-6600 (1964 г.), было введение в состав процессора нескольких функциональных устройств, позволяющих одновременно выполнять несколько арифметико-логических операций: сложение, умножение, логические операции.

В конце 60-х гг. был введен в использование арифметический конвейер, который нашел наиболее полное воплощение в ЭВМ CRAY-1 (1972-1976 гг.). Арифметический конвейер предполагает разбиение цикла выполнения арифметико-логической операции на ряд этапов, для каждого из которых отводится собственное оборудование. Таким образом, на разных этапах обработки нахо-дится несколько чисел, что позволяет производить эффективную обработку вектора чисел.

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

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

В 60-х гг. в Институте математики Сибирского отделения АН СССР под руководством доктора технических наук Э.В.Евреинова сформировалось комплексное научное направление "Однородные системы, структуры и среды", которое получило развитие не толь-ко в СССР, но и за рубежом. Книга "Однородные универсальные вычислительные системы высокой производительности", изданная в 1966 г., была одной из первых в мире монографий, посвященных этой теме. В работах по однородным средам и системам исследовались матрицы с различными связями между элементами и конфигурацией, а также с элементами разной сложности и составом функций.

Поскольку в 60-е гг. логические схемы с большим уровнем интеграции отсутствовали, то напрямую реализовать принципы функционирования процессорной матрицы, содержащей множество элементарных процессоров, не представлялось возможным. Поэтому для проверки основных идей строились однородные системы из нескольких больших машин. Так, в 1966 г. была построена система Минск-222, спроектированная совместно с Институтом математики Сибирского отделения АН СССР и минским заводом ЭВМ им. Г.К.Орджоникидзе. Система содержала до 16 соединенных в кольцо ЭВМ Минск-2. Для нее было разработано специальное математическое обеспечение.

Другое направление в развитии однородных сред, основанное на построении процессорных матриц, состоящих из крупных процессорных элементов с достаточно большой локальной памятью, возникло в США и связано с именами Унгера, Холланда, Слотника. Была создана ЭВМ ILLIAC-IV (1966-1975 гг.), которая надолго определила пути развития процессорных матриц. В машине использовались матрицы 8*8 процессоров, каждый с быстродействием около 4 млн. оп/с и памятью 16 кбайт. Для ILLIAC-IV были разработаны кроме Ассемблера еще несколько параллельных языков высокого уровня. ЭВМ ILLIAC-IV позволила отработать вопросы коммутации, связи с базовой ЭВМ, управления вычислительным процессом. Особенно ценным является опыт разработки параллельных алгоритмов вычислений, определивший области эффективного использования подобных машин.

Примерно в то же время в СССР была разработана близкая по принципам построения ЭВМ М-10. Затем процессорные матрицы стали разрабатываться и выпускаться в ряде стран в большом количестве. Широко известной советской ЭВМ этого класса являлась машина ПС-2000, разработанная Институтом проблем управления АН СССР и запущенная в 1982 г. в производство.

Одной из наиболее сложных частей процессорных матриц является система коммутации. Самые простые ее варианты - кольцо и регулярная матрица соединений, где каждый узел связан только с двумя или четырьмя соседними, сильно ограничивают класс эффективно решаемых задач. Поэтому на протяжении всего времени существования параллельной обработки разрабатывались коммутаторы с более широкими возможностями: многомерные кубы, универсальные коммутаторы, коммутационные среды. В СССР работы, связанные с коммутаторами для ПМ, наибольшее развитие получили в Таганрогском радиотехническом институте.

Многопроцессорные ЭВМ. Одной из первых полномасштабных многопроцессорных систем явилась система D825 фирмы "BURROUGHS". Начиная с 1962 г. было выпущено большое число экземпляров и модификаций D825.

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

Система D825 содержала до четырех ПЭ и 16 модулей памяти, соединенных матричным коммутатором, который допускал одновременное соединение любого процессора с любым блоком памяти.

Существует мнение, что система D825 получила широкое распространение потому, что для нее впервые была разработана полноценная операционная система ASOR, обеспечившая синхронизацию процессов и распределение ресурсов.

В дальнейшем в СССР и на Западе были разработаны многопроцессорные системы, в которых все большее внимание уделялось операционным системам, языкам программирования, параллельной вычислительной математике.

Совершенствование микроэлектронной элементной базы, появление в 80-х годах БИС и СБИС позволили перейти к реализации структур с очень большим количеством ПЭ. Появились разработки по систолическим массивам, реализации многопроцессорных систем с программируемой архитектурой, ЭВМ с управлением от потока данных.

Большая плотность упаковки транзисторов на кристалле позволила разместить в одной микросхеме несколько АЛУ. Это по-зволило реализовать принцип суперскалярной обработки.

Если в последовательной ЭВМ пользователь в процессе программирования задачи в основном следит за логикой метода вычислений, то в параллельной ЭВМ ему приходится дополнительно заниматься размещением данных и синхронизацией вычислительных процессов. Это означает, что процесс программирования существенно усложняется, особенно если программирование ведется на уровне Ассемблера, чтобы повысить эффективность использования дорогостоящих параллельных ЭВМ. Такое программирование доступно только профессионально подготовленным программистам.

По мере удешевления и более широкого распространения параллельных ЭВМ доступ к ним получили пользователи, которые не являются профессиональными программистами, поэтому вопрос о системах программирования значительно обострился. Для облегчения программирования для каждой ЭВМ стали создаваться параллельные ЯВУ. Так, для ILLIAC-IV было создано несколько языков: TRANQUIL, IVTRAN, GLYPNIR; для ЭВМ Эльбрус - язык ЭЛЬ-76 и адаптированы языки Алгол-68, Фортран, Паскаль и PL-1. Применение ЯВУ освобождает пользователя от знания многих деталей структуры конкретной ЭВМ. Однако полностью освободиться от влияния структуры ЭВМ на язык не удается, поэтому возникла проблема мобильности программного обеспечения, под которой понимают возможность переноса программ с одной параллельной ЭВМ на другую с минимум переделок или вообще без них.

Очевидным средством обеспечения мобильности является разработка и использование (в качестве стандартных) проблемно-ориентированных языков, включающих средства описания параллельных вычислений. К ним относятся языки Алгол-68, ADA, Фортран-8X.

Большое внимание уделяется разработке автоматических рас-параллеливателей последовательных программ для исполнения на параллельных машинах различных типов.

Наиболее радикальный путь автоматизации программирования вообще и параллельного в частности состоит в использовании методов искусственного интеллекта. В СССР это направление получило широкое развитие, разработаны системы программирования ДИЛОС, СПОРА, ПРИЗ.



Составлено по материалам книги Г.И. Шпаковский. Организация параллельных ЭВМ и суперскалярных процессоров