МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Саратовский государственный университет имени Н.Г. Чернышевского Факультет компьютерных наук и информационных технологий УТВЕРЖДАЮ _______________________ "_____"__________________20___ г. ПРОГРАММА УЧЕБНОЙ ДИСЦИПЛИНЫ Языки параллельного программирования Направление подготовки 010500 – Математическое обеспечение и администрирование информационных систем Профиль подготовки Параллельное программирование Квалификация (степень) выпускника Бакалавр Форма обучения Очная Саратов 2011 1. Цели освоения дисциплины. Целями освоения дисциплины «Языки параллельного программирования» являются знакомство со специализированными языками параллельного программирования, изучение моделей параллельных вычислений, лежащих в основе этих языков, формирование практических навыков разработки параллельных программ. 2. Место дисциплины в структуре ООП бакалавриата. Данная учебная дисциплина входит в раздел «Профессиональный цикл. Вариативная часть» ФГОС-3. Читается в 7 семестре. Для успешного освоения дисциплины необходимы компетенции, сформированные в ходе изучения курса «Теоретические основы параллельного программирования». Компетенции, сформированные у студентов в результате изучения дисциплины, будут использоваться при написании выпускной квалификационной работы. 3. Компетенции освоения дисциплины: обучающегося, формируемые в результате Данная дисциплина частично способствует формированию следующих компетенций: способность применять знания на практике (ОК 5); базовые знания в различных областях (ОК 13); определение общих форм, закономерностей, инструментальных средств для данной дисциплины (ПК 1); умение понять поставленную задачу (ПК 2); умение формулировать результат (ПК 3); умение грамотно пользоваться языком предметной области (ПК 7); умение ориентироваться в постановках задач (ПК 8); В результате освоения дисциплины обучающийся должен: знать: модели параллелизма в построении многопоточных и распределенных решений; методы применения подходов распараллеливания для решения фундаментальных и прикладных задач линейной алгебры, математической статистики, теории обработки сигналов и численных методов; уметь: использовать языки параллельного программирования для программирования параллельных и распределенных решений, анализировать необходимость и целесообразность применения методов параллелизма для решения поставленных задач; владеть: инструментами параллельного программирования, а также инструментами отладки и тестирования параллельных программ. 4. Структура и содержание дисциплины. Общая трудоемкость дисциплины составляет 6 зачетных единиц, 216 часа. № п/п 1 2 3 4 5 6 7 8 Раздел дисциплины Обзор языков параллельного программирован ия Модель параллельных вычислений Linda Язык программирован ия Occam Язык программирован ия Oz Язык программирован ия Erlang Параллельное программирован ие с использованием CUDA Параллельное программирован ие с использованием OpenCL Расширение Семе стр Неделя семестра Виды учебной работы, включая самостоятельную работу студентов и трудоемкость (в часах) Лек Лаб Сам Формы текущего контроля успеваемости (по неделям семестра) Формы промежуточной аттестации (по семестрам) 7 1 2 2 4 7 2-3 4 6 8 7 4 2 4 4 7 5 2 2 4 7 6-8 6 10 12 7 9-14 10 15 24 7 15-17 8 12 12 Контрольная работа 2 (на 17 неделе) 7 18 2 3 4 Курсовые Контрольная работа 1 (на 5 неделе) языков на платформе Microsoft .NET для параллельного программирован ия Промежуточная аттестация Итого работы Экзамен 36 54 72 Обзор языков параллельного программирования Классификации языков программирования. Модель параллельных вычислений Linda История возникновения. Модель языка. Сравнение с MPI. Реализации на различных языках (C, C++, Java). Язык программирования Occam CSP-концепция (концепция взаимодействующих последовательных процессов). Базовые понятия языка Occam. Вычислительный процесс. Элементарные и составные процессы. Формальные процессы. Конструкторы процессов. Типы данных. Описание каналов. Сравнительный анализ версий языка. Язык программирования Oz История разработки. Особенности языка. Структуры данных. Функции. Потоковые переменные и декларативный параллелизм. Примеры программ на языке Oz. Язык программирования Erlang Синтаксис языка. Модули и функции. Кортежи. Списки. Работа с процессами. Обмен сообщениями. Распределённое программирование. Обработка ошибок. Параллельное программирование с использованием CUDA Возможные преимущества вычислений на графическом процессоре. Средства разработки для графического процессора. Использование технологии CUDA для вычислений на графических процессорах. Модель программирования. Модель исполнения и иерархия потоков. Иерархия памяти. Интерфейс программирования CUDA. Спецификаторы типов переменных и функций. Встроенные переменные. Конфигурирование исполнения ядер. Синхронизация. Управление устройствами. Управление памятью. Общие принципы вычислений на базе технологии CUDA. Исследование производительности практической задачи. технологии CUDA на примере Параллельное программирование с использованием OpenCL Использование OpenCL для вычислений на графических процессорах. Архитектура OpenCL. Модель платформы. Модель исполнения. Модель памяти. Модель программирования. Общие принципы вычислений на базе OpenCL. Перенос приложения CUDA на OpenCL. Исследование производительности технологии на примере практической задачи. Расширение языков на платформе Microsoft .NET для параллельного программирования. Основные возможности параллельного программирования с использованием библиотеки Parallel Extensions для .NET фреймфорка. Параллельный язык запросов PLINQ. Координирующие структуры данных. 5. Образовательные технологии При проведении занятий по данному курсу используются следующие активные и интерактивные формы: организация дискуссий и обсуждений спорных вопросов, использование метода мозгового штурма, использование мультимедийных презентаций. 7. Учебно-методическое и информационное обеспечение дисциплины. а) основная литература: 1. Гергель В.П. Теория и практика параллельных вычислений. – М.: Бином. Лаборатория знаний, Интернет-университет информационных технологий, 2007. 2. Эндрюс Г.Р. Основы многопоточного, параллельного и распределенного программирования. – М.: Издательский дом «Вильямс», 2003. б) дополнительная литература: 3. Джоунз Г. Программирование на языке ОККАМ. - М.: Мир, 1989. 4. Сырков Б.Ю., Матвеев С.В. Программное обеспечение мультитранспьютерных систем. - М.: Диалог-МИФИ, 1992. 5. Хоар Ч. Взаимодействующие последовательные процессы. - М.: Мир, 1989. 8. Материально-техническое обеспечение дисциплины. лекционная аудитория с мультимедийным оборудованием с выходом в Интернет, компьютерные классы с программным обеспечением, рассчитанные на обучение группы студентов из 8 – 12 человек, удовлетворяющие санитарно-гигиеническим требованиям под управлением операционной системы Microsoft Windows 7 с подключением к Internet, видеокарты nVidia с поддержкой CUDA и OpenCL; Компиляторы языков Erlang, CUDA, OpenCL, C# (Microsoft Visual Studio 2010). Программа составлена в соответствии с требованиями ФГОС ВПО с учетом рекомендаций и Примерной ООП ВПО по направлению 010500 Математическое обеспечение и администрирование информационных систем и профилю подготовки параллельное программирование. Автор Зав. кафедрой ТП ___________ В.Г. Самойлов Программа одобрена на заседании базовой кафедры «Технологии программирования» от «14»марта 2011 года, протокол № 6. Заведующий базовой кафедрой «Технологии программирования» ___________ В.Г. Самойлов Декан факультета КНиИТ, доцент ___________ А. Г. Федорова