Содержание к диссертации
Введение
Глава 1. Теоретические основы параллельного программирования в профессиональной подготовке магистров физико-математического образования 11
1.1. Место параллельного программирования в двухуровневой системе педагогического образования 11
1.2. Архитектура параллельных компьютеров 14
1.2.1. Обзор и анализ теоретических классификаций для отбора содержания обучения 14
1.2.2. Практическая классификация параллельных компьютеров 25
1.3. Особенности характеристик операционных систем в контексте реализации параллельных вычислений 32
1.3.1. UNIX 32
1.3.2. Linux 41
1.4. Анализ языков программирования для реализации параллельных вычислений 50
Выводы 66
Глава 2. Методика обучения параллельному программированию 67
2.1. Выбор основы для проектирования методики обучения параллельному программированию 67
2.2. Обзор моделей параллельных вычислений 71
2.3. Особенности методики обучения параллельному программированию магистров физико-математического образования 79
2.4. Определение содержания обучения метода вставок 82
2.5. Определение содержания обучения традиционного метода преподавания параллельного программирования 86
2.6. Определение содержания обучения дополнительного метода преподавания параллельного программирования 90
2.7. Средства обучения параллельному программированию. Кластер как техническое средство обучения параллельному программированию 92
2.8. Методы обучения параллельному программированию 96
2.9. Формы обучения параллельному программированию 98
2.10. Методы распараллеливания последовательных алгоритмов и определения эффективности параллельных программ 101
2.11. Новые этапы решения задач при использовании параллелизма 108
Выводы по второй главе 111
Глава 3. Организация педагогического эксперимента 113
3.1. Специфика проведения данного педагогического эксперимента 113
3.2. Поисковый этап педагогического эксперимента 115
3.3. Констатирующий этап педагогического эксперимента 118
3.4. Формирующий этап педагогического эксперимента 132
Выводы по третьей главе 134
Заключение 135
- Место параллельного программирования в двухуровневой системе педагогического образования
- Выбор основы для проектирования методики обучения параллельному программированию
- Специфика проведения данного педагогического эксперимента
Введение к работе
В наше время происходит стремительное развитие наук, как фундаментальных, так и прикладных, использующих сложные реалистические (многомерные, многопараметрические) математические модели или требующих сложной, но быстрой обработки информации. Это вместе с быстрым технологическим прогрессом привело к тому, что значительно возросла потребность в применении мощных вычислительных средств.
Ярким примером тому может служить создаваемый в настоящее время в Европейской Организации Ядерных Исследований (Женева) в рамках международного сотрудничества (с участием Западной Европы, США, России и других стран мира) Большой Адронный Коллайдер (Large Hadron Collider), запуск которого планируется в 2007 году. Этот ускоритель заряженных частиц станет крупнейшем в мире научным инструментом для исследования фундаментальных свойств материи, в том числе для воссоздания кварк-глюонной плазмы - вещества, существовавшего в природе на заре Вселенной [52, 93]. После начала работы на Большом Адронном Коллайдере будет ежегодно производиться около 15 Петабайт (15 млн. гигабайт) физических данных, для обработки которых организована международная сеть суперкомпьютеров (в том числе кластеров) [52, 93].
Сегодня суперкомпьютерные технологии востребованы многими отраслями экономики. Важны они для энергетики, машиностроения, нефтегазодобывающего комплекса, химических производств, авиакосмической и атомной промышленности. Суперкомпьютерные технологии применяются также в следующих науках [37]:
• квантовая физика: физика элементарных частиц, ядерная физика, квантовая теория поля;
• статистическая физика;
• физика молекул (исследование и предсказание молекулярных свойств материалов); • физика плазмы (моделирование поведения плазмы на ЭВМ);
• квантовая химия (структура молекул и кристаллов, химические реакции);
• науки о Земле: физика атмосферы, метеорология, климатология (предсказание погоды и изменения климата), геофизика (движение Земной коры и землетрясения), физика океана;
• биология, экология (прогнозирование развития экосистем);
• экономика и эконометрия: вычислительная экономика (новая, развивающаяся наука о применении компьютерного моделирования к исследованию сложных, реалистичных моделей экономических процессов), макроэкономика, теория массового обслуживания (например, моделирование развития транспортной системы страны, грузопотоков и пассажиропотоков) и теория оптимального управления, финансовая деятельность (моделирование рынка ценных бумаг, банковской деятельности);
• социальные науки (моделирование демографической ситуации в стране, миграции и занятости населения, социального поведения);
• математическая лингвистика: распознавание речи, анализ текста и автоматический перевод;
• информатика: ведение баз данных, распознавание образов, распределенные вычислительные системы;
• механика сплошных сред: гидродинамика и газодинамика (кораблестроение и самолетостроение, течения, турбостроение), теория сопротивления материалов (устойчивость конструкций и их нагрузочная способность);
• баллистика (наведение баллистических снарядов и управление реактивным движением);
• медицина, фармацевтика (моделирование лекарственных препаратов).
Серьезное внимание суперкомпьютерным технологиям уделено и в Федеральной целевой научно-технической программе «Исследования и разработки по приоритетным направлениям развития науки и техники» на 2002-2006 годы [79].
В 70-80-х годах в России велись интенсивные исследования, направленные на создание параллельных вычислительных систем. Примерами могут служить системы PHOENIX [1], ПС-2000 [11]. К реально действующим суперЭВМ того времени можно отнести машину БЭСМ-6 [5] с быстродействием около 1 млн. одноадресных операций в секунду, многопроцессорные вычислительные комплексы Эльбрус [4] и др.
Одновременно с проектированием параллельных вычислительных систем ведущими учеными велись работы по распараллеливанию алгоритмов решения сложных задач, решались общие вопросы распараллеливания алгоритмов, распараллеливания численных методов линейной алгебры, уравнений в частных производных и т.д.
В настоящее время в России создан ряд суперкомпьютерных ресурсов, перечень которых можно найти на WWW-странице НИВЦ МГУ [47].
Важнейшей составной частью создания и внедрения высокопроизводительных технологий является существенное расширение компьютерного образования и подготовка квалифицированных специалистов в этой области. Многие вузы начали подготовку специалистов по данному направлению.
Но не только и не столько учебные заведения заинтересованы в подготовке специалистов в области высокопроизводительных параллельных вычислений. В конце 2005 года корпорация Intel [56] и информационно-аналитический центр Parallel.ru объявили конкурс проектов по разработке и внедрению учебно-методических комплексов в области параллельных компьютерных технологий и высокопроизводительных вычислений. Главный Internet-ресурс данного центра прогнозирует бурный рост и широкое распространение параллельных компьютерных технологий, одной из предпосылок которых является появление на рынке многоядерных архитектур [47]. Вопросами параллельного программирования занимались и занимаются многие российские и зарубежные ученые: В.В.Воеводин (ИВМ РАН), Вл.В.Воеводин (НИВЦ МГУ), В.Д.Корнеев (Новосибирск), В.Э.Малышкин (Новосибирск), К.Ю.Богачев, А.В.Комолкин (СПбГУ), С.А.Немнюгин (СПбГУ), В.П.Гергель (Нижний Новгород), Г.Р.Эндрюс (США), К.Хьюз (США), Т.Хьюз (США) и др.
Вместе с тем анализ научно-методической литературы и ресурсов сети Internet показал, что не существует на данный момент обобщенной методики обучения параллельному программированию для магистров физико-математического образования, хотя в компетенции данных специалистов входит преподавание современных информационных технологий.
Все вышеперечисленное говорит об актуальности создания методики обучения параллельному программированию магистров физико-математического образования.
Цель исследования: разработать методику обучения параллельному программированию на кластерах с UNIX-подобной операционной системой магистров физико-математического образования.
Объектом исследования будет являться процесс обучения параллельному программированию на кластерах с UNIX-подобной операционной системой магистров физико-математического образования.
Предметом исследования является методика обучения параллельному программированию на кластерах с UNIX-подобной операционной системой магистров физико-математического образования.
Гипотеза исследования: если технологию параллельного программирования изучать на кластерах на основе принципа вариативности формирования содержания обучения, то:
1. будет обеспечен более наглядный метод обучения распараллеливанию
процессов, конструированию параллельных программ и оценке
эффективности параллельной программы; 2. студенты получат осознанное представление о принципах организации современных вычислительных технологий и о решении сложных задач. Для достижения цели диссертационного исследования и подтверждения выдвинутой гипотезы необходимо решить следующие задачи:
1. Проанализировать научно-методическую литературу и ресурсы сети Internet для выявления текущего состояния параллельных вычислений.
2. По итогам анализа разработать актуальное содержание проектируемой методики и выполнить отбор задач для лабораторного практикума.
3. Исследовать и обосновать выбор кластера высокопроизводительных параллельных вычислений как технического средства обучения параллельному программированию.
4. Рассмотреть существующие языки и средства программирования, применяющиеся в параллельных вычислениях, и выбрать основу лабораторного практикума.
5. Исследовать существующие классификации параллельных архитектур.
6. Исследовать операционные системы семейства UNIX для возможности реализации параллельных вычислений.
7. Разработать методику обучения параллельному программированию на основе принципа вариативности и проверить ее эффективность.
8. Исследовать основные теоретические модели параллельных вычислений для проектирования содержания методики обучения параллельному программированию.
Методы исследования: анализ научно-методической и психолого-педагогической литературы, анализ ресурсов сети Internet, преподавание по теме исследования, наблюдение за ходом познавательной и практической деятельности учащихся, обработка данных педагогического эксперимента.
Место параллельного программирования в двухуровневой системе педагогического образования
18-19 июня 1999 года в Болонье ряд европейских министров образования подписали совместное заявление, которое впоследствии послужило началом «болонского процесса» в европейской системе образования. Согласно этому общеевропейскому документу, правительства Европейского союза объявили о своих намерениях инициировать масштабную реформу интернационализации образования, результаты которой ожидаются после 2010 года. Россия в Болонский процесс вступила в сентябре 2003 года. Основными целями Болонского процесса является принятие единой европейской системы высшего образования, развитие единых критериев оценки качества преподавания и образования, а также создание единой системы зачетных единиц и сопоставимых ученых степеней. Система «бакалавр-магистр» подразумевает 3-4-летнее обучение на первой ступени и два года учебы на второй [59].
Государственным стандартом так определены требования к квалификации магистра физико-математического образования:
«Магистр подготовлен к научно-исследовательской и педагогической деятельности, требующей углубленной фундаментальной и профессиональной подготовки в области физико-математического образования. Выпускник, получивший степень (квалификацию) магистра физико-математического образования, должен быть готов решать образовательные и исследовательские задачи, ориентированные на научно-исследовательскую работу в предметной области знаний и образовании; использовать современные технологии сбора, обработки и интерпретации полученных экспериментальных данных; владеть современными методами исследований, которые применяются в области физико-математического образования; конструировать, реализовывать и анализировать результаты процесса обучения в соответствующей области в различных типах учебных заведений, включая профильную школу, а также средние специальные и высшие учебные заведения; проектировать и реализовывать в практике обучения новое учебное содержание учебных предметов; диагностировать уровень обучаемости учащихся, затруднений, возникающих в процессе обучения, а также математических способностей; определять стратегию индивидуальной коррекции или развития учащихся в процессе обучения; осуществлять корректирующую или развивающую деятельность в процессе работы с отдельными учащимися или группами учащихся при изучении физико-математического содержания...» [25].
Там же в пункте «1.5. Аннотированный перечень магистерских программ» для программы за номером 540205М «Информационные технологии в физико-математическом образовании» сказано:
«Программа предусматривает формирование расширенной системы знаний об информационном моделировании и овладение информационными технологиями обучения, используемыми в области физико-математического образования. Направлена на подготовку компетентного исследователя и системного методиста, способного широко использовать и разрабатывать (модифицировать) продуктивные информационные технологии в области физико-математического образования» [25].
Исходя из государственного образовательного стандарта для степени магистра физико-математического образования и учитывая, что Россия вступила в Болонский процесс, можно сделать несколько выводов:
Для интеграции в европейское образование российские магистры физико-математического образования (особенно в области информатики - одной из самых быстро развивающихся наук) должны владеть современными информационными технологиями (или хотя бы иметь представление о них в достаточном объеме).
Параллельное программирование - быстро развивающееся направление информатики, позволяющее решать современные задачи в различных областях науки и техники, и поэтому изучение его магистрами физико математического образования является необходимым как для развития науки, так и для воспитания конкурентно способных специалистов в области информатики, особенно в свете Болонского процесса.
Выбор основы для проектирования методики обучения параллельному программированию
В современном программировании существует три термина: параллельное, распределенное и многопоточное программирование. Следует разграничить как эти понятия, так и области их применения. Для начала рассмотрим различные определения данных понятий и их составляющих, используемые разными авторами.
«Методы параллельного программирования позволяют распределить работу программы между двумя (или больше) процессорами в рамках одного физического или одного виртуального компьютера. Методы распределенного программирования позволяют распределить работу программы между двумя (или больше) процессами, причем процессы могут существовать на одном и том же компьютере или на разных» [81].
«Параллельное программирование - совокупность языковых средств и методов решения задач на ЭВМ, допускающих параллельную обработку данных» [50].
«Распределенное программирование - это совокупность языковых средств и методов программирования систем распределенной обработки данных в сетях ЭВМ и многомашинных комплексах» [50].
Согласно [83] «...термин многопоточиый обычно означает, что программа содержит больше процессов (потоков), чем существует процессоров для их выполнения. Следовательно, процессы на процессорах выполняются по очереди».
«Программа - метод вычислений, выраженный на языке программирования» [36].
«Программа - это описание на некотором формализованном языке алгоритма, решающего поставленную задачу» [9]. «Последовательная программа имеет один поток управления, а параллельная - несколько» [83].
«Параллельная программа содержит несколько процессов, работающих совместно над выполнением некоторой задачи» [83].
«Процесс - это динамическая сущность программы, ее код в процессе своего выполнения» [9].
«Процесс (process) - это некоторая часть (единица) работы, создаваемая операционной системой» [81].
«Процесс - это последовательная программа, которая при выполнении имеет собственный поток управления» [83].
«Процессы являются параллельными, если они существуют (выполняются) одновременно. Параллельные процессы могут работать совершенно независимо друг от друга или же они могут периодически синхронизироваться и взаимодействовать» [58].
«Если в операционной системе могут одновременно существовать несколько процессов или/и задач, находящихся в состоянии «выполняется», то говорят, что это многозадачная система, а эти процессы называют параллельными» [9].
Согласно [81] поток - это часть выполняемого кода в процессе операционной системы, которая может быть регламентирована определенным образом.
«Лоток (или задача, или нить) - это как бы одна из ветвей исполнения процесса» [9].
Отдельно следует рассмотреть термин «параллельные вычисления», под которым «...понимается вся совокупность вопросов, относящихся к созданию ресурсов параллелизма в процессах решения задач и гибкому управлению реализацией этого параллелизма с целью достижения наибольшей эффективности использования вычислительной техники» [14].
«Параллельная обработка данных имеет две разновидности: конвейерность и собственно параллельность. Параллельная обработка. Если некое устройство выполняет одну операцию за единицу времени, то тысячу операций оно выполнит за тысячу единиц. Аналогично система из N устройств ту же работу выполнит за 1000/N единиц времени.
Конвейерная обработка. Идея конвейерной обработки заключается в выделении отдельных этапов выполнения общей операции, причем каждый этап, выполнив свою работу, передавал бы результат следующему, одновременно принимая новую порцию входных данных. Получаем очевидный выигрыш в скорости обработки за счет совмещения прежде разнесенных во времени операций» [80].
«Параллельное приложение состоит из нескольких ветвей, или процессов, или задач, выполняющихся одновременно. Разные процессы могут выполняться как на разных процессорах, так и на одном и том же - для программы это роли не играет, поскольку в обоих случаях механизм обмена данными одинаков» [94].
Специфика проведения данного педагогического эксперимента
Местом проведения педагогического эксперимента стала кафедра информатики Российского Государственного Педагогического Университета имени А.И.Герцена. Так как к моменту проведения эксперимента курса параллельного программирования не было в содержании обучения магистров физико-математического образования, то формой проведения был выбран факультатив.
Особенностью проведения факультатива по параллельному программированию в педагогическом вузе было небольшое количество слушателей. Предпосылок для этого несколько. Во-первых, требования к знаниям в области математики - знание математического анализа, алгебры и теории чисел. Во-вторых, владение методами программирования на языке С. И в-третьих, ограничение на количество слушателей налагает использование кластера высокопроизводительных параллельных вычислений в качестве средства обучения параллельному программированию, так как для реального параллельного программирования необходимо, чтобы каждый пользователь имел доступ как минимум к двум процессорам (а лучше к четырем). Кластер, который использовался для проведения педагогического эксперимента, имел 24 процессора. К тому же доступ студентов к нему возможен только во время проведения практических занятий (2 академических часа в неделю). В будущем, в процессе расширения технической базы для параллельного программирования (например, при увеличении количества кластерных узлов), количество студентов на практических занятиях при одновременном доступе можно будет увеличить.
К тому же разработанная методика обучения параллельному программированию направлена в первую очередь на магистров, а их обучение ведется, как правило, в небольших группах. Поэтому для педагогического эксперимента был выбран третий метод принципа вариативности -факультатив.
В соответствии с принятой структурой проведения педагогического эксперимента [6] можно выделить 3 основных его этапа: поисковый, констатирующий и формирующий.
На поисковом этапе происходил анализ научно-методической литературы и ресурсов сети Internet по теме параллельных вычислений, анализировались в частности:
Содержание обучения параллельному программированию;
Организация процесса обучения параллельному программированию;
Средства обучения параллельному программированию;
Конкретные языки программирования для параллельных вычислений;
Операционные системы семейства UNIX (как платформа для параллельных вычислений);
Опыт преподавания параллельного программирования.
Анализ выявил, с одной стороны, возрастающую популярность параллельного программирования в качестве научного инструмента для высокопроизводительных вычислений и ресурсоемкого моделирования, с другой стороны, отсутствие четкой методики обучения параллельному программированию. В результате анализа рабочих учебных программ по дисциплинам из области параллельного программирования было решено строить методику в виде содержательной модели преподавания.
Также анализ выявил, что на современном этапе развития параллельного программирования в качестве основного средства для параллельных вычислений применяются кластеры. Это подтвердил анализ материалов Всероссийской научно-методической конференции «Телематика» за период с 2002 по 2005 годы [92, 99, 100, 101] и Международного научно-практического семинара «Высокопроизводительные параллельные вычисления на кластерных системах» за 2001-2003 годы [16, 17, 18]. Вследствие этого было решено использовать кластер кафедры информатики РГПУ им. А.И.Герцена для преподавания параллельного программирования и описать применение кластера как технического средства обучения параллельному программированию.