Параллельные вычисления — проблема, которую можно тривиально разделить на параллельные задачи.
В параллельных вычислениях неловко параллельная рабочая нагрузка или проблема (также называемая неловко параллелизуемой , идеально параллельной , восхитительно параллельной или приятно параллельной ) — это та, где требуется мало или совсем не требуется усилий для разделения проблемы на ряд параллельных задач. [1] Это связано с минимальной или отсутствующей зависимостью от связи между параллельными задачами или для результатов между ними. [2]
Они отличаются от задач распределенных вычислений , которым требуется связь между задачами, особенно связь промежуточных результатов. Их проще выполнять на фермах серверов , которым не хватает специальной инфраструктуры, используемой в настоящем суперкомпьютерном кластере. Они хорошо подходят для больших интернет- платформ добровольных вычислений , таких как BOINC , и меньше страдают от параллельного замедления . Противоположностью неловко параллельным задачам являются по своей сути последовательные задачи , которые вообще не могут быть распараллелены.
Типичным примером ошеломляюще параллельной задачи является рендеринг 3D-видео, выполняемый графическим процессором , где каждый кадр (прямой метод) или пиксель ( метод трассировки лучей ) может обрабатываться без какой-либо взаимозависимости. [3] Некоторые формы взлома паролей — это еще одна ошеломляюще параллельная задача, которая легко распределяется по центральным процессорам , ядрам ЦП или кластерам.
Этимология
«Смущающе» здесь используется для обозначения проблем распараллеливания, которые «смущающе просты». [4] Термин может подразумевать смущение со стороны разработчиков или компиляторов: «Поскольку так много важных проблем остаются нерешенными, в основном из-за их внутренней вычислительной сложности, было бы неловко не разработать параллельные реализации методов продолжения полиномиальной гомотопии ». [5] Термин впервые встречается в литературе в книге 1986 года о мультипроцессорах, написанной создателем MATLAB Кливом Молером , [6] который утверждает, что изобрел этот термин. [7]
Альтернативный термин «приятно параллельный » получил некоторое распространение, возможно, для того, чтобы избежать негативных коннотаций смущения в пользу позитивного отражения параллелизуемости задач: «Конечно, в этих программах нет ничего смущающего». [8]
Примеры
Тривиальный пример включает обслуживание статических данных. Потребовалось бы совсем немного усилий, чтобы множество процессоров производили один и тот же набор битов. Действительно, знаменитая задача Hello World могла бы быть легко распараллелена с небольшими программными соображениями или вычислительными затратами.
Вот несколько примеров неловко параллельных проблем:
- Анализ Монте-Карло [9]
- Распределенные запросы к реляционной базе данных с использованием распределенной обработки наборов.
- Численное интегрирование [10]
- Массовая обработка не связанных между собой файлов схожего характера в целом, например, изменение размера и конвертация фотогалерей.
- Множество Мандельброта , шум Перлина и подобные изображения, где каждая точка вычисляется независимо.
- Рендеринг компьютерной графики . В компьютерной анимации каждый кадр или пиксель может быть отрендерен независимо (см. параллельный рендеринг ).
- Некоторые методы поиска методом перебора в криптографии . [11] Известные примеры из реального мира включают в себя распределенную сеть и системы доказательства работы, используемые в криптовалюте .
- Поиск BLAST в биоинформатике с разделенными базами данных. [12]
- Крупномасштабные системы распознавания лиц , которые сравнивают тысячи произвольно полученных лиц (например, видеозаписи безопасности или наблюдения через замкнутую телевизионную систему ) с таким же большим количеством ранее сохраненных лиц (например, галерея мошенников или аналогичный список наблюдения ). [13]
- Компьютерное моделирование, сравнивающее множество независимых сценариев.
- Генетические алгоритмы . [14]
- Ансамблевые расчеты численного прогноза погоды .
- Моделирование и реконструкция событий в физике элементарных частиц .
- Алгоритм марширующих квадратов .
- Шаг просеивания квадратного решета и решета числового поля .
- Этап роста дерева в методе машинного обучения случайного леса .
- Дискретное преобразование Фурье , где каждая гармоника вычисляется независимо.
- Свёрточные нейронные сети, работающие на графических процессорах .
- Параллельный поиск в программировании ограничений [15]
Реализации
- В R (язык программирования) пакет Simple Network of Workstations (SNOW) реализует простой механизм использования набора рабочих станций или кластера Beowulf для невероятно параллельных вычислений. [16] Похожие пакеты R включают «future», «parallel» и другие.
Смотрите также
Ссылки
- ^ Херлихи, Морис; Шавит, Нир (2012). Искусство многопроцессорного программирования, пересмотренное переиздание (пересмотренное издание). Elsevier. стр. 14. ISBN 9780123977953. Получено 28 февраля 2016 г. .
Некоторые вычислительные задачи «невероятно параллельны»: их можно легко разделить на компоненты, которые могут выполняться одновременно.
- ^ Раздел 1.4.4 из: Фостер, Ян (1995). Проектирование и построение параллельных программ. Эддисон–Уэсли. ISBN 9780201575941. Архивировано из оригинала 2011-03-01.
- ^ Алан Чалмерс; Эрик Рейнхард; Тим Дэвис (21 марта 2011 г.). Практический параллельный рендеринг. CRC Press. ISBN 978-1-4398-6380-0.
- ^ Мэтлофф, Норман (2011). Искусство программирования на R: Экскурсия по статистическому проектированию программного обеспечения , стр. 347. Никакого крахмала. ISBN 9781593274108 .
- ^ Лейкин, Антон; Вершельде, Ян; Чжуан, Ян (2006). "Параллельные гомотопические алгоритмы для решения полиномиальных систем". Математическое программное обеспечение - ICMS 2006. Конспект лекций по информатике. Том 4151. С. 225–234. doi :10.1007/11832225_22. ISBN 978-3-540-38084-9.
- ^ Moler, Cleve (1986). "Матричные вычисления на мультипроцессорах с распределенной памятью". В Heath, Michael T. (ред.). Гиперкубические мультипроцессоры . Общество промышленной и прикладной математики, Филадельфия. ISBN 978-0898712094.
- ^ Гиперкуб Intel, часть 2, опубликовано в блоге Cleve's Corner на сайте MathWorks
- ^ Кепнер, Джереми (2009). Параллельный MATLAB для многоядерных и многоузловых компьютеров , стр. 12. SIAM. ISBN 9780898716733 .
- ^ Erricos John Kontoghiorghes (21 декабря 2005 г.). Справочник по параллельным вычислениям и статистике. CRC Press. ISBN 978-1-4200-2868-3.
- ^ Юэфан Дэн (2013). Прикладные параллельные вычисления. World Scientific. ISBN 978-981-4307-60-4.
- ^ Йозефссон, Саймон; Персиваль, Колин (август 2016 г.). «Функция вывода ключа на основе пароля scrypt». tools.ietf.org . doi :10.17487/RFC7914 . Получено 12 декабря 2016 г. .
- ^ Mathog, DR (22 сентября 2003 г.). «Параллельный BLAST в разделенных базах данных». Биоинформатика . 19 (14): 1865–6. doi : 10.1093/bioinformatics/btg250 . PMID 14512366.
- ^ Как мы сделали наш распознаватель лиц в 25 раз быстрее (запись в блоге разработчика)
- ^ Сигэёси Цуцуи; Пьер Колле (5 декабря 2013 г.). Массово-параллельные эволюционные вычисления на GPGPU. Springer Science & Business Media. ISBN 978-3-642-37959-8.
- ^ Юсеф Хамади; Лахдар Саис (5 апреля 2018 г.). Справочник по параллельным рассуждениям с ограничениями. Springer. ISBN 978-3-319-63516-3.
- ^ Пакет Simple Network of Workstations (SNOW)
Внешние ссылки
Найдите смущающую параллель в Викисловаре, бесплатном словаре.
- Невероятно параллельные вычисления, проектирование вычислительного кластера в стиле Beowulf
- «Star-P: Высокопроизводительные параллельные вычисления»