скачать Санкт-Петербургский государственный университет Центр переподготовки и повышения квалификации научно-педагогических кадров по естественнонаучным направлениям Междисциплинарный центр дополнительного профессионального образования Учебно-тематический план междисциплинарной программы повышения квалификации "Паралелльное программирование" г. Санкт-Петербург 2000 Параллельное программирование: Междисциплинарная программа повышения квалификации / Центр переподготовки и повышения квалификации научно-педагогических кадров по естественнонаучным направлениям; Междисциплинарный центр дополнительного профессионального образования СПбГУ. Санкт-Петербург, 2000.- с. Руководитель программы: доц. к.ф.-м.н. С.А. Немнюгин, координатор от МЦ СПбГУ: О.Л. Стесик. Дополнительная информация: Санкт-Петербург, В.О., 14 линия, д. 29, ком.9 Телефон: (812)328-4441 © Санкт-Петербургский государственный университет, 2000 г. ^ повышение квалификации научных сотрудников в практике параллельного программирования для научных исследований. Категория слушателей: специалисты естественнонаучных направлений – физики, химики, биологи - не имеющие специальной подготовки в области программирования. ^ 110 аудиторных часов. Режим занятий: 2-3 раза в неделю, 6-8 учебных часов в неделю. Многопроцессорные вычислительные системы позволяют решать широчайший круг задач в самых различных отраслях научных исследований и технического проектирования. Стремительное развитие высокопроизводительных кластеров персональных ЭВМ, происходящее в последнее время, создает условия для реального использования высокопроизводительных вычислительных систем. Однако уровень подготовки специалистов, работающих в областях, далеких от профессионального программирования, пока не позволяет использовать в полной мере стремительно развивающиеся высокопроизводительные вычислительные ресурсы. Курс содержит дисциплины, направленные на выработку практических навыков работы с прикладными программами для мультипроцессорных вычислительных систем. Несмотря на очень небольшой срок существования суперкомпьютерных центров в России, преподаватели, ведущие занятия по предметам, входящим в программу, имеют значительный опыт преподавания в области методов высокопроизводительных вычислений и большой личный опыт работы с высокопроизводительными вычислительными системами в нашей стране и за рубежом. Основная часть программы посвящена практике программирования для самых распространенных на сегодняшний день систем параллельного программирования; общие теоретические дисциплины представлены только курсом «Архитектура многопроцессорных ЭВМ». Практикумы по работе в ОС Unix и по программированию с использованием традиционных языков программирования включены в программу для компенсации недостатков подготовки слушателей в области професионального программирования. ^
Автор: к.ф.-м.н., доц. С.А. Немнюгин Аннотация Цель данного курса - дать слушателям представление о принципах построения суперкомпьютеров различных типов, истории развития многопроцессорных систем и классификации методов реализации множественности потоков в мультипроцессорных системах, особенностях их архитектуры (связь между узлами, оперативная память и др.). Программа
2.1. Две модели программирования: последовательная и параллельная 2.2. Две парадигмы параллельного программирования
3.1. Классификация Флинна 3.1.1. SISD компьютеры 3.1.2. SIMD компьютеры 3.1.3. MISD компьютеры 3.1.4. MIMD компьютеры 3.2. Основные концепции архитектуры высокопроизводительных вычислительных систем 3.3. Знакомство с архитектурой процессоров высокопроизводительных вычислительных систем 3.3.1. Конвейеры 3.3.2. Суперскалярные процессоры 3.3.3. Векторная обработка данных 3.4. Оперативная память 3.4.1. Чередуемая память 3.4.2. Разделяемая память 3.4.3. Распределенная память 3.5. Связь между элементами параллельных вычислительных систем 3.6. Кластеры рабочих станций. Linux-фермы
Авторы: к.ф.-м.н., доц. С.А. Немнюгин, к.ф.-м.н., доц. А.В. Комолкин, О.Л. Стесик Аннотация В курсе излагаются основные положения теории создания алгоритмов программ для параллельных вычислительных систем. Параллельное алгоритмирование не противопоставляется традиционному последовательному, а рассматривается в совокупности с ним, как продолжение и развитие современной теории алгоритмов. Основное внимание уделяется параллельным вариантам алгоритмов классических вычислительных задач, таких как матричные вычисления, интегрирование, решение систем дифференциальных уравнений и др. Программа
Автор: к.ф.-м.н., доц. С.А. Немнюгин Аннотация ОС Unix является стандартом среды программирования для высокопроизводительных вычислительных систем; для успешной работы с суперкомпьютерами необходимо владение основными приемами работы в Unix. В теоретической части курса излагаются основные принципы организации ОС: разделение времени и многозадачность, устройство файловой системы и понятие о процессах. В ходе практических занятий приобретаются навыки работы с текстовыми редакторами, компиляторами и утилитами Unix, позволяющие в дальнейшем уверенно применять средства ОС в работе с собственными программными проектами. Программа
1.1. Краткая история создания ОС UNIX 1.2. Развитие UNIX, его современные диалекты
3.1. Сеанс работы 3.2. Вход в систему и выход из нее 3.3. Интерпретатор команд 3.4. Изменение пароля 3.5. Справочная система man, xman, info 3.6. Знакомство с текстовыми редакторами pico, joe 3.7. Текстовый и графический интерфейсы пользователя
4.1. Структура файловой системы 4.2. Имена файлов, скрытые файлы 4.3. Организация файловой системы 4.4. Типы файлов, ссылки 4.5. Права доступа к файлам 4.6. Основные команды для работы с файловой системой 4.7. Монтирование/размонтирование файловых систем.
5.1. Домашний каталог пользователя и другие доступные пользователю каталоги 5.2. Текущий каталог, полный и относительный путь 5.3. Основные команды для работы с текстовыми файлами 5.4. Текстовые фильтры 5.5. Текстовые редакторы ed, vi, sed, emacs/xemacs.
6.1. Командный язык интерпретатора bash 6.2. Расширение имен файлов 6.3. Встроенные команды 6.4. Способы запуска процессов 6.5. Переменные окружения и выполнение командных файлов 6.6. Стартовые файлы 6.7. Встроенные и внешние команды, командные файлы 6.8. Интерактивная работа с интерпретатором bash 6.9. Другие интерпретаторы команд: sh, csh, tcsh, ksh
7.1. Понятие процесса 7.2. Типы процессов: системные, демоны и прикладные процессы 7.3. Связь процессов с терминалом, комнады nohup и & 7.4. Атрибуты процесса 7.5. Команды управления процессами 7.6. Сигналы и их обработка процессами. Команда kill 7.7. Потоки ввода/вывода, конвейеры, перенаправление потоков 7.8. Оперативный и фоновый режим исполнения команд 7.9. Планирование запуска процессов в определенное время 7.10. Подсистема очередей на исполнение процессов.
8.1. Средства удаленного доступа: telnet, ftp, lynx, Netscape 8.2. Электронная почта: mail, pine, elm, from 8.3. Организация ЭВМ в сети: глобальная сеть, локальная сеть, кластер ЭВМ 8.4. Протоколы Internet 8.5. Порт, сокет 8.6. Меры безопасности при работе в UNIX 8.7. Команды для работы в сети 8.8. Работа в кластере 8.9. Secure shell
9.1. Архитектура X-Window 9.2. Эмуляторы X-терминала 9.3. X-терминал: запуск и прекращение работы. Команды xinit, xdm 9.4. Менеджеры окон 9.5. Настройка X Window пользователем 9.6. Основные утилиты для работы в X-Window
Авторы: к.ф.-м.н., доц. А.В. Комолкин, О.Л. Стесик Аннотация Практический курс по основам программирования включен в программу для систематизации и структуризации знаний учащихся по языкам программирования C и Fortran. Программа в целом и программа именно этого курса в частности рассчитаны на слушателей, не имеющих базовой специальной подготовки в программировании, т.е. на тех, кто изучил основы программирования самостоятельно. Все средства параллельного программирования базируются, как правило, на одном из этих двух языков. Практические занятия по программированию в рамках данного курса являются необходимой ступенью в подготовке слушателей к восприятию последующего материала. Программа
II. Язык программирования C.
4.1 Структуры и объединения
Авторы: к.ф.-м.н., доц. С.А. Немнюгин, к.ф.-м.н., доц. А.В. Комолкин, О.Л. Стесик Аннотация Цель данного курса - познакомить слушателей с арсеналом современных средств параллельного программирования. Рассматривается широкий спектр основных средств параллельного программирования: от принятых в качестве стандартов MPI и PVM до недавно разработанных и еще не получивших широкого распространения параллельных расширений стандартных языков программирования mpC и DVM. На основании полученных сведений слушателям предстоит выбрать набор предметов для углубленного изучения. Программа включает в себя цикл обзорных лекций по PVM, MPI, HPF, DVM и mpC, изучаемых подробно по выбору во второй части курса. Программа
^ Автор: О.Л. Стесик Аннотация Курс посвящен обзору вспомогательных средств, облегчающих разработку и отладку параллельных программ. Здесь рассматриваются графические средства поддержки параллельного программирования: графический интерфейс для разработки, автоматической параллелизации последовательного кода и отладки параллельных программ. В программу курса включены графический интерфейс к PVM и MPI, CODE ( Computationally-Oriented Display Environment ). Программа
^ (структура и порядок доступа к ресурсам) Авторы: к.ф.-м.н., доц. С.А. Немнюгин, к.ф.-м.н., доц. А.В. Комолкин, О.Л. Стесик Аннотация В ходе данного курса, заключающего общую часть программы, проводится практическое ознакомление с конкретными высокопроизводительными ресурсами: обзор технических средств и их программного обеспечения, знакомство с правилами регистрации и работа с суперкомпьютерами по учебным аккаунтам. Рассматриваются центры университетского уровня - комплекс высокопроизводительных вычислений СПбГУ, регионального масштаба - суперкомпьютерный центр Института высокопроизводительных вычислений и баз данных, центр Всероссийского уровня - высокопроизводительный кластер НИВЦ СПбГУ, и ряд зарубежных суперкомпьютерных центров. ^ Автор: к.ф.-м.н., доц. С.А. Немнюгин Аннотация Практический курс программирования с использованием библиотеки передачи сообщений - Parallel Virtual Machine. Библиотека PVM разработана около десяти лет назад для выполнения параллельных приложений на кластерах гетерогенных рабочих станций. В курсе рассматриваются такие темы, как архитектура PVM, пользовательский интерфейс, принципы функционирования PVM. Предусмотрены практические занятия. Программа
1.1. Методы и технологии высокопроизводительных вычислений. 1.2. Обзор программных средств для высокопроизводительных вычислений.
2.1. Архитектура PVM 2.2. PVM-программа 2.3. PVM-консоль
3.1. Управление процессами 3.2. Сбор информации о состоянии процессов 3.3. Динамическое изменение конфигурации виртуальной машины 3.4. Основные опции 3.5. Передача сообщений: буферизация данных, упаковка данных, отправка и прием данных, распаковка данных
4.1. Компоненты PVM: идентификаторы задач, модель передачи сообщений, демон PVM, библиотека процедур 4.2. Сообщения: фрагменты и буферизация данных, сообщения в libpvm, сообщения в pvmd, управляющие сообщения 4.3. Демон PVM: запуск и останов демона, работа с задачами, обработка ошибок, диспетчер ресурсов, подчиненные демоны 4.4. Библиотека libpvm 4.5. Протоколы передачи данных 4.6. Управление сообщениями 4.7. Переменные окружения задач 4.8. Виртуальная консоль 4.9. Требования к ресурсам 4.10. Особенности функционирования PVM на многопроцессорных системах разного типа
5.1. Установка PVM 5.2. Запуск и настройка PVM 5.3. Компиляция программ с использованием PVM 5.4. Выполнение программ с использованием PVM 5.5 Отладка
6.1. Графические средства мониторинга PVM 6.2. Версии PVM ^ Автор: к.ф.-м.н., доц. А.В. Комолкин Аннотация Система передачи сообщений — Message Passing Interface — является на сегодняшний день стандартом de facto для программного обеспечения параллельных систем. Библиотека MPI к настоящему моменту реализована практически на всех известных мультипроцессорных системах. Программа, использующая MPI для обмена информацией между процессами, может быть легко перенесена с кластера рабочих станций на многопроцессорную ЭВМ типа Cray-T3E. В курсе подробно разбираются все классы операций MPI: методы обмена данными, групповой и парный обмен, виртуальные топологии, синхронизация, методы профилирования и т.д. Дается обзор подпрограмм из библиотеки и объясняются особенности программирования на языках C и Fortran при использовании библиотеки MPI. Объясняются способы запуска программ на системах с различной архитектурой. Программа1. Введение
2.1 Что такое "сообщение" 2.2 Типы данных в MPI 2.3 Процессы как субъекты передачи сообщений 2.4 Виды межпроцессорного обмена 2.5 Способы передачи сообщений
3.1 Обобщенный алгоритм работы MPI-программы 3.2 Запуск программы 3.3 Запуск и останов стсемы MPI 3.4 Информационные подпрограммы в системе MPI 3.5 Аварийное завершение программы 4. Коллективный обмен
5. Профилирование и оптимизация программы 5.1 Реальное и процессорное времена исполнения процесса 5.2 Построение профиля MPI-программы 5.3 Основы опртимизации MPI-программ 6. Парный обмен 6.1 Способы передачи и приема сообщений 6.2 Синхронный обмен 6.3 Асинхронный обмен 6.4 Блокирующий обмен 7. "Три тополя на плющихе" (виртуальные топологии) 7.1 Логические и физические связи между ЭВМ и процессами 7.2 Создание виртуальных топологий 7.3 Использование виртуальных топологий при передаче сообщений 8. Реализация MPICH 8.1 Особенности компиляции программ 8.2 Запуск программ на кластере (machinefile) ^ Автор: О.Л. Стесик Аннотация PARIX – параллельное расширение AIX, реализованное для компьютеров типа Parsytec, не принадлежит к классу стандартных средств параллельного программирования, но является достаточно широко распространенной системой. Ряд организаций Санкт-Петербурга, в том числе и суперкомпьютерный центр ИВВиБД, располагают суперкомпьютерами Parsytec разного класса. Среда PARIX встроена в системное программное обеспечение этих компьютеров и пока является более эффективной для вычиcлений на Parsytec'е, чем построенный над PARIX'ом MPI. Программа1. Архитектура системы Parsytec
^ Авторы: к.ф.-м.н., доц. С.А. Немнюгин, к.ф.-м.н., доц. А.В. Комолкин, О.Л. Стесик Аннотация Программное обеспечение для параллельных вычислений постоянно совершенствуется и пополняется. Трудоемкость освоения MPI и PVM для конечного пользователя и некоторые другие особенности этих средств побуждают разработчиков к созданию «упрощенных» средств разработки параллельных программ, результатом действия которых является либо программа на языке высокого уровня с встроенными в нее операторами MPI или PVM, либо готовый исполняемый модуль, обеспечивающий обмен на низком уровне. Самым известным и широко используемым средством такого рода является HPF. Из других средств будут рассматриваться перспективные отечественные разработки, используемые в российских суперкомпьютерных центрах: DVM и mpC. Программа
1.1 Концепция HPF 1.2 Параллелизм в HPF
2.1 Параллелизм данных 2.2 Директивы HPF 2.3 Декларация PROCESSORS 2.4 Директива DISTRIBUTE 2.5 Блочное распределение 2.6 Циклическое распределение
1. Введение
2. Обзор языка программирования DVM 2.1 Модель программирования и модель параллелизма 2.2 Синтаксис директив DVM 3. Массивы виртуальных процессоров. Директива PROCESSORS 4. Распределение данных 4.1 Директивы DISTRIBUTE и REDISTRIBUTE 4.2 Распределение динамических массивов 4.3 Распределение через выравнивание 4.4 Директивы DYNAMIC и NEW_VALUE 4.5 Распределение по умолчанию 5. Распределение вычислений 5.1 Параллельные циклы 5.2 Вычисления вне параллельного цикла 6. Спецификация удаленных данных 6.1 Определение удаленных ссылок 6.2 Удаленные ссылки типа SHADOW 6.3 Удаленные ссылки типа REMOTE 6.4 Удаленные ссылки типа REDUCTION 7. Параллелизм задач 7.1 Описание массива задач 7.2 Отображение задач на процессоры. Директива MAP
8. Процедуры 9. Совместимость с HPF
2.1 Вычислительное пространство и сетевые объекты 2.2 Подсети 2.3 Распределение данных 2.4 Распределение вычислений 2.5 Распределенные сети и гнездный параллелизм 2.6 Сетевые функции 2.7 Указатель функции
3.1 Декларация типа сети 3.2 Декларация координат
7.1 Локальные библиотечные функции
8. Ограничения в использовании
|