Поточні паралельні моделі для обчислення


30

1980-ті рр. Породили і моделі PRAM, і BSP паралельних обчислень. Схоже, розквіт обох моделей був наприкінці 80-х та на початку 90-х.

Чи є ці області ще активними щодо дослідження паралельних алгоритмів? Чи існують новіші складніші моделі паралельних обчислень? Чи загальні моделі все ще залишаються в моді, або дослідники намагаються спеціалізуватися на обчисленнях на основі GPGPU або хмарах?

Відповіді:


19

Існує ряд моделей, що плавають навколо, але одні з найбільш помітних:

  1. В MUD і MapReduce моделі, які в першу чергу про захоплення бази MapReduce, але в більш загальному плані можна розглядати як паралельні розподілені моделі обчислень
  2. Різні багатоядерні моделі , які були запропоновані (але аж ніяк не є стандартом)

Був семінар в минулому місяці в DIMACS по цій темі: переглядав тези дасть вам більше покажчиків.


Майстерня DIMAC - це геніально! Дякую.
Ніколас Манкузо

3
У 2009 році був семінар umiacs.umd.edu/conferences/tmc2009, який, як мені здається, був ще більш гострий, ніж останній DIMAC. Леслі Валіант представив там модель Multi-BSP (детальніше обговорювалося на цьогорічному семінарі), а Філ Гіббонс з Intel представив провокаційну теорію розмов : спати при переключенні на багатоядерні, на які варто звернути увагу. Для мене семінар DIMAC був занадто зосереджений на MapReduce, який Google більше не використовує для створення свого веб-індексу.
Андраш Саламон

це правда. Я забув про попередній.
Суреш Венкат

22

Заздалегідь прошу вибачення за формат своєї відповіді в блозі. Я не міг собі зробити невеликий огляд світу паралельних обчислень.

Ви можете класифікувати паралельні моделі програмування приблизно за двома категоріями: моделі управління потоком та потоками даних.

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

Копіювання лише арифметики дає вам інструкції SIMD, усі ALU мають один і той же лічильник програм (ПК) і, таким чином, завжди виконують одну і ту ж операцію паралельно, хоча і за різними даними.

Копіювання ALU та ПК, але зберігання секвенсора інструкцій всередині блоку управління дає вам виконання поза порядку (OoO), що дає певний паралелізм конвеєра. У цій категорії ви також маєте дуже довге слово навчання (VLWI) та методи передбачення розгалуження. Ви рідко бачите цю категорію на програмному рівні.

Якщо піти трохи далі - це дублювання всього "ядра", але зберігання спільної пам'яті, це поточні багатоядерні процесори, які дають вам завдання (або потоки) паралелізму. Спільний доступ до пам'яті в цьому контексті надає вам дуже, дуже важкі та тонкі питання одночасності . Паралельні обчислення поточних багатоядерних значень, таким чином, повністю обертаються навколо проблем синхронізації / одночасності, ретельного балансу продуктивності (без синхронізації) та бажаної семантики (повністю синхронізована, послідовна семантика виконання). Прикладами цього є PRAM або більш популярна в наші дні Cilk таких знімків, як fork / join ( IntelTBB , Java.Utils.Concurrency). Моделі CSP і Actor - це моделі одночасності, але, як згадувалося вище, параметри і паралелізм стають розмитими в середовищі спільної пам'яті. nb паралелізм - це ефективність, одночасність підтримки правильної семантики.

Дублювання пам’яті також дає вам або мережеві комп’ютери, які запрограмовані на MPI та його ilk, або просто дивні архітектури, які не Von Neumann, такі як мережеві процесори на мікросхемі (хмарний процесор, Transputer, Tilera). Моделі пам'яті, такі як UMA або NUMA, намагаються зберегти ілюзію спільної пам'яті і можуть існувати на рівні програмного забезпечення або обладнання. MPI підтримує паралелізм програмного рівня та спілкується лише через передачу повідомлення. Передача повідомлень також використовується на апаратному рівні для зв'язку та одночасності (Transputer).

