Содержание курса «Основы параллельного программирования»

СОДЕРЖАНИЕ КУРСА «ОСНОВЫ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ»

Курс «Параллельное программирование», отбор содержания, модель знаний, логико-се-

мантический подход, тезаурусный метод.

На фоне стремительного развития вычислительной техники, появления все более совершенных и мощных вычислительных систем многие образовательные программы, связанные с информационными технологиями, не в полной мере отражают текущий уровень развития предметной области информатики. Особенно сильно несоответствие образовательных программ уровню развития технологий заметно, когда речь заходит о параллельных вычислениях.

Параллельные вычислительные системы развиваются довольно давно (для информатики 30—40 лет — это большой срок), но в последнее десятилетие, когда вычислительные мощности однопроцессорных машин почти достигли своего предела, параллельные вычислительные системы начали интенсивно развиваться, их стоимость — падать, а сферы применения — расширяться. В данном случае речь идет не только о специальных мощных дорогостоящих системах, таких как суперкомпьютеры, кластеры и т. п., но и об обычных персональных компьютерах, для которых уже сами собой разумеются многоядерные процессоры, многоядерные видеокарты, а значит, и параллельная обработка информации. Государственные образовательные стандарты предполагают изучение параллельных вычислительных систем и параллельного программирования только для некоторых направлений, связанных с прикладной информатикой.

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

При введении нового учебного курса в программу подготовки студентов возникает первостепенная проблема — это отбор содержания обучения. Решение проблемы зависит от правильно поставленных целей и задач курса как теоретического, так и практического характера.

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

Строгий отбор содержания учебного материала в соответствии с поставленными целями, составление системы понятий и тезауруса учебного курса являются ключами к успешному освоению студентами учебной программы. Под системой понятий учебного курса будем подразумевать понятия конкретной предметной области, отображаемые с учетом дидактических, лингводидактических и психологических принципов, формальных и содержательных требований и представляющие собой научно и методически обоснованную целостность, содержание которой является необходимым и достаточным для успешного освоения студентами за определенное время [Кувалдина, 2003, с. 76].

Для построения системы понятий учебного курса может быть использовано несколько подходов:

1) система понятий составляется в виде произвольного перечня;

2) составление тезауруса (перечня понятий с учетом связей и отношений между ними);

3) составление перечня понятий с учетом последовательности возникновения между понятиями связей и отношений (исторический подход);

4) построение системы вокруг одного или нескольких понятий с акцентом на центральных понятиях при обучении;

5) ориентация системы понятий на получение студентами знаний по отдельному аспекту предмета.

Для систематизации понятий курса «Основы параллельного программирования» был применен тезаурусный метод в сочетании с логико-семантическим подходом и анализом сетевых моделей. Указанные методы и подходы к систематизации понятий предметной области рассмотрены в работах Т.А. Кувалдиной,

Н.И. Пака и др. [Кувалдина, 2003; Пак, 2008; 2010].

Тезаурус — это взаимосвязанное описание отношений между понятиями, а также способ описания системы понятий. По Т.А. Кувалдиной, «учебный тезаурус — формализованная модель системы основных понятий учебного курса в виде взаимосвязанного описания отношений между понятиями в сочетании со списком определений терминов и комплектом формально-логических схем» [Кувалдина, 2003, с. 80].

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

Тезаурус можно представить в виде четырех частей:

1) лексико-семантическая (собрание терминов);

2) системный указатель дескрипторов терминов;

3) указатель иерархических отношений дескрипторов терминов;

4) пермутационный указатель терминов (согласно словарю по естественным наукам, пермутационный указатель тезауруса - это указатель, в котором в алфавитном порядке перечислены все отдельные слова, входящие в компоненты словосочетаний, образующих дескрипторы, а также для каждого слова указаны все дескрипторы, в состав которых входят эти слова).

Дескриптор - это однозначное ключевое слово или код, обозначающий класс условной эквивалентности, в который включены эквивалентные и близкие по смыслу ключевые слова.

Составляющие тезаурус термины могут находиться в одном из трех отношений:

1) отношение равнозначности (синонимы);

2) отношение пересечения (когда смысловое значение понятия частично пересекается с другим понятием);

