DSCM028 Високопроизводителни изчисления
Анотация:
Целта на курса е да даде солидни основи и практически умения за разработването, анализирането и реализирането на паралелни алгоритми. Разглеждат се организацията на паметта, таксономията на паралелните компютърни архитектури, принципите за паралелизация на изчисленията във високопроизводителните компютърни системи, многонишково и многопроцесорно изпълнение, архитектурата на графичните ускорители. Някои теоретични алгоритми от курса се прилагат на практика чрез използването на CUDA за графични процесори и системи с разпределена памет.
По същество курсът е приложение на паралелното програмиране. Особено внимание е обърнато на тези технологии, които се използват за изчисляване на модели от машинното обучение или за обработване на големи данни.
Преподавател(и):
доц. Стоян Мишев д-р
доц. Ясен Горбунов д-р
Описание на курса:
Компетенции:
Успешно завършилите курса студенти:
1) знаят:
* Фундаменталните принципи, налагащи ограниченията в производителността на всеки съвременен компютър;
* Основните форми на паралелизъм в изчислителните задачи;
* Как да подходят при съставяне на високопроизводителни програми;
* Основните идеи, залегнали в архитектурите на графичните процесори;
* Похвати и методи за оценяването на максималната производителност, достъпна за дадена изчислителна задача при изпълнението на дадена компютърна конфигурация;
* Програмни средства за паралелни изчислителни ресурси -- многопроцесорни системи, GPGPU, клъстери;
2) могат:
* Да оценяват теорeтичната производителност на една изчислителна задача върху дадена компютърна конфигурация;
* Да профилират приложения с цел откриване на 'горещите места' за производителността им;
* Да създават прости приложения, използващи многопроцесорни и GPGPU конфигурации с помощта на CUDA
* Да адаптират алгоритми, включително и такива за машинно обучение, за графични процесори
Предварителни изисквания:
Необходими са знания по дискретна математика, информатика и информационни технологии, компютърни архитектури, език за програмиране Python.
Форми на провеждане:
Редовен
Учебни форми:
Лекция
Език, на който се води курса:
Български
Теми, които се разглеждат в курса:
- Въведение в курса. Организация и основни характеристики на съвременните високопроизводителни компютри.
- Структура и организация на процесора. Управление на изпълнението на операциите с конвейеризация.
- Йерархия на паметта в компютърните системи. Принцип за взаимодействие с входно-изходни устройства. Инструкционен паралелизъм в компютърните системи.
- Високопроизводителни компютърни системи с паралелизъм на ниво процеси. Многопроцесорни архитектури. Суперкомпютри.
- Високопроизводителни компютърни системи с паралелизъм по данни.
- Архитектура на графични ускорители.
- Контролна работа 1
- Програмиране за графични процесори (GPU)
- CUDA библиотеки за машинно обучение (cuBLAS, cuSOLVER, cuRAND, cuTENSOR, TensorRT)
- Въведение в CUDA Deep Neural Network library (cuDNN)
- Реализиране на някои алгоритми за машинно обучение чрез CUDA
Литература по темите:
1. Thomas Sterling, Maciej Brodowicz, Matthew Anderson, High-Performance Computing: Modern Systems and Practices 1st ed., Morgan Kaufmann, ISBN-13 978-0124201583, 2017
2. David Kirk, Wen-mei Hwu, Programming Massively Parallel Processors: A Hands-on Approach 2nd ed., Morgan Kaufmann, ISBN-13 978-0124159921, 2012
3. Peter Pacheco, Matthew Malensek, An Introduction to Parallel Programming 2nd ed., Morgan Kaufmann, ISBN-13 978-0128046050, 2020
4. David Harris, Sarah Harris, Digital Design and Computer Architecture 2nd ed., Morgan Kaufmann, ISBN-13 978-0123944245, 2007
5. John Hennessy, David Patterson, Computer Architecture: A Quantitative Approach, 5th ed., Morgan Kaufmann, ISBN-13 978-8178672663, 2011
6. William Stallings, Computer Organization and Architecture: Designing for Performance, 8th ed., Prentice Hall, ISBN-13 978-0136073734, 2009
Средства за оценяване:
Електронни материали, представяни с използване на мултимедия. Компютърна зала за провеждане на практическите занятия.