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

UptoLike

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

- 95 -
4 Технологии параллельного программирования
Производительность параллельных вычислительных систем еще более за-
висит отинтеллектуальности программного обеспечения, нежели для
обычных последовательных; при этом обычной ситуацией является разоча-
рование (априори излишне восторженного) программиста, получившего вме-
сто ожидаемого снижения времени вычислений существенное повышение
оного (даже по сравнению с последовательным вариантом программы).
При разработке
программ для параллельных многопроцессорных вычис-
лительных систем (параллельных программ) проблема переносимости (воз-
можность исполнения на различных параллельных вычислительных систе-
мах) и живучести (возможность долговременного использования) также при-
обретает большее значение, чем при традиционном (последовательном) про-
граммировании. Дело, конечно, вмолодости’ (и связанным с этим быстрым
их прогрессом вширь и
вглубь) технологий параллельных вычислений вооб-
ще.
Для записи параллельных программ были созданы параллельные языки.
Они могут быть совершенно новыми (например, ориентированный на про-
граммирование транспьютерных устройств язык
OCCAM
- C.Hoar, 1984), а
могут быть основаны на традиционных языках - существуют параллельный
C, параллельные Pascal, Fortran и даже
ParJava
(Институт Системного Про-
граммирования РАН,
http://www.ispras.ru/~javap/parallel_java/par_java/
parjava.html
). Другим языком параллельного программирования, использую-
щим объектно-ориентированный подход и поддерживающим поддерживает
параллельность по задачам и по данным, является
Оrса
(Henri Bal, Амстер-
дамский университет, 1989,
http://www.cs.vu.nl/orca
). Язык
ZPL
(Larry Snyder,
http://www.cs.washington.edu/research/zpl
) обеспечивает параллельность по дан-
ным, является переносимым и достаточно производительным. Язык
Cilk
(Charles Leiserson, Massachusetts Institute of Technology,
http://supertech.ics.mit.edu/cilk
) расширяет ANSI C пятью (ключевые слова cilk,
spawn, synch, inlet и abort) несложными инструментами для параллельного
программирования, разработан для эффективного выполнения параллельных
программ на симметричных мультипроцессорах с разделяемой памятью,
поддерживает параллелизм по вычислениям и по данным, позволяет эффек-
тивно работать с параллельной рекурсией; с использованием 5-й версии Cilk
создано несколько шахматных программ (одна из них,
Cilkchess
, показала хо-
рошие результаты на всемирном компьютерном чемпионате по шахматам
14
÷
20.VI.1999 г. в Paderborn, Germany).
Первым функциональным языком, созданным специально для численных
расчетов, стал
Sisal
(Streams and Iteration in a Single Assignment Language,
Lawrence Livermore National Laboratory, 1985), вторая версия языка описана в
(J.T.Feo, D.C.Cann, R.R.Oldehoeft, 1990). Реализация Sisal основана на модели
                                           - 95 -


  4 Технологии параллельного программирования

   Производительность параллельных вычислительных систем еще более за-
висит от ‘интеллектуальности’ программного обеспечения, нежели для
обычных последовательных; при этом обычной ситуацией является разоча-
рование (априори излишне восторженного) программиста, получившего вме-
сто ожидаемого снижения времени вычислений существенное повышение
оного (даже по сравнению с последовательным вариантом программы).
   При разработке программ для параллельных многопроцессорных вычис-
лительных систем (параллельных программ) проблема переносимости (воз-
можность исполнения на различных параллельных вычислительных систе-
мах) и живучести (возможность долговременного использования) также при-
обретает большее значение, чем при традиционном (последовательном) про-
граммировании. Дело, конечно, в ‘молодости’ (и связанным с этим быстрым
их прогрессом вширь и вглубь) технологий параллельных вычислений вооб-
ще.
   Для записи параллельных программ были созданы параллельные языки.
Они могут быть совершенно новыми (например, ориентированный на про-
граммирование транспьютерных устройств язык OCCAM - C.Hoar, 1984), а
могут быть основаны на традиционных языках - существуют параллельный
C, параллельные Pascal, Fortran и даже ParJava (Институт Системного Про-
граммирования             РАН,         http://www.ispras.ru/~javap/parallel_java/par_java/
parjava.html). Другим языком параллельного программирования, использую-
щим объектно-ориентированный подход и поддерживающим поддерживает
параллельность по задачам и по данным, является Оrса (Henri Bal, Амстер-
дамский университет, 1989, http://www.cs.vu.nl/orca). Язык ZPL (Larry Snyder,
http://www.cs.washington.edu/research/zpl) обеспечивает параллельность по дан-
ным, является переносимым и достаточно производительным. Язык Cilk
(Charles        Leiserson,        Massachusetts       Institute     of       Technology,
http://supertech.ics.mit.edu/cilk) расширяет ANSI C пятью (ключевые слова cilk,
spawn, synch, inlet и abort) несложными инструментами для параллельного
программирования, разработан для эффективного выполнения параллельных
программ на симметричных мультипроцессорах с разделяемой памятью,
поддерживает параллелизм по вычислениям и по данным, позволяет эффек-
тивно работать с параллельной рекурсией; с использованием 5-й версии Cilk
создано несколько шахматных программ (одна из них, Cilkchess, показала хо-
рошие результаты на всемирном компьютерном чемпионате по шахматам
14 ÷ 20.VI.1999 г. в Paderborn, Germany).
   Первым функциональным языком, созданным специально для численных
расчетов, стал Sisal (Streams and Iteration in a Single Assignment Language,
Lawrence Livermore National Laboratory, 1985), вторая версия языка описана в
(J.T.Feo, D.C.Cann, R.R.Oldehoeft, 1990). Реализация Sisal основана на модели