Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 24(44)

Рубрика журнала: Информационные технологии

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6, скачать журнал часть 7

Библиографическое описание:
Куликов Д.М. ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ // Студенческий: электрон. научн. журн. 2018. № 24(44). URL: https://sibac.info/journal/student/44/126441 (дата обращения: 23.12.2024).

ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ

Куликов Дмитрий Михайлович

магистрант, кафедра КБ-5 «Аппаратного, программного и математического обеспечения вычислительных систем», РТУ МИРЭА

Россия, г. Москва

Аннотация. Целью данной статьи является проведение анализа параллельных вычислений, определение данного понятия, главных отличительных черт параллельных от распределенных вычислений. В ходе работы над статьей было проанализировано современное состояние параллельных вычислений, их области использования в современной науке и коммерческой деятельности. Были выделены преимущества, возможности переносимости и масштабируемости, тем самым был сделан вывод о значимости параллельных вычислений в мире компьютерных технологий.

 

Параллельные вычисления — это подход, при котором несколько вычислений выполняются в пределах одного временного интервала. Он использует концепцию, согласно которой несколько процессов могут выполняться и получать результаты, не дожидаясь завершения других процессов. Параллельные вычисления отличаются от последовательных вычислений тем, что последовательные вычисления производятся один за другим, а в параллельных вычислениях — одновременный процесс выполнения.

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

Понятие «параллельные вычисления», часто путают с другим понятием — «распределенные вычисления». Отличие заключается в том, что распределенные вычисления базируются на системах (машинах), которые физически удалены друг от друга, а параллельные вычисления — это способ вычисления, той или иной задачи, происходящий одновременно независимо от удаленности системы.  На фундаментальном уровне распределенные вычисления и параллельное программирование — это просто описательные термины, которые относятся к способам выполнения работы во время выполнения.

Истоки параллельных вычислений восходят к 1800-х годам, когда железнодорожным операторам необходимо было разработать способ управления путями нескольких поездов на единой железной дороге. Он продолжил активно развиваться в начале 1900-х годов, когда телеграфным операторам приходилось управлять несколькими сигналами на одной телеграфной линии.

Этот термин обычно относится к программному коду, который работая одновременно с другим программным кодом, облегчает выполнение вычислительной задачи. В этом случае это многозадачность, которая позволяет нескольким программам или процессам получать доступ к центральной памяти без ожидания очереди. Эта настройка позволяет интенсифицировать обработку ввода-вывода и эффективную обработку сигналов с распределением ресурсов между несколькими задачами. Параллелизм также может возникать посредством реализации нескольких потоков вычислений. Этот процесс называют многопоточностью. Она происходит в рамках одного процесса или программы. Именно она позволяет, распечатать один документ, продолжая вводить другой документ. Без многопоточности пользовательские интерфейсы будут слишком медленными, поскольку система не сможет реагировать на более чем одно действие пользователя за раз.

В простейшем смысле параллельные вычисления — это одновременное использование нескольких вычислительных ресурсов для решения вычислительной задачи.

Проблема разбивается на отдельные части, которые могут быть решены одновременно:

  • каждая часть далее разбивается на ряд инструкций;
  • инструкции из каждой части выполняются одновременно на разных процессорах;
  • используется общий механизм управления и координации.

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

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

Параллельные вычисления имеют следующие преимущества:

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

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

Затраты на сложность измеряются в программном времени практически во всех аспектах цикла разработки программного обеспечения:

  • проектирование;
  • кодирование;
  • отладка;
  • настройка;
  • поддержка.

Благодаря стандартизации в нескольких API, например, в таких как MPI, POSIX и OpenMP, проблемы с переносимостью с параллельными программами не так серьезны, как раньше. Все обычные проблемы переносимости, связанные с последовательными программами, применяются и к параллельным программам.

Несмотря на то, что стандарты существуют для нескольких API-интерфейсов, реализации будут отличаться рядом деталей, иногда с точки зрения необходимости модификации кода для обеспечения переносимости. Операционные системы могут играть ключевую роль в вопросах переносимости кода. Также и архитектура оборудования характеризует высокую степень изменчивости и может повлиять на переносимость.

