Масштабований паралелізм

Масштабований паралелізм — це використовування додаткових процесів для розв'язання великих проблем.

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

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, це функціональна мова програмування загального призначення, основні цілі її розробки — це продуктивність на багатоядерних апаратних засобах, простота програмування, зрозумілий код, який можна легко прочитати.

Примітки ред.

  1. Wonnacott, D. (2000). Proceedings 14th International Parallel and Distributed Processing Symposium. IPDPS 2000: 171. doi:10.1109/IPDPS.2000.845979. ISBN 0-7695-0574-0. {{cite journal}}: Проігноровано |chapter= (довідка)

Посилання ред.