DSCM028 Високопроизводителни изчисления

Анотация:

Целта на курса е да даде солидни основи и практически умения за разработването, анализирането и реализирането на паралелни алгоритми. Разглеждат се организацията на паметта, таксономията на паралелните компютърни архитектури, принципите за паралелизация на изчисленията във високопроизводителните компютърни системи, многонишково и многопроцесорно изпълнение, архитектурата на графичните ускорители. Някои теоретични алгоритми от курса се прилагат на практика чрез използването на CUDA за графични процесори и системи с разпределена памет.

По същество курсът е приложение на паралелното програмиране. Особено внимание е обърнато на тези технологии, които се използват за изчисляване на модели от машинното обучение или за обработване на големи данни.

прочети още
Извличане на знания и технологии за големи данни

Преподавател(и):

доц. Стоян Мишев  д-р
доц. Ясен Горбунов  д-р

Описание на курса:

Компетенции:

Успешно завършилите курса студенти:

1) знаят:

* Фундаменталните принципи, налагащи ограниченията в производителността на всеки съвременен компютър;

* Основните форми на паралелизъм в изчислителните задачи;

* Как да подходят при съставяне на високопроизводителни програми;

* Основните идеи, залегнали в архитектурите на графичните процесори;

* Похвати и методи за оценяването на максималната производителност, достъпна за дадена изчислителна задача при изпълнението на дадена компютърна конфигурация;

* Програмни средства за паралелни изчислителни ресурси -- многопроцесорни системи, GPGPU, клъстери;

2) могат:

* Да оценяват теорeтичната производителност на една изчислителна задача върху дадена компютърна конфигурация;

* Да профилират приложения с цел откриване на 'горещите места' за производителността им;

* Да създават прости приложения, използващи многопроцесорни и GPGPU конфигурации с помощта на CUDA

* Да адаптират алгоритми, включително и такива за машинно обучение, за графични процесори
Предварителни изисквания:
Необходими са знания по дискретна математика, информатика и информационни технологии, компютърни архитектури, език за програмиране Python.

Форми на провеждане:
Редовен

Учебни форми:
Лекция

Език, на който се води курса:
Български

Теми, които се разглеждат в курса:

  1. Въведение в курса. Организация и основни характеристики на съвременните високопроизводителни компютри.
  2. Структура и организация на процесора. Управление на изпълнението на операциите с конвейеризация.
  3. Йерархия на паметта в компютърните системи. Принцип за взаимодействие с входно-изходни устройства. Инструкционен паралелизъм в компютърните системи.
  4. Високопроизводителни компютърни системи с паралелизъм на ниво процеси. Многопроцесорни архитектури. Суперкомпютри.
  5. Високопроизводителни компютърни системи с паралелизъм по данни.
  6. Архитектура на графични ускорители.
  7. Контролна работа 1
  8. Програмиране за графични процесори (GPU)
  9. CUDA библиотеки за машинно обучение (cuBLAS, cuSOLVER, cuRAND, cuTENSOR, TensorRT)
  10. Въведение в CUDA Deep Neural Network library (cuDNN)
  11. Реализиране на някои алгоритми за машинно обучение чрез 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

Средства за оценяване:

Електронни материали, представяни с използване на мултимедия. Компютърна зала за провеждане на практическите занятия.