Учебный курс «Программирование с использованием модели oneAPI» разработан в Центре компетенций oneAPI ННГУ при поддержке компании Intel. Курс направлен на изучение широкого спектра вопросов, связанных с высокопроизводительными вычислениями (HPC) с использованием моделей, методов и инструментов параллельного программирования на платформах Intel. В рамках курса изучается новая модель гетерогенного программирования oneAPI и ее ключевый компонент — язык гетерогенного программирования SYCL (Data Parallel C++), позволяющий разрабатывать переносимые высокопроизводительные программы для CPU, GPU, FPGA и других устройств.
Курс имеет гибкую модульную структуру и может быть адаптирован, исходя из целей обучения и особенностей аудитории. Так, некоторые модули, хорошо знакомые слушателям, могут рассматриваться как вспомогательный материал. Для понимания материалов курса необходимо достаточно уверенное владение языком программирования С++ и понимание проблематики параллельных вычислений для систем с общей памятью.
Курс по oneAPI может быть интересен разным категориям слушателей. В первую очередь, это студенты бакалавриата и магистратуры, уже освоившие основы программирования, алгоритмы и структуры данных, язык С++ и технологию ООП, основы параллельных вычислений. Курс может заинтересовать и преподавателей вузов, читающих учебные курсы по технологиям параллельного программирования и желающих расширить спектр преподаваемых тематик. Наконец, в силу новизны языка SYCL (DPC++) курс может привлечь и специалистов в области HPC, желающих попробовать и/или освоить новую технологию.
На данной странице представлена рабочая версия материалов курса. Поскольку oneAPI это живой механизм, развивающийся на наших глазах, курс постоянно разивается. Часть материалов подготовлена нашими коллегами из компании Intel, мы благодарны им за помощь и многочисленные полезные обсуждения.
Модуль 1. Архитектурные механизмы, влияющие на производительность. Уровни параллелизма
Модуль 2. Операционные системы. Аспекты параллелизма
Лекция 2.1. Операционные системы. Процессы, потоки, планирование
Лекция 2.2. Операционные системы. Синхронизация выполнения потоков
Практика 2.3. Операционные системы
Модуль 3. Программирование на языке SYCL/Data Parallel C++
Лекции 3.1-3.2. Элементы современного С++
Практика 3.3. Элементы современного С++
Лекция 3.4. Введение в Data Parallel C++
Практика 3.5. Первая программа на Data Parallel C++
Лекция 3.6. Исполнение ядер в Data Parallel C++
Практика 3.7. Вычисление двойного интеграла методом сумм Римана
Лекция 3.8. Управление памятью в Data Parallel C++
Практика 3.9. Решение систем линейных уравнений
методом Якоби
Лекция 3.10. Оптимизация программ на Data Parallel C++
Практика 3.11. Умножение матриц
Модуль 4. Программные библиотеки и инструменты oneAPI
Лекция 4.1. Библиотеки IPP, oneVPL, oneDAL (англ.)
Лекция 4.2. Библиотеки oneMKL, oneTBB, oneDPL (англ.)
Практика 4.3. Работа с библиотекой oneVPL
Мастер-класс 4.4. Оптимизация приложений с Intel VTune
Мастер-класс 4.5. Оптимизация приложений с Intel Advisor
Модуль 5. Высокопроизводительные вычисления и научное моделирование. Примеры использования
Мастер-класс 5.3. Параллельный алгоритм Чаталюрека раскраски графа на DPC++
Мастер-класс 5.4. Интегрирование уравнений Максвелла методом FDTD. Анализ и оптимизация производительности на CPU и GPU (в разработке)
Мастер-класс 5.5. Интегрирование уравнений Максвелла методом FDTD. Вычисления в смешанной точности на CPU и GPU (в разработке)