Модели параллельного программирования
Заказать уникальный реферат- 26 26 страниц
- 13 + 13 источников
- Добавлена 15.11.2019
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
1. Основные понятия, связанные с линейным программированием. 5
1.1 Обмен сообщениями (Message Passing) 5
1.2 Общая память 6
1.3 Процесс/канал (Process/Channel) 8
1.4. Параллелизм данных (Data Parallel) 8
2. Примеры интерфейсов (API) 10
2.1 Интерфейс OpenMP 10
2.2 Интерфейс передачи сообщений MPI 11
3. Область использования и класс решаемых задач 16
4. Перспективы 22
Заключение 24
Список использованной литературы 25
Основные классы графических моделей параллельных процессов приведены на рис. 3.
Рисунок 5 – Внешний вид блок -схемы основных классов графических моделей параллельных вычислительных процессов
Существуют примеры систем (сети Петри), где программа на визуальном языке состоит из потока управления, потока данных и множества интерпретаций узлов (то есть процедур, запускаемых при достижении узла). Граф потока управления языка в этом случае обеспечивает представление последовательных потоков, переключение управления, параллелизм и синхронизацию. Параллелизм поддерживается в основном за счет описания того, как несколько маркеров, описывающих поток данных, могут распространяться по графу. Нередко на язык и систему программирования могут возлагаться задачи обеспечения правильности (в частности детерминированности) и эффективности разрабатываемых параллельных программ уже на этапе проектирования и «визуального кодирования».
Рисунок 6 – Внешний вид сети Петри
Недостатком сетей Петри при описании вычислительных процессов является необходимость перехода к специфическим терминам, используемым в сетях Петри, таким как переходы, места, разметки. Такое преобразование не всегда очевидно. Кроме того, представить процесс функционирования сети Петри можно только в динамике срабатываний её переходов, например, используя возможности анимации графических объектов. В то время как статическое изображение сети обладает невысокой наглядностью. В качестве примера использования сетей Петри на рис. 6 представлена параллельная модель суммирования элементов матрицы с заданным числом столбцов и произвольным числом строк.
В Институте кибернетики имени В.М. Глушкова ещё в 70-х годах XX века была разработана Р-технология программирования, использующая графическую модель описания алгоритмов, близкую к автоматным, и получившую название Р-схем (рис. 7).
Рисунок 7 – Внешний вид примера построения Р-схем
Р-схема - нагруженный по дугам ориентированный граф, изображаемый с помощью горизонтальных и вертикальных линий и состоящий из структур с одним входом и одним выходом. Построение Р-схем осуществляется из базовых графических структур двух видов, представленных на рис. 7,а.
Остальные конструкции получаются с помощью операций последовательного, параллельного и вложенного соединения базовых элементов. Примеры таких конструкций приведены на рис. 7, б, в и г соответственно. Для Р-схем разработан и введен в действие ГОСТ 19.005-85, определяющий внешнюю форму их представления.
Специфической задачей при работе с параллельными вычислениями является обеспечение согласованной работы параллельных вычислительных процессов (синхронизация). Согласованность работы заключается, во-первых, в корректном использовании множества данных, с которыми одновременно работают несколько вычислительных процессов, а во-вторых, в беспрепятственном выполнении параллельных вычислительных процессов, при наличии их взаимного влияния друг на друга.
В последовательном вычислительном процессе в каждый момент времени над любой переменной может выполняться только одна операция, определенная алгоритмом. При параллельных вычислениях одновременно выполняются несколько вычислительных процессов, поэтому возможна ситуация, когда к одной и той же переменной в некоторый момент времени обращаются два или более процессов. При этом один процесс может считывать значение переменной, а другой - изменять его. Если моменты чтения и изменения значения переменной не согласованы между собой, то результат операции чтения непредсказуем.
Для исключения подобных ситуаций разработаны различные механизмы синхронизации параллельных вычислительных процессов: критические секции, семафоры, мониторы, сообщения.
4. Перспективы
Программы, надлежащее качество проектирования которых позволяет воспользоваться преимуществами параллелизма, могут выполняться быстрее, чем их последовательные эквиваленты, что повышает их рыночную стоимость. Иногда скорость может спасти жизнь [13]. В таких случаях быстрее означает лучше. Иногда решение некоторых проблем представляется естественнее в виде коллекции одновременно выполняемых задач. Это характерно для таких областей, как научное программирование, математическое и программирование искусственного интеллекта. Это означает, что в некоторых ситуациях технологии параллельного программирования снижают трудозатраты разработчика ПО, позволяя ему напрямую реализовать структуры данных, алгоритмы и эвристические методы, разрабатываемые учеными. При этом используется специализированное оборудование. Например, в мультимедийной программе с широкими функциональными возможностями с целью получения более высокой производительности ее логика может быть распределена между такими специализированными процессорами, как микросхемы компьютерной графики, цифровые звуковые процессоры и математические спецпроцессоры. К таким процессорам обычно обеспечивается одновременный доступ. МРР-компьютеры (Massively Parallel Processors — процессоры с массовым параллелизмом) имеют сотни, а иногда и тысячи процессоров, что позволяет их использовать для решения проблем, которые просто не реально решить последовательными методами. Однако при использовании МРР-компьютеров (т.е. при объединении скорости и “грубой силы”) невозможное становится возможным. К категории применимости МРР-компьютеров можно отнести моделирование экологической системы (или моделирование влияния разных факторов на окружающую среду), исследование космического пространства и ряд тем из области биологических исследований, например проект моделирования генома человека. Применение более совершенных технологий параллельного программирования открывает двери к архитектурам ПО, которые специально разрабатываются для параллельных сред. Например, существуют специальные мультиагентные архитектуры и архитектуры, использующие методологию “классной доски”, разработанные специально для среды с параллельными процессорами.
Также существует еще широкий класс программного обеспечения, где применяется активным образом линейное программирование. Решение таких задач связано с такими современными средами программирования, как С++, Java, Python. Применение таких мощных языков дает гарантию качества готовой программной продукции, что в результате приведет в широкому ее внедрению на различных предприятиях мира.
Заключение
В заключении отметить, что в условиях современных организаций, как частных, так и государственных, параллельное программирование активно распространяется. Благодаря ему происходит реализация сложных программных проектов, где процесс передачи информации происходит намного быстрее, что безусловно будет способствовать развитию организации в целом с увеличением его доходов.
Данная технология имеет потенциал для обеспечения очень экономичного высокоскоростного Интернета и удаленного доступа как для бытовых пользователей, так и для современных фирм. Поэтому для продолжения развития данной технологии необходимы новые интерфейсы, оборудование и протоколы. Должны быть предусмотрены стандартизированные инструменты управления сетью для настройки или автоматического обеспечения, обнаружения сбоев и мониторинга производительности.
В данной работе достигнута основная цель – описаны модели параллельного программирования.
В данном реферате были решены следующие задачи:
приведены основные понятия, связанные с линейным программированием;
приведены примеры интерфейсов (API);
описана область использования и класс решаемых задач, а также перспективы данных разработок.
Также в процессе написания реферата были использованы современные и классические источники литературы и глобальной сети Internet.
Список использованной литературы
Федотов И.Е. Модели параллельного программирования (+source code). М.: Солон-Пресс, 2012. - 384с.
Антонов А.С. Параллельное программирование с использованием технологии OpenMP. Учебное пособие. – М.: Изд-во МГУ, 2009. – 77 с.
Андрейченко Д.К. и др. Теоретические основы параллельного программирования. Учебное пособие. — Саратов: СГУ, 2015. — 282 с.
Supalov Alexander. Inside the Message Passing Interface: Creating Fast Communication Libraries. De|G Press, 2018. — 384 p. (Обмен сообщениями (Message Passing))
Aweya J. Switch/Router Architectures: Shared-Bus and Shared-Memory Based Systems. Wiley-IEEE Press, 2018. — 327 p. Shared Memory
Карепова Е.Д. Основы многопоточного и параллельного программирования. Учебное пособие. — Красноярск: Сибирский федеральный университет, 2016. — 356 с.
Модели параллельных вычислений [Электронный ресурс]. – Режим доступа: http://www.ccas.ru/paral/prog/models.html, свободный. – Загл. с экрана.
Параллелизм данных (библиотека параллельных задач) [Электронный ресурс]. – Режим доступа: https://docs.microsoft.com/ru-ru/dotnet/standard/parallel-programming/data-parallelism-task-parallel-library, свободный. – Загл. с экрана.
Raynal M. Distributed Algorithms for Message-Passing Systems. Springer, 2013. — 517 p.
Вдовикина Н.В., Машечкин И.В., Терехин А.Н., Томилин А.Н. Операционные системы: взаимодействие процессов. Учебно-методическое пособие. Издательский отдел факультета ВМиК МГУ 2008, – 215 c.
Газизов Р.К., Лукащук С.Ю., Тулебаев С.Д. Основы параллельного программирования с использованием MPI: учебное пособие. Уфа: УГАТУ, 2004. – 90 с.
Коварцев А.Н., Жидченко В.В. Методы и средства визуального параллельного программирования. Автоматизация программирования. Учебник. – Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2011. – 168 с.
Хьюз К., Хьюз Т. Параллельное и распределенное программирование на С++. Пер. с англ. -— М.: Вильямс, 2004. — 672 с.
2
2. Антонов А.С. Параллельное программирование с использованием технологии OpenMP. Учебное пособие. – М.: Изд-во МГУ, 2009. – 77 с.
3. Андрейченко Д.К. и др. Теоретические основы параллельного программирования. Учебное пособие. — Саратов: СГУ, 2015. — 282 с.
4. Supalov Alexander. Inside the Message Passing Interface: Creating Fast Communication Libraries. De|G Press, 2018. — 384 p. (Обмен сообщениями (Message Passing))
5. Aweya J. Switch/Router Architectures: Shared-Bus and Shared-Memory Based Systems. Wiley-IEEE Press, 2018. — 327 p. Shared Memory
6. Карепова Е.Д. Основы многопоточного и параллельного программирования. Учебное пособие. — Красноярск: Сибирский федеральный университет, 2016. — 356 с.
7. Модели параллельных вычислений [Электронный ресурс]. – Режим доступа: http://www.ccas.ru/paral/prog/models.html, свободный. – Загл. с экрана.
8. Параллелизм данных (библиотека параллельных задач) [Электронный ресурс]. – Режим доступа: https://docs.microsoft.com/ru-ru/dotnet/standard/parallel-programming/data-parallelism-task-parallel-library, свободный. – Загл. с экрана.
9. Raynal M. Distributed Algorithms for Message-Passing Systems. Springer, 2013. — 517 p.
10. Вдовикина Н.В., Машечкин И.В., Терехин А.Н., Томилин А.Н. Операционные системы: взаимодействие процессов. Учебно-методическое пособие. Издательский отдел факультета ВМиК МГУ 2008, – 215 c.
11. Газизов Р.К., Лукащук С.Ю., Тулебаев С.Д. Основы параллельного программирования с использованием MPI: учебное пособие. Уфа: УГАТУ, 2004. – 90 с.
12. Коварцев А.Н., Жидченко В.В. Методы и средства визуального параллельного программирования. Автоматизация программирования. Учебник. – Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2011. – 168 с.
13. Хьюз К., Хьюз Т. Параллельное и распределенное программирование на С++. Пер. с англ. -— М.: Вильямс, 2004. — 672 с
Вопрос-ответ:
Какие основные модели параллельного программирования существуют?
Основные модели параллельного программирования: обмен сообщениями (Message Passing), общая память (Shared Memory), процесс-канал (Process Channel) и параллелизм данных (Data Parallel).
На чем основана модель обмена сообщениями (Message Passing)?
Модель обмена сообщениями основана на передаче данных между процессами через явное обмен сообщениями.
Что такое процесс-канал (Process Channel)?
Процесс-канал - это модель, в которой процессы обмениваются данными через каналы, обеспечивающие передачу сообщений между процессорами.
Как работает модель параллелизма данных (Data Parallel)?
Модель параллелизма данных основана на разделении целевых данных на независимые блоки и параллельной обработке этих блоков на разных процессорах.
Какие интерфейсы API используются в параллельном программировании?
В параллельном программировании используются различные интерфейсы API, например, OpenMP, MPI и другие.
Какие модели параллельного программирования существуют?
Существуют различные модели параллельного программирования, включая обмен сообщениями (Message Passing), общую память (Shared Memory), процесс-канал (Process Channel) и параллелизм данных (Data Parallel).
Что такое обмен сообщениями в параллельном программировании?
Обмен сообщениями (Message Passing) - это модель параллельного программирования, где процессы общаются между собой путем передачи сообщений. Каждый процесс имеет свое собственное адресное пространство и может обмениваться сообщениями с другими процессами.
Что такое общая память в параллельном программировании?
Общая память (Shared Memory) - это модель параллельного программирования, в которой несколько процессов имеют доступ к общей области памяти. Процессы могут читать и записывать данные в эту область памяти, что позволяет им совместно работать над задачей.
Что такое процесс-канал в параллельном программировании?
Процесс-канал (Process Channel) - это модель параллельного программирования, в которой процессы взаимодействуют друг с другом с помощью каналов. Каждый канал представляет собой двунаправленный поток данных, по которому процессы могут передавать информацию.
Что такое параллелизм данных в параллельном программировании?
Параллелизм данных (Data Parallel) - это модель параллельного программирования, при которой операции выполняются одновременно над независимыми частями данных. Это позволяет ускорить выполнение программы за счет распределения работы между несколькими процессорами или ядрами.