Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 1_ ПРО.doc
Скачиваний:
8
Добавлен:
14.07.2019
Размер:
211.46 Кб
Скачать

Прискорення і ефективність паралельного алгоритму Прискоренням паралельного алгоритму називається відношення:

(4)

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

З прискоренням пов'язана ефективність паралельного алгоритму.

Ефективністю паралельного алгоритму називається величина:

(5)

По визначенню, . Теоретично має бути і . Якщо алгоритм досягає максимального прискорення ( ), то . На практиці зменшується при збільшенні числа процесорів.

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

  • Як послідовний алгоритм був застосований не найшвидший алгоритм з доступних.

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

Закон Амдаля

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

• Відсутність максимального паралелізму в алгоритмі і/або незбалансованість навантаження процесорів.

• Обміни, конфлікти пам'яті і час синхронізації.

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

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

Звернемося тепер до фактору відсутності максимального паралелізму. Він може проявлятися по-різному. При додаванні n чисел видно, що на першому етапі алгоритму паралелізм максимальний, однак на кожному наступному етапі ступінь паралелізму зменшується вдвічі. Таким чином, у більшості випадків середня ступінь паралелізму алгоритму менше n.

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

(6)

де час, що витрачається на реалізацію алгоритму на одному процесорі, - частка операцій в алгоритмі, виконуваних одним процесором, - частка операцій, що виконуються усіма p процесорами, - загальний час, необхідний для підготовки даних. У разі якщо і , прискорення максимальне: . Передумови даного випадку полягають в тому, що всі операції виконуються з максимальним паралелізмом і відсутні затримки на підготовку даних. У випадку отримуємо формулу, яка називається закон Амдаля:

(7)

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

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

8