Параллельные вычисления. Баканов В.М. - 96 стр.

UptoLike

Составители: 

- 96 -
потоков данных (выражение можно вычислить, как только будут вычислены
его операнды); Sisal-программы оказались эффективными, но к концу 90-х
г.г. проект был закрыт. Язык
NESL
(Guy Blelloch, Carnegie Mellon University,
1996,
http://www.cs.cmu.edu/ ~SCandAL/nesl.html
) представляет собой функцио-
нальный язык с параллельностью по данным и в целом соответствует модели
NESL (концепция работы и глубины). Функциональный язык
Eden
(Philipps
Universität Marburg, Германии и Universidad Complutense, Мадрид, 1998,
http://www.uni-marburg.de/welcome.html, http://www.ucm.es/UCMD.html
) расширяет
функциональный подход языка Haskell (см. далее подраздел 4.3.2) путем от-
мены механизмаленивых (отложенных) вычислений’ (lazy evaluation) в мо-
мент распараллеливания вычислений.
Информацию и документацию по параллельным языкам и свободно рас-
пространяемые версии можно найти на
http://www.parallel.ru/tech/tech_dev/par_lang.html,
http://www.hensa.ac.uk/parallel
, по-
лезные ссылки -
http://computer.org/parascope
.
К настоящему времени выкристаллизировались стандартные технологии,
существенного (качественного) изменения которых ожидать в разумное вре-
мя не приходится. Ниже кратко рассматриваются основанные на распределе-
нии данных и вычислений системы параллельного программирования HPF,
OpenMP и DVM, специализированный язык mpC высокого уровня для про-
граммирования разнородных сетей, низкоуровневая технология программи-
рования обменов сообщениями MPI, PVM и язык Linda, методы автоматиза
-
ции распараллеливания вычислений (T-система, НОРМА), см. [1,4,5,8].
Весьма показательным является связанное с проблемой распараллеливания
алгоритмов обращение к результатам (давно разрабатываемой) теории
функционального программирования (Т-система, НОРМА; чуть подробнее
см. подраздел 4.3.2). Практическая реализация положений функционального
программирования фактически переводит центр тяжести с операторного
управления процессом обработки данных на процесс, управляемый данными
(см. подраздел
2.5).
Можно реализовать data flow на чисто алгоритмическом уровне (аппарат-
ная часть остается control flow и выполняет традиционно императивные ин-
струкции), именно для этого как нельзя подходят идеи функционального про-
граммирования.
4.1 Дополнения известных последовательных алгоритмических
языков средствами параллельного программирования
Простейший (и исторически совершенный) путь создания системы созда-
ния параллельных программдополнить традиционные языки
программи-
рования средствами описания распараллеливания вычислений (а возможно, и
данных). При этом достигается минимум модифицирования существующих
                                          - 96 -


потоков данных (выражение можно вычислить, как только будут вычислены
его операнды); Sisal-программы оказались эффективными, но к концу 90-х
г.г. проект был закрыт. Язык NESL (Guy Blelloch, Carnegie Mellon University,
1996, http://www.cs.cmu.edu/ ~SCandAL/nesl.html) представляет собой функцио-
нальный язык с параллельностью по данным и в целом соответствует модели
NESL (концепция работы и глубины). Функциональный язык Eden (Philipps
Universität Marburg, Германии и Universidad Complutense, Мадрид, 1998,
http://www.uni-marburg.de/welcome.html, http://www.ucm.es/UCMD.html) расширяет
функциональный подход языка Haskell (см. далее подраздел 4.3.2) путем от-
мены механизма ‘ленивых (отложенных) вычислений’ (lazy evaluation) в мо-
мент распараллеливания вычислений.
   Информацию и документацию по параллельным языкам и свободно рас-
пространяемые                 версии            можно              найти              на
http://www.parallel.ru/tech/tech_dev/par_lang.html, http://www.hensa.ac.uk/parallel, по-
лезные ссылки - http://computer.org/parascope.
   К настоящему времени выкристаллизировались стандартные технологии,
существенного (качественного) изменения которых ожидать в разумное вре-
мя не приходится. Ниже кратко рассматриваются основанные на распределе-
нии данных и вычислений системы параллельного программирования HPF,
OpenMP и DVM, специализированный язык mpC высокого уровня для про-
граммирования разнородных сетей, низкоуровневая технология программи-
рования обменов сообщениями MPI, PVM и язык Linda, методы автоматиза-
ции распараллеливания вычислений (T-система, НОРМА), см. [1,4,5,8].
   Весьма показательным является связанное с проблемой распараллеливания
алгоритмов обращение к результатам (давно разрабатываемой) теории
функционального программирования (Т-система, НОРМА; чуть подробнее
см. подраздел 4.3.2). Практическая реализация положений функционального
программирования фактически переводит центр тяжести с операторного
управления процессом обработки данных на процесс, управляемый данными
(см. подраздел 2.5).
   Можно реализовать data flow на чисто алгоритмическом уровне (аппарат-
ная часть остается control flow и выполняет традиционно императивные ин-
струкции), именно для этого как нельзя подходят идеи функционального про-
граммирования.

 4.1 Дополнения известных последовательных алгоритмических
     языков средствами параллельного программирования

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