Анотація: сучасні комп’ютери, надаючи програмістам позірно простий інтерфейс, заради ефективності, дуже складно організовані. Однак, за прямолінійного
програмування, утилізуються лише десяті відсотка їх максимальної обчислювальної потужності. Щоб використовувати цю потужність ефективно, слід добре знати їх внутрішню будову. Мета та цілі курсу: познайомитися із архітектурними рішеннями, на яких базуються сучасні високопродуктивні комп’ютерні системи. Навчитися використовувати їх для підвищення ефективності програмного забезпечення.
Теми:
1.Проблема продуктивності обчислювальних систем
2.Класифікація паралелізму
3.Архітектура та мікроархітектура мікропроцесорів
4.Підсистема пам’яті, ієрархія кешів
5.Тривіальні приклади розпаралелення обчислень
6.Мультипроцесори
7.Розпаралелення крупнозернистих задач
8.Мультикомп’ютери та розподілені системи
9.Методологія побудови паралельних програм
10.Засоби синхронізації
11.Підходи до реалізації паралельних API в С++, Python, Java
12.Протокол MPI
13.CUDA, oneAPI та OpenCL
14.Представлення та захист проектів