Масштабований паралелізм
Масштабований паралелізм — це використовування додаткових процесів для вирішення великих проблем.
Програмне забезпечення демонструє масштабований паралелізм, якщо воно може використовувати додаткові процесори для вирішення великих проблем, тобто цей термін відноситься до програмного забезпечення, для якого дійсний закон Густафсона. Розглянемо програму, в часі виконання якої домінує один або більше циклів, кожен з який оновлює кожен елемент масиву. Наприклад, наступний розрахунок методом скінченних різниць рівняння теплопровідності трафарету:
for t := 0 to T do for i := 1 to N-1 do new(i) := (A(i-1) + A(i) + A(i) + A(i+1)) * .25 // explicit forward-difference with R = 0.25 end for i := 1 to N-1 do A(i) := new(i) end end
У наведеному вище коді, ми можемо виконати всі ітерації кожної «i» циклу одночасно, тобто перетворити в паралельний цикл. У таких випадках часто можна ефективно використовувати в два рази більше процесорів, як і для проблеми з розміром масиву 2N, так і для проблеми з розміром масиву N. В цьому прикладі, масштабований паралелізм зазвичай являє собою вид паралелізму даних. Ця форма паралельності часто є об'єктом автоматичного розпаралелювання циклів.
Використання
Розподілені обчислювальні системи і архітектури з неоднорідним доступом до пам'яті, як правило, найбільш легко масштабуються для великої кількості процесорів, і, таким чином, здавалося б ідеально взаємодіють з програмним забезпеченням, яке має масштабований паралелізм. Проте, додатки з масштабованим паралелізмом можуть не мати паралелізму «грубого зерна», щоб ефективно працювати на таких системах (хіба-що програмне забезпечення приголомшливо паралельне). У нашому прикладі вище, другий «i» цикл приголомшливо паралельний, але в першому циклі кожна ітерація вимагає результати, які отримані протягом декількох попередніх ітерацій. Таким чином, для першого циклу, розпаралелювання може включати в себе широкий зв'язок або синхронізацію між процесорами, і призведе до чистого прискорення, тільки якщо такі взаємодії мають дуже низькі накладні витрати, або якщо код може бути перетворений, щоб вирішити цю проблему (за допомогою оптимізації масштабованого паралелізму та масштабованих ділянок)[1].
Мови
- Ateji PX, це розширення Java робить масштабований паралелізм можливим на віртуальній машині Java (JVM)
- SequenceL, це функціональна мова програмування загального призначення, основні цілі її розробки — це продуктивність на багатоядерних апаратних засобах, простота програмування, зрозумілий код, який можна легко прочитати.
Примітки
- Wonnacott, D. (2000). Using time skewing to eliminate idle time due to memory bandwidth and network limitations. Proceedings 14th International Parallel and Distributed Processing Symposium. IPDPS 2000. с. 171. ISBN 0-7695-0574-0. doi:10.1109/IPDPS.2000.845979.
Посилання