Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022)

Материал из 0x1.tv

Докладчик
Дарья Мандрыкина

Разработан модуль «Технологии параллельного программирования» базового курса по программированию направления «Математика и компьютерные науки». Модуль включает в себя курс лекций и лабораторный практикум.

Лабораторный практикум разработан на базе свободных компиляторов gcc, g++, gfortran

Видео

on youtube

Презентация

Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022).pdf Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022).pdf Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022).pdf Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022).pdf Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022).pdf Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022).pdf Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022).pdf Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022).pdf Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022).pdf Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022).pdf Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022).pdf

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.



Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022)!.jpg

Примечания и ссылки

  1. Алексеев Е. Р. Опыт использования свободного программного обеспечения в курсах «Операционные системы» и «Параллельные вычисления» / Е. Р. Алексеев, Н. Ю. Болтачева, Д. А. Лутошкин // Общество, наука, инновации (НПК-2016) : Сборник статей 2-е издание, исправленное и дополненное, Киров, 18—29 апреля 2016 года / Вятский государственный университет. — Киров: Вятский государственный университет, 2016. — С. 2664—2669.
  2. Борзунов С. В., Кургалин С. Д., Флегель А. В. Практикум по параллельному программированию. — СПб: БХВ, 2017. — 236.
  3. Свободные и проприетарные компиляторы С(С++) и Фортрана при разработке эффективных вычислительных приложений / Е. Р. Алексеев, П. А. Дёмин, Д. А. Лутошкин, В. В. Стародумов // Современные информационные технологии и ИТ-образование. — 2017. — Т. 13. — № 4. — С. 232—240. — DOI 10.25559/SITITO.2017.4.446.
  4. Алексеев Е. Р. Современный язык программирования Фортран в образовании и научных исследованиях / Е. Р. Алексеев, О. В. Соболева // Современные информационные технологии и ИТ-образование. — 2016. — Т. 12. — № 4. — С. 110—116.