Українська
Чисельні методи та прогноз продуктивності
Паралельне розв’язання нелінійних рівнянь
Корені рівняння
- відокремлення коренів: відрізок ділять на
малих відрізків і знаходять ті, на кінцях яких має різні знаки; на кожному такому відрізку є корінь; - уточнення кожного кореня бісекцією, методом хорд або Ньютона.
Обидва етапи ідеально паралельні: значення
Бісекція (bisection) на кожній ітерації ділить відрізок навпіл і зберігає половину зі зміною знака; після
Метод Ньютона
Метод спряжених градієнтів
Для великих розріджених систем
, , ;- для
: ; ; ; ; - якщо
– кінець; інакше , .
Одна ітерація містить одне множення матриці на вектор, два скалярні добутки і три операції axpy (axpy – повністю паралельні, а скалярні добутки – редукції. Саме редукції обмежують масштабованість: кожна потребує глобальної синхронізації (на кластері – MPI_Allreduce, тема 12), і ітерація не може продовжитися, доки не відоме число
Детермінованість особливо важлива в ітераційних методах: якщо скалярні добутки залежать від порядку завершення потоків, кількість ітерацій може змінюватися від запуску до запуску. У лабораторній роботі (приклад 2) метод спряжених градієнтів для п’ятидіагональної матриці рівняння Пуассона на сітці
Системи звичайних диференціальних рівнянь
Задачу Коші для системи
Похибка на відрізку –
Кроки за часом послідовні:
- паралелізм за траєкторіями (параметричні розрахунки, parameter sweep): систему розв’язують для тисяч наборів параметрів чи початкових умов, і кожна траєкторія незалежна. Це найпростіший і найефективніший випадок, але тривалість траєкторій різна (одна зупиняється за секунду, інша – за хвилину), тому потрібне динамічне балансування. На кластері й у гріді кожна група траєкторій стає окремим завданням (масиви завдань Slurm, тема 13);
- паралелізм за компонентами: для великої системи (метод прямих для рівняння теплопровідності, задача
тіл з мільйонами частинок) обчислення ділять між потоками за компонентами . Між стадіями потрібна синхронізація (чотири бар’єри на крок), тому компонент має бути досить багато, щоб робота стадії переважала бар’єр; - паралелізм за часом (алгоритм Parareal та подібні): грубий послідовний розв’язок уточнюється паралельно на відрізках часу; використовують на дуже великих кластерах, коли інші виміри вичерпано.
У лабораторній роботі (приклад 3) 3072 траєкторії маятника з опором для різних коефіцієнтів опору й початкових швидкостей тривають від кількох до сотень мілісекунд. Блочний розподіл дав прискорення лише 2,3, циклічний – 11,0, а динамічний зі спільним лічильником – 11,9 на 16 логічних процесорах.
Аналітичне прогнозування продуктивності
Закони Амдала й Густафсона (тема 1) оцінюють прискорення за часткою послідовного коду. Для конкретного алгоритму точніший прогноз дає модель часу виконання, складена з етапів PCAM:
де
Приклад: множення матриці на вектор. Для горизонтальних смуг на спільній пам’яті
де double, Parallel.For (кілька мікросекунд). Для вертикальних смуг і шахової схеми додаються редукція часткових векторів і ще один паралельний цикл. Для
Приклад: множення матриць. У лабораторній роботі прогноз
Знімок екрана
Windows Terminal: dotnet run -c Release of the lab example 1 project (MatMul); the table Схема / p / Час, мс / S / Прогноз S / E / max|ΔC| for смуги, шахова, Кеннон
Рис. 8.11. Прогноз і вимірювання прискорення
Ізоефективність
Ефективність можна записати через накладні витрати
Зі збільшенням
Залежність
Таблиця 8.6. Функції ізоефективності типових алгоритмів
| Алгоритм (розподілена пам’ять) | Накладні витрати | Ізоефективність |
|---|---|---|
| сума | ||
| матриця на вектор, смуги | ||
| матриця на вектор, шахова | ||
| множення матриць Кеннона |
Наприклад, для суми