Друга категорія - моделі потоків даних . Вони були розроблені на зорі комп'ютерної епохи як спосіб записати та виконати паралельні обчислення, уникаючи дизайну Фон Неймана. Вони вийшли з ладу (для паралельних обчислень) 80-х років після того, як послідовна продуктивність зросла в експоненціальній формі. Однак багато систем паралельного програмування, такі як Google MapReduce, Microsoft Dryad або Intel Concurrent Collection, насправді є обчислювальними моделями потоку даних. У якийсь момент вони представляють обчислення як графік і використовують їх для керування виконанням.

Зазначаючи частини моделей, ви отримуєте різні категорії та семантику для моделі потоку даних. Чим ви обмежуєте форму графіка: DAG (CnC, Dryad), дерево (mapreduce), digraph? Чи є сувора семантика синхронізації ( Люстер, реактивне програмування]? Чи забороняєте ви рекурсії мати статичний графік (StreaMIT) або надаєте більш виразну силу, маючи динамічний планувальник (Intel CnC)? Чи існує обмеження кількості вхідних або вихідних ребер? Чи дозволяє семантика стрільби запускати вузол, коли є підмножина вхідних даних? Це крайові потоки даних (обробка потоків) або окремі лексеми даних (статичне / динамічне однозначне призначення). Для пов’язаної роботи ви можете почати з вивчення дослідницької роботи потоків даних таких людей, як Арвінд, К. Каві, j. Шарп, У. Акерман, Р. Джаганнатхан тощо.

Редагувати: заради повноти. Слід зазначити, що існують також паралельні моделі, орієнтовані на скорочення та моделі, керовані візерунком . Для стратегій скорочення у вас широко є скорочення графіків і скорочення рядків. Haskell в основному використовує скорочення графіків, що є дуже ефективною стратегією в послідовній системі спільної пам'яті. Скопіювання рядків-дублікатів працює, але має властивість приватної пам’яті, що робить її більш підходящим для неявного паралелізації. Моделі, що керуються шаблоном, є паралельними мовами логіки, такими як паралельний пролог. Модель Actor - це також модель, керована візерунком, але з приватними характеристиками пам'яті.

PS. Я широко використовую термін «модель», охоплюючи абстрактні машини для формальних і програмних цілей.


Я не розумію, як mapreduce утворює дерево. Чи можете ви пояснити?
Riko Jacob

@Riko Jacob, дозвольмо сказати, що ви накреслюєте "+" на (1 2 3 4), концептуально це створює дерево додатка з "+" на кожному вузлі та кожному номері у вигляді листя. зменшення (або складання, якщо ви з хаскелю) згортає кожен вузол із даними своїх дітей.
Яловичина

K2,2

Якщо ви не вказуєте на створення самого графіка (наприклад, зіставлення a, b до клавіш / vale пар), ви отримаєте два дерева, які роблять скорочення, з трохи доброї волі :) Можливо, це більше графік, пов’язаний з k або грат як ти сказав. Ви маєте рацію, що це трохи загальніше, ніж просте дерево. Я намагався розрізняти більш загальні структури потоків даних DAG.
Яловичина

8

Для архітектур, що передають повідомлення, модель, яка досить схожа на BSP, але простіше в роботі і з аналізом продуктивності, близьким до того, що ви дійсно отримуєте на реальній машині, це, звичайно, багатокомп'ютер CGM або Coarse Grained. Він був запропонований Франком Дене, і ви знайдете багато цікавих робіт, в яких представлені алгоритми, розроблені в цьому контексті.

