Анализ современных технологий параллельного программирования

Секция

Технические науки

Ключевые слова

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

Аннотация статьи

Что такое параллельное программирование? Это использование нескольких ресурсов, в данном случае процессоров, для решения проблемы. Этот тип программирования берет проблему, разбивает ее на серию более мелких шагов, предоставляет инструкции, а процессоры выполняют решения одновременно. Многие компьютеры, такие как ноутбуки и персональные настольные компьютеры, используют это программирование в своем оборудовании, чтобы обеспечить быстрое выполнение задач в фоновом режиме. Использование параллельного программирования на языке C важно для повышения производительности программного обеспечения.

Текст статьи

Введение

OpenMP – это библиотека для параллельного программирования в модели SMP (симметричные мультипроцессоры или процессоры с общей памятью). При программировании с OpenMP все потоки разделяют память и данные. OpenMP поддерживает C, C ++ и Fortran. Функции OpenMP включены в заголовочный файл с именем omp.h.

Структура программы OpenMP: Программа OpenMP имеет последовательные разделы и параллельные разделы. Обычно программа OpenMP начинается с последовательного раздела, в котором она устанавливает среду, инициализирует переменные и так далее.

При запуске программа OpenMP будет использовать один поток (в последовательных разделах) и несколько потоков (в параллельных разделах).

Существует один поток, который запускается от начала до конца, и он называется основным потоком. Параллельные секции программы приведут к созданию дополнительных потоков. Они называются slave threads.

Раздел кода, который должен выполняться параллельно, помечен специальной директивой (omp pragma). Когда выполнение достигает параллельного раздела (отмеченного omp pragma), эта директива приведет к формированию подчиненных потоков. Каждый поток выполняет параллельный раздел кода независимо. Когда поток заканчивается, он присоединяется к мастеру. Когда все потоки заканчиваются, мастер продолжает работу с кодом, следующим за параллельным разделом.

К каждому потоку прикреплен идентификатор, который можно получить с помощью функции библиотеки времени выполнения (называемой omp_get_thread_num ()). Идентификатор основного потока равен 0.

MPI и параллельные вычисления

Основные характеристики MPI:

Программы передачи сообщений обычно запускают один и тот же код на нескольких процессорах, которые затем взаимодействуют друг с другом посредством библиотечных вызовов [1], которые подразделяются на несколько общих категорий:

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

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

Реализации MPI:

● Intel MPI

Эта реализация имеет поддержку нескольких сетей (TCP / IP, Infiniband, Myrinet и т. Д.) - по умолчанию вначале пробуется лучшая сеть.

«Обертки» компилятора вокруг набора компиляторов Intel (mpiifort, mpiicc, mpiicpc) и компиляторов GNU (mpif90, mpicc, mpicxx)

● MVAPICH2

Эта реализация работает на InfiniBand.

● MPICH 2

Переносимая реализация стандартного интерфейса передачи сообщений (MPI), созданная Аргоннской национальной лабораторией.

MPICH создан специально для данной комбинации сетевого интерфейса и компилятора. Кластер UB CCR имеет три внутренние сети: Gigabit Ethernet, Q-Logic Infiniband и Mellanox Infiniband. Компиляторы GNU, Intel и PGI.

● OPENMPI

Реализация MPI с открытым исходным кодом, разработанная и поддерживаемая консорциумом, состоящим из исследователей из научных кругов и промышленности.

Эта реализация поддерживает сеть, поэтому она автоматически выберет сетевой интерфейс.

OPENMPI построен специально для конкретного компилятора.

Распространенные проблемы параллельного программирования

Параллельность в C дает много преимуществ, но могут возникнуть и проблемы параллелизма [2]. И эти ошибки могут поставить под угрозу вашу программу – и привести к угрозам безопасности.

Использование нескольких потоков помогает получить больше от одного процессора. Но тогда этим потокам необходимо синхронизировать свою работу в общей памяти. Это может быть сложно сделать правильно – и еще труднее обойтись без проблем с параллелизмом [3].

Традиционные методы тестирования и отладки вряд ли позволят выявить эти потенциальные проблемы. Вы можете запустить тест или отладчик один раз – и не увидеть ошибок. Но при повторном запуске обнаруживается ошибка. На самом деле вы можете продолжать тестирование и все равно не найти проблему.

Вот два распространенных типа проблем с многопоточностью [4], которые может быть сложно найти с помощью только тестирования и отладки.

Условия гонки (включая гонку данных)

Состояния гонки возникают, когда поведение программы зависит от последовательности или времени неконтролируемых событий.

Гонка данных – это разновидность состояния гонки. Гонка данных возникает, когда два или более потока обращаются к общим данным и пытаются изменить их одновременно - без надлежащей синхронизации.

Этот тип ошибки может привести к сбоям или повреждению памяти.

Заключение

Известные приложения для параллельной обработки (также известной как параллельные вычисления) включают вычислительную астрофизику, геообработку (или сейсмическую съемку), моделирование климата, оценки сельского хозяйства, управление финансовыми рисками, цветокоррекцию видео, вычислительную гидродинамику, медицинскую визуализацию и открытие лекарств.

Список литературы

  1. Геренсер Т. Параллельные вычисления и их современное использование. 2019.
  2. Пачеко А. Концепции параллельного программирования. 2018.
  3. Готтлиб А., Джордж С. Высокопараллельные вычисления. 1989.
  4. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. 2002. – СПб: БХВ-Петербург.

Поделиться

1887

Оруджев И. Н., Салимов В. Г. Анализ современных технологий параллельного программирования // Естественно-научные и технические исследования как основной фактор развития инновационной среды : сборник научных трудов по материалам Международной научно-практической конференции 28 января 2021г. Белгород : ООО Агентство перспективных научных исследований (АПНИ), 2021. С. 46-48. URL: https://apni.ru/article/1829-analiz-sovremennikh-tekhnologij-parallelnogo

Обнаружили грубую ошибку (плагиат, фальсифицированные данные или иные нарушения научно-издательской этики)? Напишите письмо в редакцию журнала: info@apni.ru
Актуальные исследования

#52 (234)

Прием материалов

21 декабря - 27 декабря

осталось 6 дней

Размещение PDF-версии журнала

1 января

Размещение электронной версии статьи

сразу после оплаты

Рассылка печатных экземпляров

17 января