Г.Б.Камалова, С.Бейсебаева
Казахский
национальный педагогический университет им.Абая, г.Алматы
К
ВОПРОСУ ИСПОЛЬЗОВАНИЯ ТЕХНОЛОГИЙ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ ПРИ ОБУЧЕНИИ БУДУЩИХ
УЧИТЕЛЕЙ ИНФОРМАТИКИ ЧИСЛЕННЫМ МЕТОДАМ
Наличие огромного множества прикладных задач с большим объемом вычислений,
необходимость их решения и принципиальная ограниченность максимально возможного быстродействия компьютеров традиционной, ‘фон Неймановской’, архитектуры привели к разработке и использованию суперкомпьютеров, которые
благодаря многопроцессорности позволяют
одновременно, в один и тот же момент времени осуществить выполнение нескольких
операций обработки данных. Разделение при
этом применяемого вычислительного алгоритма на информационно независимые части
и организация выполнения каждой выделенной части вычислений на разных
процессорах, позволяет выполнить необходимые вычисления с меньшими затратами
времени и в целом достичь ускорения процесса решения задачи.
Широкое распространение подобные параллельные
вычисления приобрели с переходом компьютерной индустрии на массовый выпуск
многоядерных процессоров с векторными расширениями. Сегодня ими оснащены практически
все устройства, начиная от карманных гаджетов и до самых мощных
суперкомпьютеров. Развитие вычислительной техники с необходимостью
подкрепляется совершенствованием алгоритмической и программной компонент –
технологий параллельного программирования. Одним из серьезных препятствий к их применению
является недостаточность специалистов, умеющих использовать возможности многопроцессорных
устройств, изначальная нацеленность их
мышления на строгую последовательность выполнения вычислений. Поэтому в
сложившейся ситуации остро встает проблема подготовки кадров в области параллельного программирования и параллельных вычислений. Причем подготовка в
данной области должна начинаться как можно раньше, со школы, а это требует
соответствующей подготовки учителя информатики.
Содержание и методика обучения
теории параллельных вычислений является новым для педагогических вузов,
и, как показывает анализ исследований по данному направлению, а также
содержания программ подготовки будущих учителей информатики в области
параллельных вычислений и многопроцессорных ЭВМ, вопросы, касающиеся данной
теории, не отражены в них в достаточной
мере. Исходя из этого, целью данного исследования
является обоснование возможности и целесообразности использования
технологий параллельного программирования при обучении будущих учителей
информатики численным методам.
Являясь элементом вычислительной информатики [1], параллельные вычисления и
параллельное программирование затрагивают многие вопросы решения вычислительных задач на компьютере.
Изучение их не просто актуально сегодня, но и может служить одним из возможных
путей усиления фундаментальной подготовки
специалистов в области информатики, в том числе и будущих учителей
информатики. И могут быть предметом изучения ряда дисциплин предметной их
подготовки.
Часть
вопросов, связанных с разработкой, анализом и реализацией параллельных
алгоритмов может с успехом рассматриваться
в курсе «численные методы». Это – одна из самых выигрышных дисциплин в системе
подготовки будущих учителей информатики в деле получения не только навыков
решения вычислительных задач, но и опыта практической работы на современных
электронных вычислительных машинах и изучения областей их применения. В ней
можно объединить рассмотрение как последовательных, так и параллельных алгоритмов. Разумеется, что
разработка параллельных алгоритмов и программ
является непростой задачей в
связи с трудностью выявления
параллелизма, обычно скрытого, в
алгоритме, т.е. выявления частей алгоритма, могущих выполняться независимо друг
от друга. Но, разработанное за десятилетия эксплуатации вычислительной техники огромное
количество тщательно отлаженных и оптимизированных последовательных алгоритмов,
может быть положено в основу параллельных алгоритмов и использовано для
сравнения эффективности
распараллеливания. Потенциальная
возможность
распараллеливания
неодинакова для вычислительных задач различного типа – она
значительна для задач, содержащих большой объем независимых друг от друга вычислений,
а задачи, рассматриваемые в курсе «численные методы» практически все такие. Программу
его составляют достаточно традиционные учебные разделы, содержащие тщательно
отлаженные и оптимизированные последовательные алгоритмы решения типовых задач
вычислительной математики. Это, во-первых, численные методы решения основных
задач линейной алгебры, к которым, как правило, в итоге сводится решение большинства
задач вычислительной математики. Кроме того, основные численные методы решения
задач математического анализа, задач для дифференциальных уравнений,
обыкновенных и в частных производных, а
также обработки экспериментальных данных. Обучение им немыслимо без активного использования
компьютера и его программного обеспечения.
Распараллеливание
алгоритмов и их компьютерная реализация требует
намного более серьезного и углубленного
анализа структуры алгоритмов, нежели при традиционно-последовательном
программировании. В стандартную схему решения задачи на ЭВМ с учетом специфики
параллельных вычислений необходимо включить еще несколько пунктов: информационный анализ; распараллеливание процессов; конструирование параллельной программы и оценка
эффективности параллельной программы» [2].
Информационный анализ
позволяет выяснить те части программы, выполнение которых возможно организовать
параллельно, независимо друг от друга, а процесс распараллеливания может быть
организован следующим образом: сначала между процессорами распределяются
операции, которые зависят только от внешних данных программы, не зависят друг
от друга и могут быть выполнены одновременно. Это образует первый ярус ярусно-параллельной
формы графа алгоритма, обычно использующейся при распараллеливании алгоритмов. Второй
ярус включает операции, зависящие только от операций первого яруса и т.д.
В качестве примера
приведем одну из задач курса «численные методы» – задачу численного
интегрирования, где требуется вычислить определенный интеграл методом
центральных прямоугольников:
,
,
, использование
которого приводит к необходимости
сложения
значений функций
.
Заметим, что в данном алгоритме вычисления интеграла
заключен немалый параллелизм. Во-первых, вычисление значений xi не зависит друг от друга,
независимо друг от друга вычисляются и соответствующие им значения функции
, поэтому выполнение их
возможно организовать параллельно на разных процессорах. Далее, поскольку неважно,
в каком порядке суммируются элементы,
можно частичное суммирование производить параллельно на разных процессорах, а
потом складывать результаты частичных сумм, в соответствии с обычно
использующейся при распараллеливании алгоритмов ярусно-параллельной формой
графа алгоритма.
Построение параллельной
программы предполагает выбор подходящей технологии программирования и
реализации на ее основе разработанного параллельного обобщения традиционного
последовательного алгоритма. Наиболее распространенными технологиями
параллельного программирования, базирующимся на традиционных языках
программирования С/С++, в настоящее время являются OpenMP – для компьютеров с
общей памятью и MPI (Message Passing Interface - интерфейс передачи сообщений) –
для кластерных систем и компьютеров с распределенной памятью, который может
применяться также и на вычислительных системах других типов. Их использование требует
владения студентами базовыми знаниями и навыками разработки программ на данных языках
программирования, которые изучаются, как правило, на первых курсах обучения в
педагогических вузах.
Одним из наиболее
эффективных подходов к обучению будущих учителей информатики разработке
параллельных алгоритмов и использованию технологий параллельного
программирования в рамках курса численные методы может быть применение метода
проектов. Организация самостоятельной учебной деятельности студентов в свете
современных тенденций развития высшего образования имеет особое значение, так
как современное общество ставит перед высшей школой задачу подготовки не только
знающего, но и, главным образом, мыслящего и умеющего добывать самостоятельно
необходимые для практической деятельности знания и умения специалиста. В качестве
индивидуальных или групповых проектов в
рамках данного курса студентам могут быть предложены темы, связанные с разработкой
и реализацией параллельного обобщения традиционных последовательных
алгоритмов, рассматриваемых на аудиторных занятиях.
Таким образом,
технологии параллельного программирования могут с успехом использоваться в
обучении параллельным алгоритмам решения
типовых задач вычислительной математики в курсе численные методы, что позволит
расширить круг знаний будущих учителей информатики о современных компьютерных системах,
технологиях программирования и
возможностях их использования для эффективного решения вычислительных задач.
1 Ильин
В.П. Вычислительная информатика: открытие науки.– Новосибирск: Наука, Сиб.
отделение, 1991. – 198с.
2 Анисимова
Н.С., Слива М.В. Этапы решения задачи на ЭВМ при параллельном программировании
// Информатика и образование, 2007. – №2. – С.68-70