CGM підходить для крупнозернистих архітектур, припускаючи процесори p, кожен з яких має локальну пам'ять O (n / p) та розмір вхідного n набагато більший (порядків величини один від одного), ніж p, тобто p≪n. Тому модель відображається набагато краще, ніж інші, в сучасних архітектурах; це було вивчено широко. Модель базується на таких припущеннях: (i) алгоритми виконують так звані супердіапазони, що складаються з однієї фази локального обчислення та однієї фази міжпроцесорного зв'язку з проміжною бар'єрною синхронізацією; (ii) всі процесори p мають доступ до O (n / p) локальна пам'ять, (iii) у кожному наднокровному процесорі процесор може надсилати та приймати щонайбільше O (n / p) елементів і (iv) мережа зв'язку між процесорами може бути довільною. У цій моделі алгоритм оцінюється wrt, його час обчислення та кількість раундів зв'язку. Хоча модель проста, проте вона забезпечує розумне передбачення фактичних показників паралельних алгоритмів; Дійсно, паралельні алгоритми для КГМ мають, як правило, теоретичний аналіз складності, дуже близький до фактичного часу, визначеного експериментально при їх впровадженні та порівняльному оцінці.



4

З того, що мені відомо, сьогодні моделі BSP і LogP використовуються для розподілених алгоритмів. Крім того, після обчислення GPU, PRAM як знову стає популярним, однак слід включити в аналіз ієрархії пам'яті. Ви можете перевірити модель UPMH (Уніфікована ієрархія паралельної пам'яті), яка чудово доповнює PRAM.

Б. Альперн, Л. Картер, Е. Фейг та Т. Селкер. Уніфікована модель обчислення ієрархії пам'яті. Algorithmica, 12: 72–109, 1994. 10.1007 / BF01185206.

Боуен Альперн, Ларрі Картер та Жанна Ферранте. Моделювання паралельних комп'ютерів як ієрархій пам'яті. В In Proc. Моделі програмування для масово паралельних комп’ютерів, стор. 116–123. IEEE Computer Society Press, 1993.

Також для обчислень GPU була запропонована теоретична модель обчислень; K-модель:

Габріеле Капанніні, Фабріціо Сільвестрі та Раньєрі Бараглі. K-модель: Нова обчислювальна модель для потокових процесорів. У матеріалах 12-ї Міжнародної конференції IEEE з питань високоефективних обчислень та комунікацій, HPCC '10, стор. 239–246, Вашингтон, округ Колумбія, США, 2010. IEEE Computer Society.

Нарешті, я бачив стільникові автомати (CA), змодельовані як паралельні комп'ютери, особисто я думаю, що це дуже цікава тема дослідження. Хто знає, в майбутньому процесори будуть зроблені таким чином, як невеликі простори обчислень. У мене немає твердої посилання на це, ви можете подивитися в Інтернеті.


3

Суто функціональні програми дозволяють паралельно виконувати незалежні вирази. Отже, я вважав би їх паралельними моделями обчислення.


Немає конкретної моделі витрат, пов'язаної з функціональним програмуванням, тому це не відповідає на питання. Дивіться cstheory.stackexchange.com/questions/376/…
Чарльз Стюарт

2
Механізмом оцінювання таких мов на основі лямбда-числення є скорочення, яке насправді не має прямого відображення на фактичне обладнання. Ось чому Haskell все ще повинен вводити явні паралельні конструкції на зразок 'par'. довідка: csg.csail.mit.edu/projects/languages/ph.shtml
Яловичина

3

Я віддаю перевагу підходу Бадер-Джаджа (див. Розділ 2.1). Ви моделюєте складність як проблему передачі повідомлення. Для кожного надісланого повідомлення існує як змінна для затримки для ініціювання зв'язку, так і змінна для пропускної здатності.

tumptump


-3

Ви конкретно згадуєте хмарні обчислення. спостерігається в протягом всього кілька років інтенсивних інновацій в цій галузі з пружним обчислювальним хмарою Amazon, в Google App Engine і різними інструментами і пов'язані з ними «моделями» обробки концептуальних паралельно.

спеціальні засоби з відкритим кодом включають в себе бази даних Google Mapreduce , Apache Hadoop та NoSQL, які стають новими, сильними, широко адаптованими стандартами в алгоритмі паралелізації "кращі практики" та "схеми дизайну". Також memcacheD все частіше використовується як розподілена в пам'яті база даних. приклад цього використовується у Facebook, описаному в недавньому документі [1].

