- •Технологии
- •План
- •Литература
- •Особенности технологий для параллельных вычислений
- •Требования к параллельным вычислениям
- •Модели параллельных вычислений
- •Топологии параллельных систем
- •Примеры топологий
- •Классы параллельных систем
- •Цель созданий программных технологий параллельных
- •Создание параллельных программ в модели с общей
- •Создание параллельных программ с обменом
- •Языки программирования с поддержкой параллелизма
- •Процессы
- •Составные части процесса
- •Память
- •Файловая система
- •Порождение процессов
- •Доступ к файловой системе
- •Работа с файловой
- •Память общего доступа
- •Конфликты при обращении к общим ресурсам: a – общая переменная
- •Семафоры
- •Синхронизация с помощью семафоров
- •Сигналы
- •Потоки
- •Стандарт OpenMP
- •Пример OpenMP
- •Обмен сообщениями
- •Системные API
- •Сокет
- •Диаграмма работы с
- •Синхронный и асинхронный обмен
- •API для асинхронных операций ввода-вывода
- •Сравнение синхронного и асинхронного ввода-вывода
- •Интерфейсы параллельного программирования
- •Message Passing Interface (MPI)
- •Диаграмма соответвия между сокетами, MPI и др
- •Основные определения
- •Разработка и запуск MPI программ
- •Пример MPI программы
- •Результат работы MPI программы
- •Реализации MPI
- •Parallel Virtual Machine (PVM)
- •Основные компоненты
- •Основные операции
- •Принцип создания параллельных программ
- •Пример запуска машины PVM
- •Пример PVM программы
- •Языки рассчитанные на параллельное
- •Вопросы ?
Создание параллельных программ в модели с общей
памятьюAPI операционной системы (стандарт POSIX)
Порождение процессов
Сигналы
Конвейеры
Общая память System V
Семафоры, блокировки
Очереди сообщений
Потоки
Сокеты
Стандарт OpenMP
Создание параллельных программ с обменом
сообщениямиAPI операционных систем
Сокеты
Стандарты
MPI
PVM
Linda
Языки программирования с поддержкой параллелизма
Поддержка автопараллелизма
Pg[C, C++, Fortran] (Portland Group)
Adaptor - Fortran
Absoft – Fortran preprocessor
Без поддержки автопараллелизма
mpC
HPF
Erlang
Процессы
Процесс – код выполняющийся в отдельном адресном пространстве
Множество процессов может выполняться на одной машине параллельно или псевдопараллельно
Каждый процесс имеет доступ к ресурсам
Защищенные ресурсы
ресурсы совместно используемые с другими процессами
средства взаимодействия между процессами
Составные части процесса
Память
Сегменты кода
Сегменты данных
Сегменты стека
Стек задачи
Стек ядра
Другие сегменты
Общая память
Дескриптор процесса
Информация о выполняющемся процессе
Доступ к файловой системе
Файловые дескрипторы
Файлы
Каналы
Сокеты
Память
Физическая память разбита на страницы (обычно фиксированного размера)
Страницы объединяются в виртуальные области (сегменты)
Каждый процесс содержит ссылку на свои сегменты
Файловая система
Системные вызовы
open
close
read
write
Операционная система транслирует эти вызовы в специфические вызовы конкретных файловых систем
fat
ext3
pipe
socket
Порождение процессов
Один процесс может создать другой процесс
Оба процесса будут выполняться параллельно
fork+exec
spawn
Процесс А
spawn(программа B)
Процесс А
i=fork()
Процесс А |
|
|
|
Процесс A |
|
i!=0 |
|
|
|
i==0 |
|
|
|
|
|
|
|
Процесс А |
|
|
|
|
exec(программа B) |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Процесс B |
|
|
|
|
|
|
Процесс А |
|
Процесс B |
|
|
|
|
|
|
|
|
|
|
|
|
Особенности fork+exec и spawn
fork
Порожденный процесс наследует все ресурсы родителя!
Порожденный процесс начинает выполняться с того мести, где был выполнен вызов
Перед вызовом exec порожденный процесс может создать новые ресурсы
eхес
Порожденная программа наследует часть ресурсов родителя
Порожденная программа начинает выполняться сначала
spawn
Порожденная программа наследует часть ресурсов родителя
Порожденная программа начинает выполняться сначала
Доступ к файловой системе
В UNIX системах по возможности все реализовано как файл
Обычные файлы
open
read
Write
Каналы (конвейер, pipe)
Аналог файла, но данные поступают не на диск, а другому процессу
Сокеты
Аналог файла, но данные уходят/приходят в/из сети
