Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022)
Материал из 0x1.tv
- Докладчик
- Дарья Мандрыкина
Разработан модуль «Технологии параллельного программирования» базового курса по программированию направления «Математика и компьютерные науки». Модуль включает в себя курс лекций и лабораторный практикум.
Лабораторный практикум разработан на базе свободных компиляторов gcc, g++, gfortran
Видео
Презентация
Thesis
В связи с ростом производительности программного обеспечения, IT-специалисты должны знать технологии ускорения вычислений. Обучение параллельному программированию — это одна из главных задач в нынешней подготовке программистов. В КубГУ студенты направления «Математика и компьютерные науки» знакомятся с параллельным программированием в процессе изучения курса «Технологии программирования и работы на ЭВМ». Основная цель дисциплины «Технологии программирования и работы на ЭВМ» — подготовка студентов в области применения современных технологий программирования и вычислительной техники в решении прикладных задач, связанных с обработкой данных, математическим моделированием, созданием программного обеспечения системного и прикладного уровня[1].
Курс охватывает основные алгоритмы, которые нужно знать и понимать студентам инженерных специальностей. В модуле «Параллельное программирование» рассматриваются современные средства разработки кроссплатформенных параллельных приложений, а также особенности организации параллельных вычислений в многоядерных и многопроцессорных вычислительных системах. Модуль включает в себя курс лекций и лабораторный практикум по следующим темам:
- разработка параллельных программ с использованием библиотеки MPI;
- разработка параллельных программ с использованием библиотеки OpenMP;
- особенности разработки параллельных программ в современном Фортране.
Лабораторный практикум основан на работе в свободных компиляторах семейства gcc (gcc, g++, gfortran).
На лабораторных работах студенты разрабатывают параллельные программы и сравнивают время их выполнения с временем выполнения последовательных программ.
Были разработаны инструкции по установке свободных компиляторов на личные компьютеры студентов и методические рекомендации по разработке параллельных приложений на компьютерах в лаборатории и на личных ноутбуках студентов.
Курс предусматривает разработку нескольких параллельных математических программ[2]:
- операции с матрицами;
- численное интегрирование;
- решение систем линейных алгебраических уравнений.
Отдельное место в блоке параллельного программирования уделено разработке программ на Фортране. Современный Фортран
имеет большое количество подпрограмм для работы с матрицами, что ускоряет как написание кода, так и время его
выполнения за счёт встроенной оптимизации[3].
К примеру, рассмотрим время выполнения алгоритма умножения матриц (1000х1000), написанного на языках С++ и Fortran. MATMUL(matrix_a, matrix_b) — встроенная функция Фортрана для матричного умножения[4]. Представленные здесь и ниже результаты получены на ПК с характеристиками Intel Core i5-1135g7 с тактовой частотой 2.4 Ггц, 4 физических ядра (8 логических), 16 ГБ ОЗУ, SSD 512ГБ:
Время выполнения | |
C++ | 4,02 |
Fortran | 3,5 |
Fortran (matmul) | 0,3 |
В разработанном курсе программы численного интегрирования рассматриваются при освоении параллельной технологии MPI. Студентам предлагается написать параллельную программу численного интегрирования одним из предложенных методов и протестировать её на разном количестве потоков. Работа может быть выполнена как на Фортране, так и на C++. Результаты выполнения программы интегрирования ( $f(x)=\frac x{8+x^2}$, $n=10^9$) представлены в таблице.
np = 1 | np = 2 | np = 4 | np = 8 | |
g++ | 12.24 | 6.15 | 3.77 | 1.89 |
gfortran | 3.47 | 1.75 | 1.07 | 1.07 |
Параллельное расширение OpenMP для языков C++ и Fortran помогает достичь ускорения за счёт распараллеливания практически без изменения обычного последовательного алгоритма. При изучении этой технологии студенты используют директивы \#pragma omp parallel в последовательных алгоритмах своих программ и сравнивают полученные результаты времени выполнения.
Рассмотрим время выполнения последовательного и параллельного алгоритмов умножения матриц, полученных с помощью семейства компиляторов gcc.
Последовательный алгоритм | Параллельное выполнение | |
g++ | 4.02 | 1.45 |
gfortran | 3.5 | 2.18 |
Изучение модуля «Параллельное программирование» в системе подготовки бакалавров математического факультета Кубанского
государственного университета является необходимым условием формирования предметной компетенции. Разработанный модуль
позволит реализовать подготовку студентов к реальным задачам, требующим параллельной обработки данных. Лабораторный
практикум разработан на базе свободных компиляторов gcc, g++, gfortran. При обучении параллельному программированию
свободные компиляторы помогают оценить существенное ускорение выполнения программ и понять принципы работы технологий
параллельного программирования.
Были получены следующие результаты:
- разработан модуль «Параллельное программирование» для подготовки бакалавров Математического факультета КубГУ в рамках изучения дисциплины «Технологии программирования»;
- написаны лекции по параллельному программированию;
- разработаны лабораторные работы по параллельному программированию;
- предложены инструкции по установке и использованию свободных компиляторов на личных компьютерах;
- написаны методические рекомендации по разработке параллельных приложений на компьютерах в лабораториях ФМиКН КубГУ и на личных ноутбуках студентов;
- продемонстрирована эффективность использования технологий параллельного программирования и обосновано использование свободных компиляторов в учебном процессе;
- все материалы находятся в свободном доступе на сайте 1aer.ru и включены в обучающий курс со свободным доступом на образовательной платформе Stepik.org — https://stepik.org/112412
Работа выполнена при финансовой поддержке Кубанского научного фонда в рамках научного проекта № ППН-21.1/10
«Цифровая дидактика для предметного обучения, воспитательной работы учащихся и профессиональной подготовки учителей».
Литература
- Шеметова А. Д. Методические приёмы обучения параллельному программированию/ Прикладная информатика. — 2016.
— Т. 11. — № 6(66). С. 43 — 48. ISBN 978-5-04050-682-8.
- Гергель В. П. Современные языки и технологии параллельного программирования. — М.: МГУ, 2012. — 408c.
- Алексеев Е. Р. Новые технологии разработки высокоэффективных и параллельных приложений на современном Фортране / Е. Р. Алексеев, П. А. Дёмин, Н. Ю. Болтачева // Прикладная информатика. — 2018. — Т. 13. — № 1(73). — С. 103—120.
Примечания и ссылки
- ↑ Алексеев Е. Р. Опыт использования свободного программного обеспечения в курсах «Операционные системы» и «Параллельные вычисления» / Е. Р. Алексеев, Н. Ю. Болтачева, Д. А. Лутошкин // Общество, наука, инновации (НПК-2016) : Сборник статей 2-е издание, исправленное и дополненное, Киров, 18—29 апреля 2016 года / Вятский государственный университет. — Киров: Вятский государственный университет, 2016. — С. 2664—2669.
- ↑ Борзунов С. В., Кургалин С. Д., Флегель А. В. Практикум по параллельному программированию. — СПб: БХВ, 2017. — 236.
- ↑ Свободные и проприетарные компиляторы С(С++) и Фортрана при разработке эффективных вычислительных приложений / Е. Р. Алексеев, П. А. Дёмин, Д. А. Лутошкин, В. В. Стародумов // Современные информационные технологии и ИТ-образование. — 2017. — Т. 13. — № 4. — С. 232—240. — DOI 10.25559/SITITO.2017.4.446.
- ↑ Алексеев Е. Р. Современный язык программирования Фортран в образовании и научных исследованиях / Е. Р. Алексеев, О. В. Соболева // Современные информационные технологии и ИТ-образование. — 2016. — Т. 12. — № 4. — С. 110—116.