[1] Багато ключових сховищ ключових цінностей від Berezecki et al


знову. Я прошу моделей або паралельних обчислень. Не інструменти. MapReduce - одна з таких моделей. Однак Hadoop і NoSQL це не так. Hadoop - це перетворення MapReduce на основі Java. NoSQL - це модель для розслаблених магазинів ключів із того, що я можу сказати.
Ніколас Манкузо

MapReduce почався як інструмент і перейшов до моделі завдяки широкому використанню / впровадженню. те ж саме з іншими. Hadoop не ідентичний MapReduce, але, можливо, схожий. так, я думаю, що мене відкинув відповідь Суреша, який включав MapReduce ... люди, здається, не дуже переймаються або вважають за краще не обговорювати фактичні пакети програмного забезпечення на цьому сайті ... незалежно від того, наскільки широко використовується .. навіть з огляду на те, що вони надихають /
перехресно опромінюють

2
Справа в тому, що ви не відповідаєте на питання. Політика навколо полягає в тому, що пропозиції, дотичні до питання, не є прийнятними відповідями. якщо ця політика вам не подобається, ви можете вирішити не брати участь. якби у вас були актуальні ідеї, як моделювати реальну паралельну систему, це було б більше на тему (хоча все ще не відповідь на поставлене запитання)
Сашо Ніколов

-3

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

див., наприклад, паралельні ймовірнісні обчислення на кластері робочих станцій Раденський, Ванн, Норріс:

Імовірнісні алгоритми є обчислювально інтенсивними наближеними методами вирішення нерозв'язних задач. Імовірнісні алгоритми є чудовими кандидатами для кластерних обчислень, оскільки вони вимагають невеликого зв'язку та синхронізації. Можна вказати загальну паралельну структуру управління як загальний алгоритм для імовірнісних обчислень кластера. Такий загальний паралельний алгоритм можна склеювати разом із специфічними для домену послідовними алгоритмами, щоб отримати приблизні паралельні рішення для різних нерозв'язних задач. У цій роботі ми пропонуємо загальний алгоритм для імовірнісних обчислень на кластері робочих станцій. Ми використовуємо цей загальний алгоритм для виведення конкретних паралельних алгоритмів для двох дискретних задач оптимізації: проблеми з ранком і проблеми продавця, що подорожує.

у випадку, якщо це не зрозуміло, "загальна паралельна структура управління як загальний алгоритм", яку називають разом з імовірнісним обчисленням і загальним перетворенням, є "моделлю".

можна стверджувати, що ймовірнісні обчислення не є строго класичними обчисленнями або Тьюрінгом завершеними. тож зауважте, що є певна робота з прив'язки класичного до ймовірнісних обчислень, зокрема, у паралельному контексті, наприклад

Обґрунтування ймовірнісних паралельних програм від Рао:

Використання рандомізації в розробці та аналізі алгоритмів обіцяє прості та ефективні алгоритми складних проблем, деякі з яких можуть не мати детермінованого рішення. Це посилення простоти, ефективності та вирішуваності призводить до компромісу традиційного поняття абсолютної правильності алгоритмів на більш кількісне поняття: правильність з вірогідністю від 0 до 1. Додавання поняття паралелізму до вже неінтуїтивного Ідея рандомізації робить міркування про ймовірнісні паралельні програми все більш обтяжливими та складними. У цьому документі ми розглядаємо проблему конкретизації та виведення властивостей ймовірнісних паралельних програм, які або детерміновано, або з ймовірністю 1.

звичайно, обчислення QM дуже схоже на ймовірнісні обчислення (приємний відгук, який підкреслює, що це погляд одного теоретика складності на квантові обчислення від Fortnow ), і є певний натяк, що ці підходи можуть бути розширені там, наприклад, у роботі паралельного моделювання QM.


-6

