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

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

(Новая страница: «;{{SpeakerInfo}}: {{Speaker|Дарья Мандрыкина}} <blockquote> </blockquote> {{VideoSection}} {{vimeoembed||800|450}} {{youtubelink|}} {{SlidesSect…»)
 
;{{SpeakerInfo}}: {{Speaker|Дарья Мандрыкина}}
<blockquote>
Разработан модуль «Технологии параллельного программирования» базового курса по программированию направления «Математика и компьютерные науки». Модуль включает в себя курс лекций и лабораторный практикум. 

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

{{VideoSection}}

{{vimeoembed||800|450}}
{{youtubelink|}}

{{SlidesSection}}
[[File:Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022).pdf|left|page=-|300px]]

{{----}}

== Thesis ==
В связи с ростом производительности программного обеспечения, IT-специалисты должны знать технологии ускорения
вычислений. Обучение параллельному программированию    это одна из главных задач в нынешней подготовке программистов.
В КубГУ студенты направления «Математика и компьютерные науки» знакомятся с параллельным программированием в процессе
изучения курса «Технологии программирования и работы на ЭВМ». Основная цель дисциплины «Технологии программирования и
работы на ЭВМ»    подготовка студентов в области применения современных технологий программирования и вычислительной
техники в решении прикладных задач, связанных с обработкой данных, математическим моделированием, созданием
программного обеспечения системного и прикладного уровня<ref name="d1">Алексеев&nbsp;Е.&nbsp;Р. Опыт использования свободного программного обеспечения в курсах «Операционные
системы» и «Параллельные вычисления» / Е.&nbsp;Р.&nbsp;Алексеев, Н.&nbsp;Ю.&nbsp;Болтачева, Д.&nbsp;А.&nbsp;Лутошкин //	Общество, наука, инновации (НПК-2016) : Сборник статей 2-е издание, исправленное и дополненное, Киров, 18—29 апреля 2016 года / Вятский государственный университет.    Киров: Вятский государственный университет, 2016.   С. 2664—2669.</ref>. 

Курс охватывает основные алгоритмы, которые нужно знать и
понимать студентам инженерных специальностей. В модуле «Параллельное программирование» рассматриваются современные
средства разработки кроссплатформенных параллельных приложений, а также особенности организации параллельных вычислений
в многоядерных и многопроцессорных вычислительных системах. Модуль включает в себя курс лекций и лабораторный практикум
по следующим темам:
*  разработка параллельных программ с использованием библиотеки MPI;
*  разработка параллельных программ с использованием библиотеки OpenMP;
*  особенности разработки параллельных программ в современном Фортране.

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

На лабораторных работах студенты разрабатывают параллельные программы и сравнивают время их выполнения с временем
выполнения последовательных программ. 

Были разработаны  инструкции по установке свободных компиляторов на личные компьютеры студентов и 
методические рекомендации по разработке параллельных приложений на компьютерах в лаборатории и на личных ноутбуках
студентов. 

Курс предусматривает разработку нескольких параллельных математических программ<ref name="d4">Борзунов&nbsp;С.&nbsp;В., Кургалин&nbsp;С.&nbsp;Д., Флегель&nbsp;А.&nbsp;В. Практикум по параллельному программированию.    СПб: БХВ, 2017.   
236.</ref>:
*  операции с матрицами;
*  численное интегрирование;
*  решение систем линейных алгебраических уравнений.


Отдельное место в блоке параллельного программирования уделено разработке программ на Фортране. Современный Фортран
имеет большое количество подпрограмм для работы с матрицами, что ускоряет как написание кода, так и время его
выполнения за счёт встроенной оптимизации<ref name="d5">Свободные и проприетарные компиляторы С(С++) и Фортрана при разработке эффективных вычислительных приложений / Е.&nbsp;Р.&nbsp;Алексеев, П.&nbsp;А.&nbsp;Дёмин, Д.&nbsp;А.&nbsp;Лутошкин, В.&nbsp;В.&nbsp;Стародумов // Современные информационные технологии и ИТ-образование.   2017.    Т. 13.     4.    С. 232—240.    DOI 10.25559/SITITO.2017.4.446.</ref>. 

К примеру, рассмотрим время выполнения алгоритма умножения матриц (1000х1000), написанного на языках С++ и
Fortran. MATMUL(matrix_a, matrix_b)  встроенная функция Фортрана для матричного умножения<ref name="d7">Алексеев&nbsp;Е.&nbsp;Р. Современный язык программирования Фортран в образовании и научных исследованиях / Е.&nbsp;Р.&nbsp;Алексеев, О.&nbsp;В.&nbsp;Соболева // Современные информационные технологии и ИТ-образование.    2016.    Т. 12.     4.    С. 110—116.</ref>.
Представленные здесь и ниже результаты получены на ПК с характеристиками Intel Core i5-1135g7 с тактовой частотой 2.4
Ггц, 4 физических ядра (8 логических), 16 ГБ ОЗУ, SSD 512ГБ:

<tab class=wikitable sep=bar>
    |   Время выполнения
C++ | 4,02
Fortran | 3,5
Fortran (matmul) | 0,3
</tab>

В разработанном курсе программы численного интегрирования рассматриваются при освоении параллельной технологии
MPI. Студентам предлагается написать параллельную программу численного интегрирования одним из
предложенных методов и протестировать её на разном количестве потоков. Работа может быть выполнена как на Фортране, так
и на C++. Результаты выполнения программы интегрирования ( $f(x)=\frac x{8+x^2}$,
$n=10^9$) представлены в таблице.

<tab class=wikitable sep=bar>
        | 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
</tab>

Параллельное расширение OpenMP для языков C++ и Fortran помогает
достичь ускорения за счёт распараллеливания практически без изменения обычного последовательного алгоритма. При
изучении этой технологии студенты используют  директивы \#pragma omp parallel в последовательных алгоритмах своих
программ и сравнивают полученные результаты времени выполнения. 

Рассмотрим время выполнения последовательного и параллельного алгоритмов умножения матриц, полученных с помощью
семейства компиляторов gcc.

<tab class=wikitable sep=bar>
                           | Последовательный алгоритм  |  Параллельное выполнение
g++                        |  4.02                      |  1.45
gfortran                   |  3.5                       |  2.18
</tab>


Изучение модуля «Параллельное программирование» в системе подготовки бакалавров математического факультета Кубанского
государственного университета является необходимым условием формирования предметной компетенции. Разработанный модуль
позволит реализовать подготовку студентов к реальным задачам, требующим параллельной обработки данных. Лабораторный
практикум разработан на базе свободных компиляторов gcc, g++, gfortran. При обучении параллельному программированию
свободные компиляторы помогают оценить существенное ускорение выполнения программ и понять принципы работы технологий
параллельного программирования.

Были получены следующие результаты:
*  разработан модуль «Параллельное программирование» для подготовки бакалавров Математического факультета КубГУ в рамках изучения дисциплины «Технологии программирования»;
*  написаны лекции по параллельному программированию;
*  разработаны лабораторные работы по параллельному программированию;
*  предложены инструкции по установке и использованию свободных компиляторов на личных компьютерах;
*  написаны методические рекомендации по разработке параллельных приложений на компьютерах в лабораториях ФМиКН КубГУ и на личных ноутбуках студентов;
*  продемонстрирована эффективность использования технологий параллельного программирования и обосновано использование свободных компиляторов в учебном процессе;
*  все материалы находятся в свободном доступе на сайте 1aer.ru и включены в обучающий курс со свободным доступом на образовательной платформе Stepik.org    https://stepik.org/112412


<i>Работа выполнена при финансовой поддержке Кубанского научного фонда в рамках научного проекта  ППН-21.1/10
«Цифровая дидактика для предметного обучения, воспитательной работы учащихся и профессиональной подготовки учителей».</i>

==== Литература ====
* Шеметова&nbsp;А.&nbsp;Д. Методические приёмы обучения параллельному программированию/ Прикладная информатика.    2016.
   Т. 11.     6(66). С. 43    48. ISBN  978-5-04050-682-8.
* Гергель&nbsp;В.&nbsp;П. Современные языки и технологии параллельного программирования.    М.: МГУ, 2012.    408c.
*  Алексеев&nbsp;Е.&nbsp;Р. Новые технологии разработки высокоэффективных и параллельных приложений на современном Фортране / Е.&nbsp;Р.&nbsp;Алексеев, П.&nbsp;А.&nbsp;Дёмин, Н.&nbsp;Ю.&nbsp;Болтачева // Прикладная информатика.    2018.    Т. 13.     1(73).    С. 103—120.




{{----}}
[[File:{{#setmainimage:Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, OSEDUCONF-2022)!.jpg}}|center|640px]]
{{LinksSection}}
<!-- <blockquote>[©]</blockquote> -->

<references/>

[[Категория:OSEDUCONF-2022]]
[[Категория:Draft]]

Версия 16:27, 25 февраля 2024

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

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

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

Видео

Презентация

Использование свободных компиляторов при изучении технологий параллельного программирования (Дарья Мандрыкина, 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.