Аналіз комутативності; EWSTПерекласти
Резюме
Паралельні машини обіцяють значне збільшення продуктивності, що дозволяє декільком процесорам одночасно виконувати різні частини обчислення. Розробники традиційно розробляли програми для паралельних машин, що використовують явно паралельні мови. На відміну від послідовних мов програмування, явно паралельні мови мають складну модель програмування, що характеризується такими явищами, як блокування, недетерміноване виконання та, у випадку з машинами повідомлень, необхідністю безпосереднього управління потоком даних шляхом обчислення. Очевидні програмовані переваги послідовної імперативної парадигми програмування надихнули на розробку методів аналізу та компілятора, призначених для автоматичного розпаралелювання послідовних програм.

Аналіз комутативності - це статична система аналізу для виявлення човникових операцій. Дві операції рухаються, коли вони генерують однаковий результат, незалежно від порядку їх виконання. Аналіз комутативності знімає багато обмежень існуючих підходів, заснованих на залежності даних Замість того, щоб зберігати відносний порядок індивідуальних показань і записів в окремих словах пам'яті, аналіз комутативності агрегує як дані, так і обчислення у великих одиницях зерна. Потім статистично проаналізуйте обчислення за такої деталізації, щоб з’ясувати, коли деталі у вихідному обчисленні генерують однаковий результат, незалежно від порядку, в якому вони виконуються. Якщо всі операції необхідні для виконання певного обчислювального човника, компілятор може автоматично генерувати паралельний код.
Цей підхід має кілька цікавих властивостей. Оскільки аналіз комутації не базується на інформації про топологію маніпульованих структур даних, компілятору, який використовує аналіз комутації, не потрібно аналізувати частини коду, які будують структуру даних. Тому аналіз комутованості підходить для неповних розрахунків, таких як програми, які обробляють постійні дані (наприклад, об'єктно-орієнтовані програми баз даних), або програми, які маніпулюють географічно розподіленими даними (наприклад, мобільні розрахунки у Всесвітній павутині). ). У цих випадках код, який спочатку створив структуру даних, може бути недоступним або більше не існувати. Аналіз комутативності також особливо підходить для розрахунків, які маніпулюють графіками.
Ці експериментальні результати дуже обнадійливі. Ці програми мають дуже динамічний характер - або маніпулюють складними структурами даних на основі покажчиків, або представляють високодоступні моделі доступу до даних. Використання паралелізму з грубими зернами в додатках з цими характеристиками було визнано дуже складною проблемою. Ми не знаємо жодної іншої компіляції чи техніки компіляції, яка могла б отримати значну кількість паралелізму для цих розрахунків. Більше того, позитивні експериментальні результати дають конкретні докази практичного значення аналізу комутативності як техніки автоматичного складання паралелізації.