Обновление содержания it- образования на...
DESCRIPTION
Совершенствование IT -подготовки студентов специальности 010503 Математическое обеспечение и администрирование информационных систем Нестеренко Максим Юрьевич, к.т.н., доцент Оренбургского государственного университета Май 2006. - PowerPoint PPT PresentationTRANSCRIPT
Совершенствование IT-подготовки студентов специальности 010503 Математическое обеспечение и
администрирование информационных систем
Нестеренко Максим Юрьевич, к.т.н., доцент Оренбургского государственного университета
Май 2006
2
Обновление содержания IT-образования на математическом факультете (декан –
Т.П.Петухова) • пропедевтический этап - приобретение
студентами базовых знаний, умений и навыков в области параллельного программирования за счет обновления содержания дисциплин, читаемых на младших курсах (1 – 5 семестры);
• профессионально-ориентированный этап - использование обучающимися технологий параллельного программирования в прикладных задачах, т.е. обновление содержания дисциплин, изучаемых на старших курсах (6 – 8 семестры), и введение новых курсов по выбору студента (9 семестр)
3
Обновляемые дисциплины
4
Обновляемые дисциплины
5
Обновляемые дисциплины
6
Специальный курс по выбору студента «Параллельное программирование и
криптография»
Необходимость использования параллельных вычислений в криптографии обусловлена следующими факторами:
• защита информации должна быть «невидима» для пользователя, т.е. осуществляться достаточно быстро;
• стойкость ко взлому криптографических методов защиты информации во многом определяется их вычислительной сложностью (или длиной ключа);
• значительное повышение производительности криптографических программных средств может быть достигнуто за счет распараллеливания криптографических алгоритмов, которые в большинстве случаев допускают эффективное распараллеливание в системах с общей памятью;
• развитие персональных ЭВМ с многопроцессорными и многоядерными архитектурами делает возможным применение параллельно выполняемых криптографических программных средств.
7
Специальный курс по выбору студента «Параллельное программирование и
криптография»
Цель курса - углубление знаний о методах параллельного программирования и получение навыков параллельного программирования в системах с общей памятью при решении сложных прикладных задач на примере криптографических алгоритмов
8
Содержание курса1. Введение (2 часа)
− Криптографические примитивы и криптографические протоколы по защите информации.− Вопросы стандартизации методов защиты информации. − Стандарты Интернет− Особенности выполнения криптографический алгоритмов в системах с общей памятью.
Задача безопасного распределения памяти между потоками.
2. Параллельное программирование в системах с общей памятью (SMP-системы) (5 ч.)− Библиотеки для параллельного программирования в системах с общей памятью.− Инструменты для разработки параллельных программ: отладчики, профилировщики.− Оптимизация параллельных программ.
3. Параллельная реализация криптографических алгоритмов с открытым ключом (5 ч.)− Основные принципы и схемы шифрования с открытым ключом.− Схема RSA и ее применение. Схема распараллеливания RSA.− Вероятностное шифрование− Схемы открытого шифрования Эль-Гамаля, МакЭлайса, Диффи-Хеллмана и пути их
распараллеливания.− Алгоритмы шифрования на основе эллиптических кривых− Функции хеширования. Стандарты функций хеширования. Оценка возможности их
распараллеливания.− Управление ключами. Генерация и хранение ключей. Протоколы распределения
криптографических ключей.
9
Содержание курса
4. Параллельная реализация криптографических алгоритмов с открытым ключом (4 ч.)− Модель криптосистемы с секретным ключом− Блочные криптосистемы. Принципы построения. Принципы
распараллеливания− Российский стандарт криптозащиты. ГОСТ 28147-89. Режимы работы− Американский стандарт криптозащиты DES. Режимы работы− Поточные шифры
5. Реализация криптографических алгоритмов с использованием высокопроизводительной библиотеки Intel MKL, оптимизированной под архитектуры Intel (1 ч.)− Схемы открытого шифрования RSA, Эль-Гамаля.− Генераторы псевдослучайной последовательности из библиотеки
MKL в поточных криптоалгоритмах
6. Криптомодуль библиотеки Intel IPP(1 ч.)- Цели создания, краткое описание− Криптографические функции, реализованные в библиотеки IPP.
10
Лабораторные работы
11
Методическое обеспечение обновленного образования
• Лабораторный практикум «Технологии параллельного программирования в системах с общей памятью» (авторы: к.т.н. Нестеренко М.Ю., к.ф.м.н. Калинина А.П., к.т.н. Владова А.Ю.)
− Инструменты в технологиях параллельного программирования в системах с общей памятью
− Методика разработки многопоточных программ в системе с общей памятью с применением инструментов в примерах и задачах
− Оценка масштабируемости многопоточных программ в системах с общей памятью
• Лабораторный практикум представляет собой образовательный комплекс, содержащий учебное пособие «Технологии параллельного программирования в системах с общей памятью» и комплект презентаций к лекциям и семинарам
12
Содержание 1 раздела «Инструменты в технологиях параллельного программирования в системах с общей памятью»
лабораторного практикума
1. Создание и отладка параллельных программ в системах с общей памятью
Цель лабораторной работы - изучить основы реализации многопоточности в задачах с регулярной вычислительной структурой с помощью OpenMP, MPI, Native Threads и ознакомиться с основными типами ошибок параллельных программ и способами их избежания
2. Анализ производительности программы (на примере Intel VTune)
Цель лабораторной работы – получить навыки анализа производительности приложений с помощью инструмента Intel VTune™ Performance Analyzer.
3. Этапы и практические приемы оптимизации программ на примере умножения матриц
Цель лабораторной работы – освоить основные техники оптимизации и анализа производительности программ с помощью инструментов Intel VTune и Threading Tools
13
Примеры схем распараллеливания в лабораторной работе №1
Схема распараллеливания №1 (неверная)int num_steps = 1000000;
#pragma omp parallel for
for (i = 0; i < num_steps; i++)
{
x = (i + .5)*step;
sum = sum + 4.0 / (1.+ x*x);
}
pi = sum*step;
stop = clock();
Потоки одновременно используют переменные i, x, sum
14
Схема распараллеливания №2 (верная)
num_steps = 1000000;#pragma omp parallel for private (i,x) reduction (+: sum)
for (i = 0; i < num_steps; i++){
x = (i + .5)*step;sum = sum + 4.0 / (1.+ x*x);
}pi = sum*step;
stop = clock();
15
Лабораторная работа №2 Анализ производительности программ
• Этапы лабораторной работы
1.Исследование поведения приложения в течение всего времени его работы с помощью VTune;2.Определение функции, выполнение которой занимает самую большую часть времени, а также функции с наибольшим CPI.3.Анализ кода программы с точки зрения времени выполнения. (Выявить Hotspots).4.Выявление критических участков кода.5.Оценка эффективности работы с памятью.
16
Этап 1 Исследование приложения в течение всего времени его работы с помощью VTune
1. В таблице видно чистое время работы всех процессов
2. Кнопка позволит увидеть работу программы в хронологическом порядке
17
Выявление критических участков кода с помощью Call Graph
критический путь программы gzip: mainCRTStartup-> main-> treat_file-> zip-> deflate-> longest_match, а самой затратной функцией является функция longest_match (т.к. на ней заканчивается критический путь)
18
Лабораторная работа №3Этапы и практические приемы оптимизации
программ на примере умножения матриц
• Цель - Освоить основные техники оптимизации и анализа производительности программ с помощью инструментов Intel VTune и Threading Tools.
19
Этапы оптимизации для двухпроцессорного Xeon 3 Ггц, 2Гб
ОписаниеВремя выполнения
при размере матриц N=768,ms
Matrix 1последовательная
программа без оптимизации
9 735,00
Matrix 2
- правильный порядок циклов -развертывание
циклов (4)
2 266,00
Matrix 3паралельная
программа515,00
20
Анализ эффективности работы с памятью
Анализ промахов КЭШа с помощью Intel VTune
21
Оценка масштабируемости многопоточных программ в системах с общей памятью
• Лабораторная работа №1 Влияние пропускной способности шины данных на масштабируемость программ− Разработка многопоточного приложения,
осуществляющего поворот снимков экрана в памяти (Visual C++, MFS, Win32)
− Оптимизация приложения− Инструментированная оценка работы параллельной
программы (Thread Profiler)− Теоретическая оценка ускорения и масштабируемости− Практическая оценка ускорения и масштабируемости − Инструментированный анализ загрузки шины (VTune
Analyzer)
22
Оценка масштабируемости многопоточных программ в системах с общей памятью
• Лабораторная работа №2 Влияние размера пула потоков на масштабируемость программ− Разработка многопоточного приложения,
осуществляющего поворот снимков экрана в памяти (Visual C++, MFS, Win32)
− Оптимизация приложения− Инструментированная оценка работы параллельной
программы (Thread Profiler)− Теоретическая оценка ускорения и масштабируемости− Практическая оценка ускорения и масштабируемости − Инструментированный анализ загрузки шины (VTune
Analyzer)
23
• Вопросы?