3) отношение подчинения (ситуация, в которой одно понятие содержится в другом как смысловая часть).

Разрабатывать тезаурус дисциплины можно как «сверху вниз», расщепляя методами анализа крупные понятия на составляющее, так и «снизу вверх», начиная от

мелких деталей, стоящих на низких уровнях абстрагирования, и объединяя их в общую структуру.

Применительно к курсу «Основы параллельного программирования» систему понятий представляется целесообразным строить «сверху вниз».

Можно выделить несколько этапов построения модели системы понятий (рис. 1).

1. Идентификация. Этап предполагает определение целей и назначения учебного курса.

2. Концептуализация. На этом этапе определяются содержание учебного курса, т. е. состава и номенклатуры понятий, выделение ключевых слов и дескрипторов, составление глоссария.

Рис. 1

3. Проектный. Этап подразумевает проектирование содержания курса в виде системы понятий, построение модели, отражающей естественно-логическую структуру системы понятий.

4. Аналитический. На этом этапе происходит разделение модели на части, соответствующие отдельным сложным понятиям — дескрипторам, а также темам и разделам учебного курса.

5. Сетевого моделирования. Этап предполагает построение сетевой модели и формально-логических схем (семантических графов понятий), определяющих выбор последовательности изложения. Для построения сетевой модели используются сети Петри в виде позиций, переходов и дуг.

6. Оценочный. Производится анализ модели на непротиворечивость и достижимость (т. е. отсутствие «порочного круга» в связях терминов и отношений) [Кувалдина, 2003].

Последовательно применив вышеизложенные этапы построения модели системы понятий к курсу «Основы параллельного программирования», получим модель системы понятий данного курса (рис. 2). Модель представлена в виде цилиндра, рассеченного на слои, каждый из которых несет свою смысловую нагрузку.

Самый нижний слой представляет собой области опорных знаний, в которые входят понятия и связи между ними, необходимые для полного понимания материала предлагаемого курса. Этот слой ссылается на другие дисциплины, обеспечивающие межпредметную связь: архитектура ЭВМ, теория алгоритмов, теоретические основы информатики, теория графов, программирование (структурное и модульное), компьютерные сети, численные методы.

Рис. 2

Следующие слои «цилиндра понятий» определяются иерархически. Непосредственно над базовым слоем располагаются понятия первого уровня, формирование которых опирается на базовые (опорные) знания.

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

Следующий срез (блоки понятий третьего уровня) предполагает формирование понятий, уже непосредственно касающихся программирования в рамках стандарта МР1 [Богачев, 2003; Гергель, Стронгин, 2001; Немнюгин, Стесик, 2002]. В рамках указанного стандарта этот слой отвечает за формирование основных представ-

лений: о типах данных, коммуникаторах, видах и режимах передачи сообщений, моделировании простых параллельных программ с опорой на предшествующий уровень.

Слой понятий и связей четвертого уровня углубляет понимание освоенного ранее, предполагая формирование более абстрактных представлений: о производных типах данных и способах их конструирования, о способах управления коммуникаторами и использования виртуальных топологий (связь с уровнем 2). Знания этого уровня используются при решении более сложных задач из линейной алгебры, численных методов, ТОЙ, теории графов.

Как можно заметить, «цилиндр понятий» не имеет верхней границы по той причине, что изучение параллельных вычислений не должно ограничиваться рамками заявленной темы. Предлагаемая модель может развиваться как в плоскостях, увеличивая количество блоков понятий и связей между ними, так и в высоту, формируя новые, более сложные уровни.

На базе представленной модели знаний сформировано содержание курса «Основы параллельного программирования».

Назначение курса «Основы параллельного программирования» — ввести студентов в мир параллельных компьютерных технологий, познакомить с основными элементами параллельных вычислительных систем и заложить знания и умения, необходимые для программирования работы таких систем, а также сформировать представления о параллельной деятельности в целом как неотъемлемой части жизни человеческого общества.

При этом выделяются следующие компетенции:

— владение культурой мышления;

— развитие способностей к обобщению, анализу и синтезу информации в рамках планирования параллельной деятельности;

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

