BSc: HighPerformanceComputing

From IU
Jump to navigation Jump to search

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

Квалификация выпускника: бакалавр
Направление подготовки: 09.03.01 - “Информатика и вычислительная техника”
Направленность (профиль) образовательной программы: Математические основы ИИ
Программу разработал(а): Конюхов И.В.

1. Краткая характеристика дисциплины

Изучение дисциплины обеспечивает формирование и развитие компетенций обучающихся в области программного обеспечения и его разработки; искусственного интеллекта и его применения для решения различных прикладных задач в рамках профессиональной деятельности. В ходе освоения дисциплины обучающиеся рассматривают некоторые известные численные алгоритмы и особенности их параллельной реализации на центральных и графических процессорах. Рассматриваются прямые методы решения систем линейных алгебраических уравнений с матрицами общего и специального типов (метод Гаусса, разложение Холецкого, прогонка), итерационные методы решения систем линейных уравнений (методы простой итерации и верхней релаксации), вопросы реализации разреженных матриц и алгебры над ними, методы Монте-Карло, численные методы решения систем обыкновенных дифференциальных уравнений и уравнений с частными производными, а также новейшие физически-информированные нейронные сети.

2. Перечень планируемых результатов обучения

Целью освоения дисциплины является формирование общего понимания высокоэффективной реализации общих вычислительных алгоритмов с использованием процессоров различных типов и архитектур, а также демонстрация современных подходов к вычислительным алгоритмам на базе технологий машинного обучения.
Задачами дисциплины являются изучение технологий параллельного программирования на центральных, графических и нейропроцессорах, анализ вычислительных алгоритмов с целью выявления точек параллелизма (hotpoints) и узких мест (bottle necks), а также внедрение технологий искусственного интеллекта и нейронных сетей в классические вычислительные задачи.

Общая характеристика результата обучения по дисциплине

Знания:
  • подходов к параллельному программированию,
  • архитектур современных процессоров,
  • программных моделей с общей памятью,
  • архитектуры современных графических процессоров,
  • основ выполнения вычислений общего назначения на разных платформах,
  • современных подходов к программированию алгоритмов решения задач математики и физики.
Умения:
  • SIMD- и MIMD-программирование для CPU,
  • SIMD-программирование для GPU,
  • выполнять синхронизацию потоков,
  • выполнять оптимизация общей памяти.
Навыки (владения):
  • проведения анализ алгоритмов на предмет возможного параллелизма с выявлением "горячих точек" и "бутылочных горлышек",
  • применения современного параллельного программирования к методам статистики,
  • решения систем алгебраических уравнений наиболее эффективным способом,
  • решения основных типов дифференциальных уравнений, встречающихся в широком спектре реальных задач,
  • применения современных вычислительных алгоритмов на основе машинного обучения для решения различных типов дифференциальных уравнений.

3. Структура и содержание дисциплины


п/п
Наименование раздела
дисциплины
Содержание дисциплины по темам
1. Введение в высокопроизводительные вычисления, OpenMP и OpenCL - Существующие суперкомпьютерные системы
- Модель общей памяти
- Подходы к программированию MIMD и SIMD
- Массивно-параллельные ускорители
- Иерархия памяти
2. Параллельные алгоритмы линейной алгебры - Матричное умножение: оптимизация производительности различных реализаций на основе различных типов памяти устройства
- Прямые методы решения СЛАУ: исключение Гаусса, разложение Холецкого, метод прогонки, параллельная реализация
- Итерационные методы решения СЛАУ: метод Якоби, метод Зейделя, релаксационные методы, параллельная реализация
3. Параллельные методы решения дифференциальных уравнений - Решение систем обыкновенных дифференциальных уравнений
- Решение волнового уравнения
- Решение задачи теплопроводности
- Решение задачи Дирихле для уравнения Пуассона
4. Физически информированные нейронные сети - Основы нейронных сетей
- Основы методов оптимизации
- Принципы преобразования задач, записанных в терминах дифференциальных уравнений, в оптимизационные
- Повышение эффективности процедуры обучения
5. Параллельные методы Монте-Карло - Вычисление определенных интегралов
- Способы уменьшения дисперсии
- Генераторы псевдослучайных чисел
- Подходы к распараллеливанию методов Монте-Карло
6. Высокопроизводительные вычисления и современные языки программирования - Многопоточность в современных языках программирования
- Существующие обертки для OpenCL и CUDA
- Другие высокоуровневые подходы к параллельному программированию

4. Методические и оценочные материалы

Задания для практических занятий:


п/п
Наименование раздела
дисциплины (модуля)
Перечень рассматриваемых тем (вопросов)
(Указываются ВСЕ задания для практических занятий по разделам дисциплины подробно в соответствии с темами)
1. Введение в высокопроизводительные вычисления, OpenMP и OpenCL
2. Параллельные алгоритмы линейной алгебры
3. Параллельные методы решения дифференциальных уравнений
4. Физически информированные нейронные сети
5. Параллельные методы Монте-Карло
6. Высокопроизводительные вычисления и современные языки программирования