Основной целью параллельного программирования является уменьшение времени выполнения, однако для этого требуется больше времени процессора. Например, параллельный код, который работает через 1 час на 8 процессорах, фактически использует 8 часов процессорного времени.

Объем требуемой памяти может быть больше для параллельных программных кодов, чем необходимо при решении последовательных задач, из-за необходимости репликации данных и для накладных расходов, связанных с параллельными библиотеками поддержки и подсистемами. Для краткосрочных параллельных программ может наблюдаться, фактически снижение производительности по сравнению с аналогичной последовательной реализацией. Накладные расходы, связанные с настройкой параллельной среды, созданием задачи, связью и прекращением задачи, могут составлять значительную часть общего времени выполнения для коротких прогонов.

К миру параллельных вычислений можно применить два типа масштабирования, основанные на времени решения: сильное и слабое масштабирование.

Под сильным масштабированием можно понимать следующие аспекты:

  • общий объем проблемы остается фиксированным по мере добавления большего количества процессоров;
  • цель заключается в том, чтобы быстрее решать тот же самый объем задачи;
  • идеальный вариант развития событий подразумевает под собой то, что проблема будет решена в 1/P раз быстрее по сравнению с последовательным вариантом решения.

Под слабым масштабированием можно понимать следующие аспекты:

  • объем решаемой проблемы в процессорных часах остается фиксированным по мере добавления большего количества процессоров. Общий объем задачи пропорционален количеству используемых процессоров.
  • цель заключается в том, чтобы решить большую задачу за такое же время;
  • идеальное вариант масштабирования показывает, что задача выполняется одновременно с запуском одного процессора

Возможность масштабируемости параллельной программы является результатом ряда взаимосвязанных факторов. Простое добавление большего количества процессоров редко является решением проблемы.

Алгоритм может иметь собственные пределы масштабируемости. В какой-то момент добавление дополнительных ресурсов приводит к снижению производительности. Это обычная ситуация со многими параллельными приложениями.

Аппаратные факторы играют значительную роль в масштабируемости. Например, такие части «железа», как, шины памяти-CPU на машине SMP, пропускная способность сети связи, объем доступной памяти на любой заданной машине или наборе машин, тактовая частота процессора. Параллельные библиотеки поддержки и подсистемы могут ограничить масштабируемость независимо от приложения.

Исторически сложилось так, что параллельные вычисления считаются «высокопроизводительными вычислениями» и используются для моделирования сложных проблем во многих областях науки и техники. Например, в изучении атмосферы, генетики, химии, сейсмологии, ядерной физики, электротехники, компьютерных науках и так далее.

Требования к вычислительной мощности и лучшей производительности с каждым днём только увеличиваются. Облачные и мобильные технологии, обработка больших данных играют определенную роль в создании предпосылок в том, что предприятиям необходимо управлять огромным количеством информации. В данном случае параллелизм помогает современным технологиям получить быстродействие при минимальном времени.

Сегодня коммерческие приложения обеспечивают равную или даже большую движущую силу в разработке более быстрых компьютеров. Эти приложения требуют обработки больших объемов данных сложными способами. В таких технологиях как, например, Big Data, искусственный интеллект, машинное обучение, поисковые системы, финансово-экономическое моделирование и т.д., используется параллелизм для ускорения решения поставленных задач.

 

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

  1. Гуерру Р., Качин К., Родригес Л. Введение в надежное и безопасное распределенное программирование. — М.: ДМК Пресс, 2016. — 514 с.
  2. Малявко А. А. Параллельное программирование на основе технологий openmp, mpi, cuda 2-е изд., испр. и доп. Учебное пособие для академического бакалавриата. — М.: ЮРАЙТ, 2017. — 117с.
  3. John H. Reppy Concurrent Programming in ML. — Cambridge University Press, 2007. — 328 p.
  4. Peter Pacheco An Introduction to Parallel Programming. — Morgan Kaufmann, 2011. — 392 p.

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.