230 likes | 387 Views
Совершенствование IT -подготовки студентов специальности 010503 Математическое обеспечение и администрирование информационных систем Нестеренко Максим Юрьевич, к.т.н., доцент Оренбургского государственного университета Май 2006.
E N D
Совершенствование IT-подготовки студентов специальности 010503 Математическое обеспечение и администрирование информационных системНестеренко Максим Юрьевич, к.т.н., доцент Оренбургского государственного университетаМай 2006
Обновление содержания IT-образования на математическом факультете (декан – Т.П.Петухова) • пропедевтический этап - приобретение студентами базовых знаний, умений и навыков в области параллельного программирования за счет обновления содержания дисциплин, читаемых на младших курсах (1 – 5 семестры); • профессионально-ориентированный этап - использование обучающимися технологий параллельного программирования в прикладных задачах, т.е. обновление содержания дисциплин, изучаемых на старших курсах (6 – 8 семестры), и введение новых курсов по выбору студента (9 семестр)
Специальный курс по выбору студента «Параллельное программирование и криптография» Необходимость использования параллельных вычислений в криптографии обусловлена следующими факторами: • защита информации должна быть «невидима» для пользователя, т.е. осуществляться достаточно быстро; • стойкость ко взлому криптографических методов защиты информации во многом определяется их вычислительной сложностью (или длиной ключа); • значительное повышение производительности криптографических программных средств может быть достигнуто за счет распараллеливания криптографических алгоритмов, которые в большинстве случаев допускают эффективное распараллеливание в системах с общей памятью; • развитие персональных ЭВМ с многопроцессорными и многоядерными архитектурами делает возможным применение параллельно выполняемых криптографических программных средств.
Специальный курс по выбору студента «Параллельное программирование и криптография» Цель курса - углубление знаний о методах параллельного программирования и получение навыков параллельного программирования в системах с общей памятью при решении сложных прикладных задач на примере криптографических алгоритмов
Содержание курса 1. Введение (2 часа) • Криптографические примитивы и криптографические протоколы по защите информации. • Вопросы стандартизации методов защиты информации. • Стандарты Интернет • Особенности выполнения криптографический алгоритмов в системах с общей памятью. Задача безопасного распределения памяти между потоками. 2. Параллельное программирование в системах с общей памятью (SMP-системы) (5 ч.) • Библиотеки для параллельного программирования в системах с общей памятью. • Инструменты для разработки параллельных программ: отладчики, профилировщики. • Оптимизация параллельных программ. 3. Параллельная реализация криптографических алгоритмов с открытым ключом (5 ч.) • Основные принципы и схемы шифрования с открытым ключом. • Схема RSA и ее применение. Схема распараллеливания RSA. • Вероятностное шифрование • Схемы открытого шифрования Эль-Гамаля, МакЭлайса, Диффи-Хеллмана и пути их распараллеливания. • Алгоритмы шифрования на основе эллиптических кривых • Функции хеширования. Стандарты функций хеширования. Оценка возможности их распараллеливания. • Управление ключами. Генерация и хранение ключей. Протоколы распределения криптографических ключей.
Содержание курса 4. Параллельная реализация криптографических алгоритмов с открытым ключом (4 ч.) • Модель криптосистемы с секретным ключом • Блочные криптосистемы. Принципы построения. Принципы распараллеливания • Российский стандарт криптозащиты. ГОСТ 28147-89. Режимы работы • Американский стандарт криптозащиты DES. Режимы работы • Поточные шифры 5. Реализация криптографических алгоритмов с использованием высокопроизводительной библиотеки Intel MKL, оптимизированной под архитектуры Intel (1 ч.) • Схемы открытого шифрования RSA, Эль-Гамаля. • Генераторы псевдослучайной последовательности из библиотеки MKL в поточных криптоалгоритмах 6. Криптомодуль библиотеки Intel IPP(1 ч.) - Цели создания, краткое описание • Криптографические функции, реализованные в библиотеки IPP.
Методическое обеспечение обновленного образования • Лабораторный практикум «Технологии параллельного программирования в системах с общей памятью»(авторы: к.т.н. Нестеренко М.Ю., к.ф.м.н. Калинина А.П., к.т.н. Владова А.Ю.) • Инструменты в технологиях параллельного программирования в системах с общей памятью • Методика разработки многопоточных программ в системе с общей памятью с применением инструментов в примерах и задачах • Оценка масштабируемости многопоточных программ в системах с общей памятью • Лабораторный практикум представляет собой образовательный комплекс, содержащий учебное пособие «Технологии параллельного программирования в системах с общей памятью» и комплект презентаций к лекциям и семинарам
Содержание 1 раздела «Инструменты в технологиях параллельного программирования в системах с общей памятью»лабораторного практикума • Создание и отладка параллельных программ в системах с общей памятью Цель лабораторной работы - изучить основы реализации многопоточности в задачах с регулярной вычислительной структурой с помощью OpenMP, MPI, Native Threads и ознакомиться с основными типами ошибок параллельных программ и способами их избежания • Анализ производительности программы (на примере Intel VTune) Цель лабораторной работы – получить навыки анализа производительности приложений с помощью инструмента Intel VTune™ Performance Analyzer. • Этапы и практические приемы оптимизации программ на примере умножения матриц Цель лабораторной работы – освоить основные техники оптимизации и анализа производительности программ с помощью инструментов Intel VTune и Threading Tools
Примеры схем распараллеливания в лабораторной работе №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(); Схема распараллеливания №1 (неверная) Потоки одновременно используют переменные i, x, sum
Схема распараллеливания №2 (верная) num_steps =1000000; #pragma omp parallel forprivate (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();
Лабораторная работа №2Анализ производительности программ • Этапы лабораторной работы • Исследование поведения приложения в течение всего времени его работы с помощью VTune; • Определение функции, выполнение которой занимает самую большую часть времени, а также функции с наибольшим CPI. • Анализ кода программы с точки зрения времени выполнения. (Выявить Hotspots). • Выявление критических участков кода. • Оценка эффективности работы с памятью.
Этап 1 Исследование приложения в течение всего времени его работы с помощью VTune 1. В таблице видно чистое время работы всех процессов 2. Кнопка позволит увидеть работу программы в хронологическом порядке
Выявление критических участков кода с помощью Call Graph критический путь программы gzip: mainCRTStartup-> main-> treat_file-> zip-> deflate-> longest_match, а самой затратной функцией является функция longest_match (т.к. на ней заканчивается критический путь)
Лабораторная работа №3Этапы и практические приемы оптимизации программ на примере умножения матриц • Цель - Освоить основные техники оптимизации и анализа производительности программ с помощью инструментов Intel VTuneи Threading Tools.
Этапы оптимизации для двухпроцессорного Xeon 3 Ггц, 2Гб
Анализ эффективности работы с памятью Анализ промахов КЭШа с помощью Intel VTune
Оценка масштабируемости многопоточных программ в системах с общей памятью • Лабораторная работа №1 Влияние пропускной способности шины данных на масштабируемость программ • Разработка многопоточного приложения, осуществляющего поворот снимков экрана в памяти (Visual C++, MFS, Win32) • Оптимизация приложения • Инструментированная оценка работы параллельной программы (Thread Profiler) • Теоретическая оценка ускорения и масштабируемости • Практическая оценка ускорения и масштабируемости • Инструментированный анализ загрузки шины (VTune Analyzer)
Оценка масштабируемости многопоточных программ в системах с общей памятью • Лабораторная работа №2 Влияние размера пула потоков на масштабируемость программ • Разработка многопоточного приложения, осуществляющего поворот снимков экрана в памяти (Visual C++, MFS, Win32) • Оптимизация приложения • Инструментированная оценка работы параллельной программы (Thread Profiler) • Теоретическая оценка ускорения и масштабируемости • Практическая оценка ускорения и масштабируемости • Инструментированный анализ загрузки шины (VTune Analyzer)