Нижегородский государственный университет им.Н.И.Лобачевского.

ЛАБОРАТОРИЯ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ

Факультет вычислительной математики и кибернетики

Лаборатория ITLabЛетняя школа 2007Материалы Switch to English version  
Новости
О Лаборатории
Обучение
Исследования
Образовательные комплексы
Семинар Лаборатории
Мероприятия
Вакансии Интел
Сотрудничество
Разработчики сайта
О нас пишут
Летняя школа 2011
Видео лекции
Клуб У.М.Н.И.К.
Имя:
Пароль:
запомнить:
Забыли пароль? Регистрация

Материалы

Параллельное программирование (программа курса)

Раздел 1. Параллельное программирование: общие вопросы

Лекция 1

  • О предмете: что есть параллельная программа?
  • О целях
    Зачем создавать параллельные программы?
  • О способах
    Как создавать параллельные программы?
  • О средствах
    Выбор "платформы" для распараллеливания. Языки, компиляторы, библиотеки,
    "ручное" программирование.
  • О достижении целей распараллеливания
    Схожесть и отличия процессов "распараллеливания" и "оптимизации" программ.
    Плюсы и минусы.
  • О методике создания
    Список вопросов, на которые нужно ответить, прежде чем создавать параллельную 
    программу.
  • О проблемах
    Неустойчивость работы. Ошибки компиляторов. Неустойчивость вычислений. 
    Работа с динамической памятью.

Практика 1

  • Параллельный "Hello World" в потоках
  • Сборка (ключи компилятора), запуск, эксперименты с числом потоков
  • Печать в многопоточной программе

 

Раздел 2. OpenMP

Лекция 1

  • Введение в OpenMP
    OpenMP как стандарт параллельного программирования для систем с общей памятью.
    Принципы организации параллелизма с использованием OpenMP.
  • Составные части OpenMP
    Директивы компилятора, функции run-time библиотеки.
  • Определение параллельной области
    Директива parallel.
  • Библиотека функций OpenMP
    Функции для контроля/запроса параметров среды исполнения. Число потоков в
    параллельной секции, номер потока.

Практика 1

  • Параллельный "Hello World" на OpenMP
  • Сборка (ключи компилятора), запуск, эксперименты с числом потоков
  • Параллельный "Hello World" с использованием функций OpenMP
  • Скалярное произведение векторов с "ручным" распределением работы (по номеру
    потока). С показом (в самом конце пары) потокового варианта для сравнения.

Лекция 2

  • Основные директивы OpenMP
    Формат записи. Области видимости. Типы директив.
  • Распределение вычислений между потоками
    Директивы DO/for, sections, single
  • Управление областью видимости данных
    Параметры директив shared, private, firstprivate, lastprivate, copyin,
    default, reduction.

Практика 2

  • Скалярное произведение векторов с распределением работы в цикле.
  • Разные варианты расписания. Эксперименты по замеру эффективности.
  • Показ потокового варианта для сравнения.
  • Вычисление числа Пи.

Лекция 3

  • Синхронизация как задача параллельного программирования.
  • Средства синхронизации в OpenMP
    Директивы master, critical, barrier, atomic, threadprivate
  • Библиотека функций OpenMP
    Функции для контроля/запроса параметров среды исполнения.
    Функции синхронизации.
    Переменные среды исполнения.

Практика 3

  • Умножение матрицы на вектор. Реализация различных схем распределения данных
    для обработки.

Практика 4

  • Реализация основной задачи "Умножение матриц" на OpenMP


Раздел 3. MPI

Лекция 1

  • Введение в MPI
    MPI как стандарт параллельного программирования для систем с распределенной
    памятью.
  • Принципы организации параллелизма с использованием OpenMP.
  • Состав MPI - краткий обзор
    Средства, предоставляемые стандартом MPI для создания параллельных программ:
    передача данных типа "точка-точка", операции коллективного обмена, операции
    редукции, типы данных, группы процессов и коммуникаторы.
  • Мини-MPI
    Шесть минимально-необходимых функций для создания MPI программы.
    Передача данных типа "точка-точка"

Практика 1

  • Настройка среды разработки MS VS 2005
  • Параллельный "Hello World" на MPI
  • Сборка, локальный и распределенный запуск, эксперименты с числом процессов
  • Скалярное произведение векторов с "ручным" распределением работы (по номеру
    процесса). Эксперименты. Сравнение эффективности с OpenMP версией.

Лекция 2

  • Группы процессов и коммуникаторы
  • Операции коллективного обмена, редукция
  • Операции синхронизации и измерения времени

Практика 2

  • Вычисление числа Пи
  • Параллельная сортировка

Лекция 3

  • Разбор задачи умножения матрицы на вектор. Ленточная и блочная схемы.
    Алгоритм Фокса.

Практика 3, 4

  • Реализация основной задачи "Умножение матриц" на MPI

 

Раздел 4. Инструменты (ITC, ITP)

Лекция 1

  • Введение в параллельную отладку и профилирование
    Что есть отладка? Отличия в процессе отладки параллельного кода.
    Что есть профилирование? Зачем профилировать параллельный код?
  • О средствах параллельной отладки MPI и OpenMP программ
  • ITC
    Назначение, возможности, принцип сбора информации
    Подготовка программы для анализа
    Создание проекта в Intel Thread Checker
    Сбор и анализ данных
    Пример использования Intel Thread Checker

Практика 1

  • Исследование примеров из поставки ITC

Практика 2

  • Примеры на типичные ошибки в OpenMP программах
    Скалярное произведение
    Задача Дирихле
    Обедающие философы

Лекция 2

  • Определение и цели профилировки, назначение ITP
  • Основные концепции и понятия профилирования
  • Круг решаемых задач (распределение вычислительной нагрузки, синхронизация и производительность, непроизводительные издержки при работе с потоками)
  • Общий порядок работы с инструментом (инструментация приложения, профилирование приложения)
  • Пример использования ITP

Практика 3  ("Распределение вычислительной нагрузки")

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

Практика 4 ("Синхронизация и накладные расходы на поддержку многопоточности")

  • Вопросы оптимизации исследуются на примере приложения, имитирующего работу клиент-серверной системы

<< вернуться  |   Документ от: 18.07.2007 16:27

Новости

14.11.2015
16.10.2015
16.10.2015
14.10.2015
20.09.2015

© ITLab, Нижний Новгород,  2009