Параллельные технологии в системах с общей памятью как элемент базового образования ИТ-специалистов в НГУ и ВКИ НГУ
Калинина Анна Павловна,БикЮ к.ф.-м.н., доцент (kalinina@academ.org)
Новосибирский государственный университет
Проблема обучения параллельному программированию на сегодняшний день достаточно актуальна. Появление доступных широкому пользователю многоядерных архитектур сделало необходимым модернизацию базового образования, осуществляемого на 1-3 курсе, до специализации на выбранных кафедрах.
Попытка подобной модернизации курсов программирования была проведена на первом курсе НГУ в рамках курса "Программирование" на механико-математическом факультете и на третьем курсе ВКИ НГУ в рамках базового проекта "Системное программирование".
Опыт показал, что студенты сравнительно легко овладевают параллельными технологиями (OpenMP C++ и Windows* Threads).
Модернизация была проведена во многом согласно плану, который докладывался на АПКИТ в 2006 году: "Изучение системного подхода в программировании в рамках учебно-методического комплекса "Практическое параллельное программирование в системе непрерывной подготовки ИТ-специалистов в НГУ" [1]. В рамках данного плана был также прочитан спецкурс "Практическое параллельное программирование в системах с общей памятью" и проведены практические занятия в классе Intel-лаборатории НГУ.
Была разработана серия презентаций и несколько лекций, размещенных в данный момент на сайте Intel - лаборатории НГУ [2]. В их основу были положены материалы, предоставленные Intel преподавателям, переданных во время тренинга в апреле 2006 в Нижнем Новгороде, а также курсы И. Одинцова И. [3] и В.П. Гергеля [4]. Часть материалов, безусловно, нуждается в доработке, но необходимость их помещения на сайт была вызвана острой необходимостью простых практических пособий для слушателей модернизируемых курсов.
Из-за специфики преподавания информационных технологий в НГУ и ВКИ НГУ введение понятия параллелизма в образовательный процесс осуществлялось по-разному. В НГУ ставится цель освоения множества информационных технологий методом теоретического изучения их основных свойств и выполнения небольшого количества практических упражнений. В ВКИ НГУ акцент делается на практическом изучении выбранной технологии методом создания проекта (курсовой работы) в рамках данной технологии.
В то же время введение параллелизма в обоих случаях обладало общими чертами. Вначале в обоих случаях была прочитана обзорная лекция "Методология императивного параллельного программирования "Системный подход" (лекция №1 в [2]). При прочтении данной лекции использовалась презентация и демонстрация конкретных возможностей на двухъядерных архитектурах (либо ноутбук, либо Intel - лаборатория). Целью данной лекции была теоретическая и практическая демонстрация студентам факта, что максимальная производительность достигается только на параллельных архитектурах при согласованном выборе методологии, вычислительной системы и программного обеспечения. В качестве второй лекции был прочитан материал об основных особенностях многопоточного программирования и его ошибках, области видимости переменных, параллельном оверхеде, разобраны основные особенности (без синтаксиса) простых примеров - параллельного умножения матриц и численного интегрирования. На третьем практическом занятии был разобран синтаксис параллельных программ для рассмотренных на предыдущей лекции примеров, а на четвертом занятии студенты приступили к занятиям в компьютерном классе на похожих задачах.
В НГУ на этом изучение параллелизма было продолжено теоретическое рассмотрение параллельной реализации других алгоритмов, изучаемых в рамках данного курса. Но, тем не менее, особых сложностей в освоении материала не было замечено.
В ВКИ НГУ изучение параллелизма было осуществлено в рамках полугодового курса. В ходе курса студенты начали создание систем, обучающих параллельному программированию, которые планируется использовать при дальнейшей модернизации курсов. Названия проектов имеют приближенный вид "Система параллельного решения "класс задач" на основе технологии "Windows* Threads / OpenMP"". В качестве задач выбираются достаточно простые примеры - например, поиск строки матрицы с экстремальным значением признака, численное интегрирование, решение задач физики сплошных сред на двумерной сетке с помощью явных схем. Пользователь подобной системы с помощью меню может выбрать решаемую задачу, задать количество потоков, выбрать параллельную схему, определить время решения. Что более важно, осуществляется "поддержка пользователя" - можно вывести кусок выполняемого кода. Наблюдается интерес студентов к созданию параллельных программ.
Изменения в первоначальном плане модернизации были вызваны отчасти анализом ответной реакции студентов, отчасти имеющимся в распоряжении оборудованием и программным обеспечением. Из-за низких ресурсов hard ware в предоставленных компьютерных классах, единственной доступной технологией оказалась Windows* Threads, что и определило ее выбор. Безусловно, в ближайшее время эта причина перестанет действовать благодаря реализации инновационной программы. С другой стороны, несмотря на более сложный синтаксис Windows* Threads по сравнению с OpenMP, эта технология оказалась более понятной студентам из-за того, что все действия по операции с потоками прописываются явно, что способствует их лучшему освоению предмета. Несмотря на отсутствие технологии OpenMP в классах, ее возможности были продемонстрированы студентам первого курса мехмата и третьего курса колледжа на переданном Intel двухъядерном ноутбуке и во время специальных экскурсионных занятий в Intel-лаборатории НГУ. Студенты вполне оценили легкость применения данной технологии в последовательной программе.
В настоящее время благодаря проведенному опыту и частично разработанным учебным материалам (это делает возможным повышение квалификации преподавателей) представляется возможным более широкое включение параллелизма в базовые курсы (расширение числа групп, изучающих параллелизм в рамках базовых курсов). В то же время проведенный опыт показывает, что интерес студентов к параллелизму возникает непосредственно в момент наблюдения эффективной работы современного программного обеспечения на подходящей архитектуре. Это повышает актуальность соответствующей модернизации компьютерных классов.
Литература:
- http://www.it-education.ru/2006/default.htm
- http://www.i-lab.nsu.ru/index.php?file=spec
- И. Одинцов Профессиональное программирование. Системный подход. - "БХВ-Петербург" - 2004. - 610 с.
- Гергель В.П., Стронгин Р.Г. Основы параллельных вычислений для многопроцессорных вычислительных систем. - Н.Новгород, ННГУ, 2001.
|