деякі вважатимуть це суперечливим, і навіть прихильникам цього кута доведеться визнати його на ранніх стадіях досліджень, але в основному квантові обчислення, здається, мають багато зв’язків з паралелізмом та паралельними обчисленнями. посилання зараз розкидані, але виникаючу тему може побачити рішучий дослідник.

можливо, найкращий зв’язок - з алгоритмом пошуку Grovers, який останнім часом виявився більш загальним у сенсі того, що він може бути використаний для прискорення роботи більшості повних проблем NP [5]. Алгоритм Grovers, здається, має сильну аналогію / зв'язок з алгоритмами паралельного пошуку в базах даних. найкращі класичні серійні алгоритми не можуть відповідати однаковій продуктивності, але принаймні один авторитет нещодавно стверджує, що підходи до пошуку QM насправді не перевершують паралелізовані класичні алгоритми. [1]

подальшими доказами є схеми, які явно розглядають паралелізм у квантовому пошуку, наприклад [2]. також були запропоновані квантові симулятори, які ґрунтуються на паралельній / розподіленій обробці [3] [4], і оскільки схема добре вписується та призводить до ефективних та простежуваних моделювань (30 кубітів моделюються в роботі [3]), це перетворення це, звичайно, не просто збіг і вказує на більш глибокий міст між паралельними класичними обчисленнями та обчисленнями QM, але, ймовірно, поки що не розкрито.

[1] Чи є квантовий пошук практичним? від Viamontes та ін

[2] Точний квантовий пошук за паралельними унітарними схемами дискримінації Ву / Діаном

[3] Паралельний тренажер загального призначення для квантових обчислень від Niwa, Matsumoto, Imai.

[4] ефективні розподілені квантові обчислення від Beals et al 2012

[5] Розв’язання NP повних задач з квантовим пошуком Furer 2008


@vnz, це, мабуть, є у кращому випадку випадковим відхиленням квантових понять. Гуглінг "паралельного кванту" та перерахування результатів тут не корисний мені та іншим, хто читає це. Я думаю, що для громади було б краще реагувати на відповіді, до яких ви почуваєтесь комфортно і знаєте, а не просто робити безумний штрих для репутації. Думати про квантові обчислення як паралельний пошук неконструктивно і, можливо, неоднозначно. Для квантового обчислення, використовуючи ваш опис, "сильні аналогії / зв'язки" з імовірнісним пошуком, а не паралельними.
Ніколас Манкузо

Я не знаю, що догма викладається в аудиторіях, але якщо хтось там насправді має ВИПОВІДЬ, а не просто БЕЗПЕЧНІ ПІДТВЕРДЖЕННЯ, що вказує на те, чому немає дійсності до поки що непокритої кореспонденції QM, що проводить паралельні класичні обчислення .... Я читаю ІТ. Обчислення QM повертає точні відповіді ала / наприклад, короткий факторинг, інакше це не фактична система обчислень ..... Є також інші способи, ніж я ескізую, щоб продемонструвати, що обчислення QM повинні бути еквівалентними паралельним класичним обчисленням у певному сенсі ... можливо оскільки його немає в підручнику, воно повинно бути неправильним, так!
vzn

Тут є цілий безкоштовний курс з квантових обчислень: coursera.org він може прояснити вам речі.
Ніколас Манкузо

ps щодо "халатника" ... спробуй насправді ЧИТАННЯ ПОСИЛАННЯ .. або, можливо, просто перебираючи їх у вашому випадку wink =)
vzn

1
(6.) Ваша довідка. [5] описуються способи, за якими алгоритм Гровера може бути розширений, знову ж таки, не звертаючись до паралелізму, який ви шукаєте при квантових обчисленнях. Підсумовуючи це: ваша інтерпретація того, що існують зв'язки між квантовими та паралельними обчисленнями, здається, випливає з тлумачення QM у багатьох світах. Він не є незрозумілим, але він також не є безперечним і, безумовно, не дозволяє нам продуктивно описувати квантові обчислення як "паралельні обчислення", за винятком того, що ми не бачимо цих обчислень ... що не є сильним аргументом для їх наявність.
Ніль де Бодорап
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.