- •Средства разработки параллельных и распределенных
- •План
- •Литература
- •Средства разработки
- •Поддержка параллелизма в языках программирования
- •Языки без поддержки параллелизма
- •Языки с явной поддержкой параллелизма
- •Языки с неявной поддержкой параллелизма
- •Компиляторы с автораспараллеливанием
- •Языки для создания распределнных программ
- •Средства отладки
- •Средства оптимизации
- •Параллельные математические библиотеки
- •Интерфейс операционных систем
- •Работа с процессами
- •Пример fork
- •Пример fork.c
- •Пример Exec
- •Пример exec
- •Наследование открытых файлов
- •Файловые операции
- •Файловые операции
- •Переназначение файлового дескриптора
- •Пример перенаправления ввода вывода
- •Пример выполнения
- •Взаимодействие между процессами
- •Конвейеры
- •Пример
- •Пример выполнения
- •Общая память
- •Функции работы с общей памятью
- •Пример работы с общей памятью
- •Пример выполнения
- •Семафоры
- •Функции работы с семафорами
- •Операции с семафорами
- •Пример программы работы c общей памятью и семафором
- •Вопросы ?
Средства разработки параллельных и распределенных
программ
Судаков А.А.
“Параллельные и распределенные вычисления” Лекция 19
План
Языки программирования
Средства отладки и профилирования
Оптимизация программ
Математические библиотеки
Стандартный интерфейс операционных систем
Стандарт POSIX
Литература
Язык неявным параллелизмом Sisal http://www2.cmp.uea.ac.uk/~jrwg/Sisal/
Язык с поддержкой параллелизма erlang http://www.erlang.org/
Язык с неявной поддержкой параллелизма pH http://www.csg.lcs.mit.edu/projects/languages/ph.sh tml
Автораспараллеливающие компиляторы http://www.pgroup.com/
Adaptor http://www.scai.fraunhofer.de/EP-CACHE/adaptor/ www/adaptor_home.html
Язык программирования E http://www.erights.org/
Средства разработки
Языки программирования
Препроцессор
Компилятор или транслятор
Библиотеки (API)
Интерфейс (API) операционных систем
Средства отладки программ
Отладчик
Средства проверки правильности кода
Средства повышения производительности
Оптимизация исполняемого кода
Профилирование
Поддержка параллелизма в языках программирования
Языки программирования
Без поддержки параллелизма
Язык программирования не включает средства создания параллельных программ
С явной поддержкой параллелизма
В язык программирования входят конструкции, которые позволяют разработчику указать критические разделы, общие переменные, топологию и т.д.
С неявной поддержкой параллелизма
В языке программирования нет явных конструкций, которые позволяют пользователю указать наличие параллельных участков, но есть определенные ограничения, которые позволяют коду выполняться на нескольких процессорах
Компиляторы с автораспараллеливанием
Для языка без поддержки параллелизма компилятор позволяет на основании последовательной программы сгенерировать параллельный код для того или другого типа машины
Языки без поддержки параллелизма
С, C++, Fortran, Pascal
Рассчитаны на создание только последовательных программ
Возможность создания параллельный программ вводится с помощью вызовов библиотечных функций или интерфейсов операционной системы
socket
Pthread
OpenMP
MPI
PVM
Большинство параллельных программ разрабатывается таким образом
Языки с явной поддержкой параллелизма
Расширения к «классическим» языкам программирования
К языку программирования (Fortran, Pascal, C, C++) добавляется дополнительный набор инструкций для явного указания участков, которые выполняются параллельно
mpC (multiprocessing C)
HPC (High Performance Fortran)
OpenMP
Языки с внутренней поддержкой параллельных конструкций
Java
erlang
Языки с неявной поддержкой параллелизма
Язык не имеет специальных конструкций для указания участков параллельного выполнения
Синтаксис языка имеет специфический вид для облегчения автораспараллеливания
Транслятор или компилятор сам выполняет распараллеливание кода
Sisal
pH
Компиляторы с автораспараллеливанием
На основе последовательной программы на языке без поддержки параллелизма создает параллельный код
Portland group – автораспараллеливание (С, С++, Fortran)
Absoft – препроцессор Fortran для вставки библиотечный вызовов с обменом сообщениями
Adaptor – препроцессор для автораспараллеливания
Языки для создания распределнных программ
Без поддержки распределенного программирования
Через библиотечные вызовы
С явной поддержкой распределнности
Специальные конструкции для работы с удаленными объектами
E
SR
CORBA IDL