Статья опубликована в рамках: Научного журнала «Студенческий» № 24(44)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6, скачать журнал часть 7
ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ
Аннотация. В данной статье был проведен анализ параллельных вычислительных систем, с целью изучения вопроса использования параллелизма современными компьютерными системами. Было дано понятие этих систем, проведено описание классификации таких систем согласно таксономии Флинна. Также, в рамках работы, были проанализированы модели программирования параллельных вычислительных систем.
Параллельные вычислительные системы — это системы, которые состоят из различных частей (компьютеров) физически удаленных или не удаленных друг от друга, и решающие те или иные задачи, параллельно.
Большие задачи часто можно разделить на более мелкие, которые затем могут быть решены в одну единицу времени, то есть одновременно. Существует несколько различных форм параллельных вычислений: битовый уровень, уровень инструкций, уровень данных и параллелизм задач. Параллелизм уже давно используется в высокопроизводительных вычислениях, но он приобретает более широкий интерес из-за физических ограничений, предотвращающих увеличение процессорной частоты. Поскольку потребление энергии (и, следовательно, выработка тепла) компьютерами стало проблемой в последние годы, параллельные вычисления стали доминирующей парадигмой в компьютерной архитектуре, в основном в виде многоядерных процессоров.
Параллельные вычисления тесно связаны с распределенными вычислениями — они часто используются вместе, и часто объединяются, хотя они различны. При параллельных вычислениях вычислительная задача обычно разбивается на несколько, часто на много очень похожих подзадач, которые могут обрабатываться независимо и результаты которых затем после завершения — объединяются. Напротив, при распределенных вычислениях различные процессы часто не решают связанных задач; когда они это делают, что характерно для распределенных вычислений, отдельные задачи могут иметь разный характер и часто требуют некоторой межпроцессорной связи во время исполнения.
Параллельные компьютеры можно грубо классифицировать в соответствии с уровнем, на котором аппаратное обеспечение поддерживает параллелизм, с многоядерными и многопроцессорными компьютерами, имеющими несколько элементов обработки на одной машине, в то время как кластеры, МПП и грид-системы используют несколько компьютеров для решения одной и той же задачи. Специализированные параллельные компьютерные архитектуры иногда используются наряду с традиционными процессорами для ускорения конкретных задач.
В некоторых случаях параллелизм легок для программиста, например, в параллельных вычислениях на битовом уровне или на уровне команд, но явно распределенные алгоритмы, особенно те, которые используют параллелизм, сложнее писать, чем последовательные, поскольку параллелизм вводит несколько новых классов потенциальных ошибок программного обеспечения, из которых условия скорости являются наиболее распространенными. Коммуникация и синхронизация между различными подзадачами обычно являются одними из самых больших препятствий для получения хорошей производительности параллельной программы. Теоретическая верхняя граница на скорости работы одной программы в результате распараллеливания определяется законом Амдала.
Практически все автономные компьютеры сегодня параллельны и могут иметь следующее аппаратное строение:
- несколько функциональных блоков (кэш L1, кэш второго уровня, предварительная выборка, декодирование, операции с плавающей запятой, обработка графики (GPU), целочисленные вычисления и т.д.);
- несколько исполнительных блоков или ядер;
- несколько аппаратных потоков.
Сети объединяют несколько автономных компьютеров (узлов) для создания больших параллельных компьютерных кластеров.
Например, типичный параллельный компьютерный кластер LLNL носит в себе следующие особенности:
- каждый вычислительный узел представляет собой многопроцессорный параллельный компьютер сам по себе
- несколько вычислительных узлов объединены в сеть вместе с сетью Infiniband;
- узлы специального назначения, а также многопроцессорные части, используются для других целей.
Одна из наиболее широко используемых классификаций, используемых с 1966 года, называется таксономией Флинна.
- ОКОД (SISD, Single Instruction stream, Single Data stream) —только один поток команд управляется ЦП в течение одного тактового цикла, и только один поток данных используется в качестве входных данных в течение любого одного тактового цикла;
- ОКМД (SIMD, Single Instruction stream, Multiple Data stream) —все процессоры выполняют одну и ту же инструкцию в любом заданном такте и каждый процессор может работать с другим элементом данных;
- МКОД (MISD, Multiple Instruction stream, Single Data stream) —каждый процессор обрабатывает данные независимо через отдельные потоки команд и один поток данных подается в несколько блоков обработки;
- МКМД (MIMD, Multiple Instruction stream, Multiple Data stream) —каждый процессор может выполнять другой поток команд и при этом каждый процессор может работать с другим потоком данных.
К SIMD относят векторные архитектуры, к MSID — конвейерные, к MIMD — многопроцессорные, а SISD также могут быть отнесены конвейерные архитектуры. Вообще, относить или не относить к той или иной группе архитектур является довольно субъективной особенностью различных классификаций.
Большинство крупных параллельных компьютеров (суперкомпьютеров) в мире — это кластеры оборудования, выпускаемые несколькими (в основном) известными поставщиками.
Существует несколько моделей параллельного программирования.
- Общая модель памяти (без потоков)
В этой модели программирования процессы или задачи имеют общее адресное пространство, которое они читают и записывают асинхронно. Различные механизмы, такие как, например, семафоры, используются для контроля доступа к общей памяти, разрешения утверждений и предотвращения взаимоблокировок.
Преимущество этой модели с точки зрения программиста состоит в том, что понятие «владение» данных отсутствует, поэтому нет необходимости четко указывать передачу данных между задачами. Все процессы видят и имеют равный доступ к общей памяти. Разработка программ часто может быть упрощена.
Важным недостатком с точки зрения производительности является то, что становится все труднее понимать и управлять данными. Данную модель используют на автономных компьютерах с общей памятью, встроенные операционные системы, компиляторы или аппаратные средства обеспечивают поддержку программирования разделяемой памяти. Например, стандарт POSIX предоставляет API для использования разделяемой памяти, а UNIX предоставляет разделяемые сегменты памяти (shmget, shmat, shmctl и т. д.).
На компьютерах с распределенной памятью физическая память распределяется по сети машин, но осуществляется через специализированное аппаратное и программное обеспечение.
- Модель распределенной памяти или передачи сообщений.
Эта модель демонстрирует следующие характеристики:
- набор задач, которые используют свою локальную память при вычислении, в которых несколько задач могут находиться на одном и том же физическом компьютере или на любом количестве машин;
- задачи обмениваются данными посредством обмена сообщениями, отправляя и получая сообщения.
- передача данных обычно требует совместных операций, которые должны выполняться каждым процессом. Например, операция отправки должна иметь соответствующую операцию приема.
Самой популярной реализацией является MPI. Он является «де-факто» отраслевым стандартом для передачи сообщений, заменяя практически все другие реализации передачи сообщений, используемые для производственных работ. Реализации MPI существуют практически для всех популярных параллельных вычислительных платформ.
- Параллельная модель данных. Может также упоминаться как модель разделенного глобального адресного пространства (PGAS).
Параллельная модель данных демонстрирует следующие характеристики:
- адресное пространство обрабатывается глобально;
- большая часть параллельной работы сосредоточена на выполнении операций над набором данных;
- набор задач работает коллективно в одной и той же структуре данных, однако каждая задача работает на другом разделе одной и той же структуры данных.
- задачи выполняют одну и ту же операцию в своем разделе работы.
В настоящее время существует несколько относительно популярных разработок параллельных программных реализаций на основе этой модели — Data Parallel PGAS.
- Гибридная модель.
Она объединяет более одной из ранее описанных моделей программирования. В настоящее время общим примером гибридной модели является комбинация модели передачи сообщений (MPI) с моделью потоков (OpenMP).
Использование параллельных вычислительных систем при решении большого стека современных задач является крайне необходимым, и практически господствующим методом, поскольку сильно увеличивает производительность.
Список литературы:
- Гуерру Р., Качин К., Родригес Л. Введение в надежное и безопасное распределенное программирование. — М.: ДМК Пресс, 2016. — 514 с.
- Малявко А. А. Параллельное программирование на основе технологий openmp, mpi, cuda 2-е изд., испр. и доп. Учебное пособие для академического бакалавриата. — М.: ЮРАЙТ, 2017. — 117с.
- John H. Reppy Concurrent Programming in ML. — Cambridge University Press, 2007. — 328 p.
- Peter Pacheco An Introduction to Parallel Programming. — Morgan Kaufmann, 2011. — 392 p.
Оставить комментарий