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


27

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


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

Алгоритм Грам Шмідта: en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process

3
@Anycorn Ні, класичний Грам-Шмідт і ліворуч модифікований Грам-Шмідт добре працюють паралельно. Існує багато інших паралельних QR-алгоритмів, включаючи нещодавно популяризований TSQR.
Джед Браун

@Raphael: Я думаю, що ist можна пришвидшити бінарний пошук за допомогою фактора log (n), n = # процесорів. Замість того, щоб розділити інтервал пошуку на частини і перевірити, де продовжувати, поділіть інтервал на n частин. Можливо, є більш ефективні способи, я не знаю.
чудо173

Відповіді:


32

Центральне питання довжина критичного шляху по відношенню до загальної кількості обчислень Т . Якщо C пропорційний T , то паралелізм пропонує в кращому випадку постійну швидкість. Якщо C асимптотично менший, ніж T , виникає можливість для більшого паралелізму, оскільки розмір проблеми збільшується. Для алгоритмів, у яких T є поліном на вхідному розмірі N , найкращий випадок - C log T, оскільки дуже мало корисних величин можна обчислити за менший, ніж логарифмічний час.CTCTCTTNClogT

Приклади

  • для тридіагонального рішення з використанням стандартного алгоритму. Кожна операція залежить від завершення попередньої операції, тому немає можливості для паралелізму. Тридіагональні задачі можуть бути вирішені в логарифмічному часі на паралельному комп'ютері за допомогою вкладеного прямого розбиття, розкладання багаторівневого домену або мультисередовища з базовими функціями, побудованими за допомогою гармонічного розширення (ці три алгоритми відрізняються за кількома розмірами, але можуть точно збігатися в 1D).C=T
  • Щільне нижньо-трикутне рішення з матрицею має T = N = O ( m 2 ) , але критичний шлях лише C = m = m×mT=N=O(m2) , тому деякий паралелізм може бути корисним.C=m=T
  • Многосеточние і ФММИ обидва мають , з критичним довжиною шляхом C = увійти T .T=NC=logT
  • Явне поширення хвилі за час на звичайній сітці домену ( 0 , 1 ) d вимагає k = τ / Δ t τ N 1 / d часові кроки (для стабільності), тому критичний шлях становить щонайменше C = k . Загальний обсяг роботи T = k N = τ N ( d + 1 ) / d . Максимальна корисна кількість процесорів - P = Tτ(0,1)dk=τ/ΔtτN1/dC=kT=kN=τN(d+1)/d , решта коефіцієнта N 1 / d не може бути відновлена ​​шляхом збільшення паралелізму.P=T/C=NN1/d

Формальна складність

Клас складності NC характеризує ті проблеми, які можна ефективно вирішити паралельно (тобто в полілогіармічний час). Невідомо, чи , але широко вважається хибним. Якщо це дійсно так, то P-завершення характеризує ті проблеми, які "є за своєю суттю послідовними" і не можуть бути суттєво усунені паралелізмом.NC=P



9

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

Крім цього, ключовим питанням часто є вузьке місце в пропускній здатності пам'яті. Зокрема, для більшості GPU ваші теоретичні флопи значно перевищують кількість цифр з плаваючою комою, які ви можете дістати до своїх ALU, оскільки такі алгоритми з низькою арифметичною інтенсивністю (flops / cache-miss) витратять величезну частину часу на очікування оперативної пам'яті.

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

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

Приклад без проблеми розгалуження - обчислити вектор, який є сукупною сумою іншого вектора. ([1,2,1] -> [1,3,4])

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


3
Приклад "вільного розгалуження", який ви подали, - це префікс-сума, яка насправді має хороший паралельний алгоритм: http.developer.nvidia.com/GPUGems3/gpugems3_ch39.html Обчислення кількості нулів повинно бути ефективним з аналогічних причин. Хоча арифметичної інтенсивності немає, хоча ...
Макс Хатчінсон

Класно. Я виправлений на цьому.
meawoppl

8

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

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

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

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


Хороший приклад, але я не вірю вашій нижній межі. Зокрема, для вирішення рівняння ейконалу можна використовувати багаторідкі методи. Як і для мультирешітки для високочастотного Гельмгольца, проблеми в основному полягають у проектуванні відповідних грубих просторів. У разі лабіринту стратегія агрегації графіків повинна бути ефективною, при цьому грубе подання визначається шляхом вирішення локальних (таким чином незалежних) задач для сегментів лабіринту.
Джед Браун

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

@JedBrown З практичної точки зору, багаторешітка для високочастотного Helmholtz є досить складною, всупереч тому, що, начебто, передбачає ваш коментар. І використання мультирешітки для рівняння ейконалу - як мінімум, - рідше. Але я бачу ваше "теоретичне" заперечення проти запропонованої нижньої межі: зміщення часу з різних точок всередині лабіринту можна обчислити до того, як буде відомий час досягнення цих точок, і додавати їх паралельно після того, як відсутня інформація стане доступною. Але на практиці загальноприйняті паралельні ейкональні вирішувачі раді, якщо вони насправді наближаються до меж.
Томас Клімпель

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

@JedBrown Slide 39 з www2.ts.ctw.utwente.nl/venner/PRESENTATIONS/MSc_Verburg.pdf (з 2010 р.) Говорить про такі речі, як "Розширення розв'язувача від 2D до 3D" та "Адаптація методу до проблем із сильно мінливими хвилями". Тож хвильова багатопроменева мережа може бути багатообіцяючою, але "ще не дозріла" здається більш доцільною, ніж "дуже технічна" для опису її поточних питань. І це насправді не високочастотний вирішувач Гельмгольца (тому що це рішення "повної хвилі"). Є й інші «достатньо зрілі» багаторешітки Гельмгольца («повна хвиля»), але навіть це все ще «активні дослідження».
Томас Клімпель

1

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

Розглянемо для прикладу процес Грама - Шмідта та його послідовну модифікацію. Алгоритм працює з векторами, тому ви можете використовувати паралельні векторні операції, але це не дуже масштабує. Якщо кількість векторів велика, а розмір вектора невеликий, використовуючи паралельну класичну Грам-Шмідта, реортогоналізація може бути стабільною та швидшою, ніж одномодифікований Грам-Шмідт, хоча це передбачає виконання в кілька разів більше роботи.

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