Як масштабувати результати паралельної складності до багатьох ядер?


20

У мене виникли проблеми з прийняттям теоретичного уявлення про складність «ефективного рішення паралельного алгоритму», яке задається класом NC :

NC є класом проблем , які можуть бути вирішені з допомогою паралельного алгоритму під час O(logcn) на p(n)O(nk) процесори з c,kN .

Ми можемо припустити ПРАМ .

Моя проблема полягає в тому, що це, здається, не дуже говорить про "справжні" машини, тобто машини з обмеженою кількістю процесорів. Тепер мені кажуть , що «відомо» , що ми можемо «ефективно» імітувати O(nk) алгоритм процесора на pN процесорів.

Що тут означає «ефективно»? Це фольклор чи існує сувора теорема, яка кількісно визначає накладні витрати, зумовлені імітацією?

Боюся, що це трапляється, це те, що у мене є проблема, яка має послідовний алгоритм O(nk) , а також "ефективний" паралельний алгоритм, який під час імітації на p процесорах також займає час O(nk) (що все що можна очікувати на цьому рівні деталізації аналізу, якщо послідовний алгоритм є асимптотично оптимальним). У цьому випадку немає швидкого прискорення, наскільки ми бачимо; насправді модельований паралельний алгоритм може бути повільніше, ніж послідовний алгоритм. Тобто я дійсно шукаю твердження, точніші за обмеження O (або заяву про відсутність таких результатів).


Теорема Брента?
cic

Ви маєте на увазі ? Якщо так, це (afaik) застосовується лише за певних обставин, а також не дозволяє відразу перекладати час виконання. Або якщо так, то уточнюйте у відповіді. Tp<Wp+D
Рафаель

NC відповідає на запитання "чи можна компромісувати більше апаратного забезпечення за менший час роботи?" Можливо, ви хочете обмежити себе постійним обладнанням, і це схоже на обмеження себе постійною пам'яттю, краще моделювання деяких проблем. Для практичного використання див. Носії присадки для очищення, більше апаратних засобів, так що додавання біт проводиться в O ( N ) . NO(N)
AProgrammer

Відповіді:


13

Якщо ви припускаєте, що кількість процесорів обмежена постійною, то ви маєте рацію, що проблема, що знаходиться в NC, на практиці не означає багато. Оскільки будь-який алгоритм на PRAM з k- процесорами і t паралельним часом може бути змодельований однопроцесорною ОЗУ в О ( kt ) час, паралельний час і послідовний час можуть відрізнятися лише постійним коефіцієнтом, якщо k є постійною.

Однак якщо ви припускаєте, що ви можете підготувати комп’ютер з більшою кількістю процесорів у міру збільшення розміру входу, то проблема, що знаходиться в NC, означає, що поки ви зможете підготувати більше процесорів, час роботи буде "дуже коротким" або, точніше, полілогіармічний у вхідному розмірі. Якщо ви вважаєте, що це припущення є нереальним, порівняйте його з припущенням про необмежену пам'ять: фактичні комп’ютери мають лише обмежену кількість простору, але при вивченні алгоритмів та складності ми майже завжди припускаємо, що обчислювальний пристрій не має постійної верхньої частини пов'язані з простором. На практиці це означає, що ми можемо підготувати комп’ютер з більшою кількістю пам'яті у міру збільшення розміру вводу, саме так ми зазвичай використовуємо комп’ютери в реальному світі. NC моделює аналогічну ситуацію при паралельних обчисленнях.


1
1) Так, паралелізація постійно багатьох ядер може давати лише постійне прискорення. Це властиво і сумно приховано в -термінах. Цікаве (імхо) питання: чи можу я отримати (оптимальну) швидкість k , або лише k / 2 , або k - 1 ? 2) Хоча припущення про нескінченну пам'ять можна виправдати наявністю безлічі оперативної пам’яті (і, технічно, ви можете додати жорсткий диск), це, як правило, не стосується процесорів. У типових (персональних) машинах на сьогоднішній день є 16 або менше ядер. Іншими словами, ви можете використовувати "звичайні" результати до відповідних розмірів проблеми, багато паралельних результатів - лише до n 20 .Okk/2k1n20
Рафаель

4
@Raphael: Питання про те, чи належить певна проблема до NC чи ні, не моделює ваше питання. Я не кажу, що ваше питання нецікаве; Я просто кажу, що NC не є правильним класом складності для моделювання цього.
Цуйосі Іто

Я насправді радий це почути; хоча людина стверджує інакше. Не обов'язково з НК, але зі складністю теоретичних результатів загалом. Як з іншими класами?
Рафаель

Виправлення. Проблема в NC означає, що час роботи є полілогіармічним, якщо кількість процесорів є достатньо великим многочленом у вхідному розмірі. В імовірно більш реалістичному сценарії, коли кількість процесорів є фіксованим многочленом, як або повільніша непостійна функція, якO(logn), членство в NC формально взагалі нічого не передбачає. O(n)O(logn)
JeffE

@JeffE: Це не виправлення. Я лише написав «підготувати більше процесорів», не надаючи суворого сенсу (бо думав, що це затьмарить суть).
Цуйосі Іто

10

Я згоден з вами, що NC - це не найкращий спосіб характеризувати ефективні паралельні алгоритми.

Дійсно, за визначенням НК також включає безліч проблем, які не є ефективно паралельними. Поширений приклад - паралельний бінарний пошук. Проблема виникає через те, що паралельний двійковий пошук має складну полілогіармічну часову складність навіть для . Будь-який послідовний алгоритм, що вимагає в найбільш логарифмічний час у гіршому випадку, знаходиться в N Cp=1NC незалежно від його паралельної можливості.

Але зачекай, є більше.

Алгоритми N C передбачають паралельні машини з поліноміальним числом процесорів для вирішення в полілогіармічний час задач середнього розміру. Однак на практиці ми використовуємо машини середнього розміру (з точки зору процесорів) для вирішеннявеликихпроблем. Кількість процесорів, як правило, субліномальна, навіть підлінійна.NC

Нарешті, існують проблеми в з паралельним сублінеен часу O ( п е ) , 0 < ε < 1 .Therefore, ці проблеми не належать до N C . Тепер підлінійні функції можуть мати відповідну асимптотичну поведінку лише для непрактично великих значень n , а можуть бути набагато менш прогресивними для практичних значень n . Як приклад,PO(nϵ),0<ϵ<1NCnnдляn0,5×109. Звідси випливає, що алгоритми підлінійного паралельного часуможутьn<lg3nn0.5×109 працювати швидше, ніж алгоритми NC

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

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

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

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

n3n

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.