Текущий контроль успеваемости обучающихся по дисциплине:

(К формам текущего контроля можно отнести собеседование, коллоквиум, тест, контрольную работу, лабораторную работу, эссе, реферат и иные творческие работы.)


п/п
Наименование раздела
дисциплины
Форма текущего контроля

(выберите соответствующие формы контроля)
Материалы текущего контроля

(Указываются ВСЕ ЗАДАНИЯ/ВОПРОСЫ текущего контроля успеваемости обучающихся по разделам дисциплины подробно в соответствии с требованиями)
1. Проверка выполнения домашних заданий;
Устный / письменный опрос;
Тестирование (письменное или компьютерное);
Эссе;
Доклад;
Защита проекта; Коллоквиум;
Проверка разработки отдельных частей кода программного продукта и другие формы текущего контроля, используемые Вами на занятиях
Например:

Устный / письменный опрос:
-
-
-
...
Тематика групповых проектов:
-
-
-
...
Темы докладов:
-
-
-
...
Тематика эссе:
-
-
-
...
Задания, в том числе, для групповых проектов:
-
-
-
...
Тестирование (письменное или компьютерное):
-
-
-
...

Проверка разработки отдельных частей кода программного продукта.

Другие формы текущего контроля, используемые Вами на занятиях
-
-
-
...

2. Проверка выполнения домашних заданий;
Устный / письменный опрос;
Тестирование (письменное или компьютерное);
Эссе;
Доклад;
Защита проекта; Коллоквиум;
Проверка разработки отдельных частей кода программного продукта и другие формы текущего контроля, используемые Вами на занятиях
3. Проверка выполнения домашних заданий;
Устный / письменный опрос;
Тестирование (письменное или компьютерное);
Эссе;
Доклад;
Защита проекта; Коллоквиум;
Проверка разработки отдельных частей кода программного продукта и другие формы текущего контроля, используемые Вами на занятиях
4. Проверка выполнения домашних заданий;
Устный / письменный опрос;
Тестирование (письменное или компьютерное);
Эссе;
Доклад;
Защита проекта; Коллоквиум;
Проверка разработки отдельных частей кода программного продукта и другие формы текущего контроля, используемые Вами на занятиях
5. Проверка выполнения домашних заданий;
Устный / письменный опрос;
Тестирование (письменное или компьютерное);
Эссе;
Доклад;
Защита проекта; Коллоквиум;
Проверка разработки отдельных частей кода программного продукта и другие формы текущего контроля, используемые Вами на занятиях
6. Высокопроизводительные вычисления и современные языки программирования

Контрольные вопросы для подготовки к промежуточной аттестации:


п/п
Наименование
раздела дисциплины
Вопросы
1.
2.
3.
4.
5.
6.

Вопросы/Задания к промежуточной аттестации в устной/письменной форме:

  1. Что такое закон Амдала?
  2. Перечислите особенности #pragma parallel
  3. Какие типы клаузул доступа к памяти вы знаете?
  4. Сравните секции и задачи OpenMP
  5. Как синхронизировать потоки в OpenMP?
  6. Опишите структуру программы OpenCL
  7. Какие виды памяти в OpenCL вы знаете?
  8. Что такое ядра OpenCL?
  9. Перечислите сервисные операции OpenCL
  10. Как вычислить определенный интеграл?
  11. Что такое случайная переменная?
  12. Что такое генератор случайных величин?
  13. Как построить генератор случайных величин?
  14. Как работают методы Монте-Карло?
  15. Как выполнить умножение разреженных матриц?
  16. Перечислите прямые методы решения СЛАУ
  17. В чем разница между устранением Гаусса и разложением Холески?
  18. Объясните итерационный алгоритм решения СЛАУ на графе
  19. Как ускорить алгоритмы линейной алгебры с помощью многопоточного программирования?
  20. Каковы граничные условия для дифференциальных уравнений с частными производными?
  21. Каковы начальные условия для дифференциальных уравнений с частными производными?
  22. В чем разница между явными и неявными конечно-разностными схемами?
  23. Перечислите возможные способы решения задачи о распространении тепла в пластине.
  24. Переформулируйте поставленную задачу Коши в оптимизационную задачу.
  25. Что такое PINN-подход к дифференциальным уравнениям?
  26. Перечислите известные оптимизаторы и их особенности.
  27. Как избежать влияния начального условия на значение, выдаваемое нейронной сетью?
  28. Что делать с начальным распределением функции в задаче PDE, формулируя задачу оптимизации?
  29. Что делать с граничными условиями в PDE-задаче, формулирующей оптимизационную задачу?
  30. Как решить систему ODE с помощью PINN-подхода?
  31. Сравните Nvidia CUDA и OpenCL. В чем плюсы и минусы обоих наборов инструментов?
  32. Сравнение библиотек OpenACC и OpenMP: основные различия и цели другого подхода
  33. C#: библиотека параллельных задач
  34. Java: Runnable
  35. Python: модуль потоков

