Мета: Ознайомитися з законом Амдала, уяснити що він показує і зрозуміти його наслідки. На практиці оцінити прискорення роботи програми, залежно від частки не паралельного коду.
Теоретичні відомості
Залежність коефіцієнта прискорення від числа процесорів і ступеню паралелізму алгоритму називається законом Амдала.
Якщо построїти графік по закону Амдала, то він показує, що при невеликому ступені паралелізму використання великого числа процесорів не дає значного виграшу в швидкодії. Якщо ж ступінь паралелізму достатньо великий, то коефіцієнт прискорення може бути достатній великим.
Наявність послідовних частин коду. Закон Амдала і його наслідки.
Нехай f - це частка послідовних обчислень, 0< f <1. Максимальне прискорення S, досяжне на обчислювальній системі з P процесорів, можна оцінити за допомогою наступної формули, закона Амдала:
S (7.1)
Закон Амдала має наступні наслідки: Завжди при будь-якому скільки завгодно великому числі процесорів, незалежно від якості реалізації паралельної частини коду.
S < . (7.2)
Таким чином, якщо наприклад половина коду виконаються послідовно, то більш ніж в 2 рази код прискорити в принципі неможливо ні на якій паралельній обчислювальній системі. Крім того із закону Амдала виходить, що
f , (7.3)
тобто якщо, наприклад, необхідно на 10 процесорах дістати прискорення в 9 разів, то необхідно, щоб 99 % коду виконувалося паралельно (f 1.2 %).
Із закону Амдала виходить висновок про те, що наявність навіть невеликих послідовних частин коду істотно знижує паралельну ефективність програми.
Наприклад, якщо, треба вірішити задачу, якого прискорення можна досягти при збільшенні швидкості виконання комунікаційних операцій в 10 разів, якщо в даний момент комунікації займають 20% часу, то згадно з законом Амдала, рішення буде:
S=1/(0.2/10+0.8)=1.25
Хід роботи:
Побудуйте графік прискорення роботи програми залежно від частки не паралельного коду. Дані для побудови графіку, в таблиці 7.1.
Таблиця 7.1
Варіанти для виконання лабораторної роботи
№ варіанта | Число процесорів | Процент послідовного коду, % | |||
Контрольні запитання:
1. Закон Амдала. Ефективність використання процесорів, ступінь паралелізму.
2. У чому полягає суть закону Амдала? Що таке прискорення?
3. Сформулюйте слідство із закону Амдала.
4. Що показує графік залежності коефіцієнта прискорення від числа процесорів і ступеню паралелізму алгоритму.
5. У вас є програма і доступ, до 256-процесорного комп'ютера. Чи виконуватиметься програма в 256 разів швидше, ніж на одному процесорі?
6. У якому випадку не можливо отримати 50% прискорення роботи програми?