Содержание курса построено в виде отдельных учебных модулей на основе модульного подхода, поскольку он представляется наиболее оптимальным для построения курса в соответствии с разработанной моделью знаний. Современные исследователи (Т.И. Шамова, П.И. Третьяков, Т.М. Давыденко, Г.Н. Шибанова и др.) подчеркивают, что «модульное обучение (модульная технология) преобразует образовательный процесс так, что обучащийся самостоятельно (полностью или частично) обучается по целевой индивидуализированной программе. Сердцевиной модульного обучения является учебный модуль, включающий: законченный блок информации, целевую программу действий учащегося; рекомендации (советы) преподавателя по ее успешной реализации. Модульная технология обеспечивает индивидуализацию обучения: по содержанию обучения, по темпу усвоения, по уровню самостоятельности, по методам и способам учения, по способам контроля и самоконтроля, а цель модульного обучения заключается в содействии развитию самостоятельности учащихся, их умению работать с учетом индивидуальных способов проработки учебного материала» [Шамова, Давыденко, Шибанова, 2002, с. 312].

Таким образом, в результате проведенной работы получено содержание рассматриваемого курса.

Входной модуль. Входное тестирование студентов по базовым знаниям. Место параллельных технологий в структуре современной информатики.

Модуль 1. Архитектура многопроцессорных вычислительных систем. Классификации вычислительных систем (систематика Флинна, схема Хандлера, по способу взаимодействия с оперативной памятью). Примеры архитектур параллельных вычислительных систем. Базовые узлы многопроцессорной системы. Топологии коммуникаций многопроцессорной вычислительной системы. Виды параллелизма и их обеспечение.

Модуль 2. Особенности программирования параллельных вычислений. Последовательная и параллельная модели программирования. Закон Амдала. Параллелизм задач и параллелизм данных. Этапы разработки параллельного алгоритма: декомпозиция, выделение информационных зависимостей, виртуальные топологии, масштабирование, распределение задач между процессорами. Анализ эффективности алгоритма. Параллелизм в деятельности человека.

Модуль 3. Введение в параллельное программирование на основе МР1. Программные средства высокопроизводительных вычислений. Стандарт МР1 и его особенности. Среда выполнения МР1-программ. Коммуникаторы. Операции передачи данных и их виды. Режимы передачи данных. Типы данных в МР1. Инициализация и завершение МР1-программ. Количество и ранг процессов в МР1-программе. Передача и прием сообщений при двухточечном обмене.

Модуль 4. Коллективные операции передачи данных в МР1. Обеспечение коллективных операций передачи данных: сбор данных, широковещательная рассылка, общая передача данных от всех процессов всем процессам программы. Операции редукции данных. Производные типы данных и способы их конструирования. Управление группами процессоров и коммуникаторов.

Итоговый модуль. Выходное тестирование по дисциплине.

В заключение можно сказать, что для введения новой дисциплины (или дополнения программы существующей) работа по отбору содержания является необходимой, во многом определяющей методы, приемы, средства дальнейшего обучения, круг задач для практической деятельности.

Библиографический список

1. Богачев К.Ю. Основы параллельного программирования. М.: БИНОМ. Лаборатория знаний, 2003.

2. Гергель В.П., Стронгин Р.Г. Основы параллельных вычислений для многопроцессорных вычислительных систем. Н. Новгород: ННГУ, 2001.

3. Кувалдина Т.А. Систематизация понятий курса информатики на основе методов искусственного интеллекта: дис. ... д-ра пед. наук: 13.00.02, 2003.

4. Немнюгин С., Стесик О. Параллельное программирование для многопроцессорных вычислительных систем. СПб.: БХВ-Петербург, 2002.

5. Пак Н.И. Информационное моделирование: учеб. пособие / Краснояр. гос. пед. ун-т им. В.П. Астафьева. Красноярск, 2010. 152 с.

6. Пак Н.И. Проективный подход в обучении как информационный процесс: монография / Краснояр. гос. пед. ун-т им. В.П. Астафьева. Красноярск: РИО КГПУ, 2008. 112 с.

7. Шамова Т.И., Давыденко Т.М., Шибанова Г.Н. Управление образовательными процессами. М.: Академия, 2002. 384 с.