Перечень учебно-методического обеспечения дисциплины

Список основной литературы:

  1. Barbara Chapman, Gabriele Jost, Ruud van der Pas. (2008) Using OpenMP: Portable Shared Memory Parallel Programming, The MIT Press,
  2. Scarpino, M. (2011) OpenCL in Action: How to Accelerate Graphics and Computations, Manning.
  3. Banger, R., Bhattacharyya, K. (2013) OpenCL Programming by Example, Packt Publishing.
  4. Sanders, J., Kandrot, E. (2010) CUDA by example: an introduction to general-purpose GPU programming, Addison-Weslye

Список дополнительной литературы:

  1. Введение в высокопроизводительные вычисления: introduction-high-performance-computing
  2. Введение в параллельное программирование: introduction-parallel-programming
  3. Учебные материалы по OpenMP: OpenMP-tutorials
  4. Учебные материалы по OpenCL: OpenCL-tutorials

Необходимое программное обеспечение:

  1. Microsoft VS Code / Microsoft Visual Studio / любая другая подходящая среда разработки на языке C++
  2. GNU Plot
  3. OpenMP, OpenCL, CUDA библиотеки

Методические указания для обучающихся по освоению дисциплины

Вид учебных
занятий/деятельности
Деятельность обучающегося
Лекция Написание конспекта лекций: кратко, схематично, последовательно фиксировать основные положения лекции, выводы, формулировки, обобщения; помечать важные мысли, выделять ключевые слова, термины. Обозначить вопросы, термины или другой материал, который вызывает трудности, пометить и попытаться найти ответ в рекомендуемой литературе. Если самостоятельно не удается разобраться в материале, необходимо сформулировать вопрос и задать преподавателю на консультации, во время семинарского (практического) занятия.
Практические (лабораторные) занятия Практические занятия предназначены прежде всего для разбора отдельных сложных положений, тренировки аналитических навыков, а также для развития коммуникационных навыков. Поэтому на практических занятиях необходимо участвовать в тех формах обсуждения материала, которые предлагает преподаватель: отвечать на вопросы преподавателя, дополнять ответы других студентов, приводить примеры, задавать вопросы другим выступающим, обсуждать вопросы и выполнять задания в группах. Работа на практических занятиях подразумевает домашнюю подготовку и активную умственную работу на самом занятии. Работа на практических занятиях в форме устного опроса заключается прежде всего в тренировке навыков применять теоретические положения к самому разнообразному материалу. В ходе практических занятий студенты работают в группах для обсуждения предлагаемых вопросов.
Самостоятельная работа Самостоятельная работа состоит из следующих частей: 1) чтение учебной, справочной, научной литературы; 2) повторение материала лекций; 3) составление планов устных выступлений; 4) подготовка презентаций. При чтении учебной литературы нужно разграничивать для себя материал на отдельные проблемы, концепции, идеи. Учебную литературу можно найти в электронных библиотечных системах, на которые подписан АНО Университет Иннополис.
Доклад Публичное, развернутое сообщение по определенной теме или вопросу, основанное на документальных данных. При подготовке доклада рекомендуется использовать разнообразные источники, позволяющие глубже разобраться в теме. Учебную литературу можно найти в электронных библиотечных системах, на которые подписан АНО Университет Иннополис.
Дискуссия Публичное обсуждение спорного вопроса, проблемы. Каждая сторона должна оппонировать мнение собеседника, аргументируя свою позицию.
Разработка отдельных частей кода Разработать часть кода, исходя из поставленной задачи и рекомендаций преподавателя. При выполнении работы рекомендуется обращаться к материалам лекций и семинарских (практических) занятий. Если возникают затруднения, необходимо проконсультироваться с преподавателем.
Выполнение домашних заданий и групповых проектов Для выполнения домашних заданий и групповых проектов необходимо получить формулировку задания от преподавателя и убедиться в понимании задания. При выполнение домашних заданий и групповых проектов необходимо проработать материалы лекций, основной и дополнительной литературы по заданной теме.
Индивидуальная работа При выполнение индивидуальной работы необходимо взять задание у преподавателя, ознакомиться с требованиями к выполнению работы, изучить поставленную проблему, найти решение проблемы. Если самостоятельно не удается разобраться в материале, необходимо сформулировать вопрос и задать преподавателю на консультации, во время семинарского (практического) занятия. Оформить результаты работы.
Тестирование (устное/письменное) При подготовке к тестированию необходимо проработать материалы лекций, семинаров, основной и дополнительной литературы по заданной теме. Основная цель тестирования – показать уровень сформированности знаний по конкретной теме или ее части.

Методы и технологии обучения, способствующие формированию компетенции

Методы и технологии обучения, способствующие формированию компетенции
Информационно-коммуникационная технология, проектная технология, технология проблемного обучения, кейс-технология, традиционные технологии, модульные технологии