Опубликована: 01.10.2016 | Стоимость: бесплатно | Форма обучения: дистанционная [?]
Сроки проведения: 12.10.2016 - 21.12.2016 [расписание]
В рамках курса проводится изучение основных возможностей стандарта OpenMP, необходимых для создания эффективных параллельных программ для многоядерных и многопоточных процессоров. Рассматриваются подходы для функциональной отладки OpenMP-программ, а также

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

Цель: 

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

| | Поделиться |

План занятий

ЗанятиеЗаголовок <<Дата изучения
21 декабря 2016
00:00
Лекция 1
1 час
Введение
Современные направления развития параллельных вычислительных систем (многоядерность и многопоточность). SMP (Symmetric Multiprocessing) и DSM (Distributed Shared Memory)-системы. Процессы и нити. Модель общей памяти. Стандарт POSIX (Portable Operating System Interface for UNIX) для создания параллельных программ для мультипроцессоров.
Оглавление
    12 октября 2016
    12:30
    Лекция 2
    1 час
    OpenMP - модель параллелизма по управлению
    Выполнение OpenMP-программы (Fork and Join Model). Модель памяти. Понятие консистентности памяти. Консистентность памяти в OpenMP (weak ordering). Классы переменных (клаузы SHARED, PRIVATE; директива THREADPRIVATE).
    Оглавление
      19 октября 2016
      12:30
      Тест 1
      15 минут
      26 октября 2016
      00:00
      Лекция 3
      1 час
      Основные понятия
      Директивы и клаузы. Понятие структурного блока. Компиляция OpenMP-программы. Параллельная область (директива PARALLEL). Понятие задачи (директива TASK).
      Оглавление
        26 октября 2016
        12:30
        Тест 2
        15 минут
        2 ноября 2016
        00:00
        Лекция 4
        1 час
        Конструкции распределения работы
        Распределение витков циклов. Циклы с зависимостью по данным. Организация конвейерного выполнения для циклов с зависимостью по данным. Распределение нескольких структурных блоков между нитями (директива SECTION). Редукционные операторы (клауза REDUCTION). Выполнение структурного блока одной нитью (директива SINGLE). Распределение операторов одного структурного блока между нитями (директива WORKSHARE). Копирование значений приватных переменных (клаузы FIRSTPRIVATE, LASTPRIVATE, COPYIN, COPYPRIVATE).
        Оглавление
          2 ноября 2016
          12:30
          Тест 3
          15 минут
          9 ноября 2016
          00:00
          Лекция 5
          1 час
          9 ноября 2016
          12:30
          Тест 4
          15 минут
          16 ноября 2016
          00:00
          Лекция 6
          1 час
          16 ноября 2016
          12:30
          Тест 5
          15 минут
          23 ноября 2016
          00:00
          Лекция 7
          1 час
          Наиболее часто встречаемые ошибки в OpenMP-программах. Функциональная отладка OpenMP-программ
          Создание вложенной параллельной области. Распределение витков тесно-вложенных циклов (с использованием вложенных параллельных областей и клаузы COLLAPSE). Задание количества нитей для вложенной параллельной области. Задание/опрос максимального уровня вложенности для параллельных областей. Задание максимального количества создаваемых нитей (переменная OMP_THREAD_LIMIT).
          Оглавление
            23 ноября 2016
            12:30
            Тест 6
            15 минут
            30 ноября 2016
            00:00
            Лекция 8
            1 час
            Отладка эффективности OpenMP-программ
            Стратегии распределения витков цикла между нитями (клауза SCHEDULE). Отмена барьерной синхронизации по окончании выполнения цикла (клауза NOWAIT). Локализация данных. Задание поведения нитей во время ожидания (переменная OMP_WAIT_POLICY). Оптимизация OpenMP-программы при помощи Intel Thread Profiler.
            Оглавление
              30 ноября 2016
              12:30
              Тест 7
              15 минут
              7 декабря 2016
              00:00
              Лекция 9
              1 час
              Использование OpenMP на кластере
              Технология Intel Cluster OpenMP. Программная реализация DSM. Директива SHARABLE. Гибридная модель параллельного программирования MPI/OpenMP.
              Оглавление
                7 декабря 2016
                12:30
                Тест 8
                15 минут
                14 декабря 2016
                00:00
                5 часов
                21 декабря 2016
                00:00
                Евгений Жиглов
                Евгений Жиглов
                Третья лекция
                Сергей Говорун
                Сергей Говорун
                Место жительства: Украина
                Думан Оразымбек
                Думан Оразымбек
                Место жительства: Казахстан, Акжар