Эффективное программирование современных

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Государственное образовательное учреждение высшего профессионального
образования
«Новосибирский государственный университет» (НГУ)
Факультет информационных технологий
УТВЕРЖДАЮ
_______________________
« ___» _____________ 20___г.
РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ
Эффективное программирование современных микропроцессоров и
мультипроцессоров
(наименование дисциплины)
НАПРАВЛЕНИЕ ПОДГОТОВКИ 230100 «ИНФОРМАТИКА И
ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА»
Квалификация (степень) выпускника
Бакалавр
Форма обучения очная
Новосибирск
2011
Программа
дисциплины
«Эффективное
программирование
современных микропроцессоров и мультипроцессоров» составлена в
соответствии с требованиями ФГОС ВПО к структуре и результатам
освоения основных образовательных программ бакалавриата по
«профессиональному» циклу (вариативная часть, дисциплины по выбору)
по направлению подготовки «Информатика и вычислительная техника», а
также задачами, стоящими перед Новосибирским государственным
университетом по реализации Программы развития НГУ.
Автор (авторы) к.т.н. Маркова Валентина Петровна,
Киреев Сергей Евгеньевич, Перепелкин Владислав Александрович
(ФИО, ученая степень, ученое звание)
Факультет информационных технологий
Кафедра Параллельных вычислений
2
1. Цели освоения дисциплины (курса)
Дисциплина (курс) «Эффективное программирование современных
микропроцессоров и мультипроцессоров» имеет своей целью:
 получение студентами знаний по реализации различных численных
моделей и алгоритмов для современных процессоров общего
назначения и построенных на их основе мультипроцессоров;
 изучение способов и средств оптимизации программ на современных
микропроцессорах и мультипроцессорах;
 приобретение студентами навыков эффективного программирования и
оптимизации программ для современных микропроцессоров и
мультипроцессоров.
Указанные цели в полной мере отвечают основным целям данной
магистерской программы:
 Подготовка специалистов для научно-исследовательской деятельности
в создании технологий обработки, хранения, передачи и защиты
информации,
в
организации
распределённых
и
высокопроизводительных вычислений, в вычислительной математике
и моделировании, а так же для применения современных
информационных технологий для науки, экономики на основе
фундаментального образования, позволяющего выпускникам быстро
адаптироваться к меняющимся потребностям общества.
 Развитие у студентов личностных качеств и формирование
общекультурных и профессиональных компетенций в соответствии с
ФГОС ВПО по данному направлению подготовки.
2. Место дисциплины в структуре образовательной программы
Дисциплина является вариативной частью профессионального цикла
ООП по направлению подготовки 230100 «Информатика и вычислительная
техника». С другими частями образовательной программы соотносится
следующим образом.








Дисциплины, предшествующие по учебному плану:
«Математическая логика»
«Математический анализ»
«Вычислительная математика»
«Информатика»
«Программирование на языке высокого уровня»
«ЭВМ и периферийные устройства»
«Операционные системы»
«Основы параллельного программирования»
Для успешного освоения данной дисциплины учащийся должен:
3
 Знать: принципы организации ЭВМ, основы архитектуры современных
микропроцессоров;
 Уметь:
пользоваться
операционной
системой
UNIX/Linux,
разрабатывать последовательные и многопоточные программы;
 Владеть: мышлением, связанным с пониманием работы ЭВМ и её
основных компонентов, языками программирования C/C++, базовыми
средствами компиляции и отладки программ.
Дисциплины, последующие по учебному плану:
 «Введение в организацию вычислений на кластерах»
 «Введение в технологию параллельного решения больших задач»
 «Введение в организацию распределенных вычислений»
 Учебная производственная практика.
3. Компетенции обучающегося, формируемые в результате освоения
дисциплины
«Эффективное
программирование
современных
микропроцессоров и мультипроцессоров».
В результате освоения дисциплины обучающийся должен:
 Знать: модели современных микропроцессоров и мультипроцессоров
общего назначения, их потенциальные узкие места, способы
эффективной
организации
вычислений
на
современных
микропроцессорах и мультипроцессорах, особенности отображения
конструкций языка высокого уровня на архитектуру микропроцессора;
 Уметь: создавать эффективные программы под конкретную
архитектуру микропроцессора и мультипроцессора, выполнять
оптимизацию программ под произвольную и под заданную
архитектуру;
 Владеть: практическими навыками оптимизации программ с учетом
архитектуры микропроцессора, инструментальными средствами
анализа производительности и профилирования.
Дисциплина нацелена
компетенций:
на
формирование
у
учащегося
следующих
 Общекультурные компетенции:
− владеет культурой мышления, способен к обобщению, анализу,
восприятию информации, постановке цели и выбору путей ее
достижения (ОК-1);
− умеет логически верно, аргументировано и ясно строить устную и
письменную речь (ОК-2);
4
− стремится к саморазвитию, повышению своей квалификации и
мастерства (ОК-6);
− осознает социальную значимость своей будущей профессии, обладает
высокой мотивацией к выполнению профессиональной деятельности
(ОК-8);
− использует основные законы естественнонаучных дисциплин в
профессиональной деятельности, применяет методы математического
анализа и моделирования, теоретического и экспериментального
исследования (ОК-10);
− осознает сущность и значение информации в развитии современного
общества; владеет основными методами, способами и средствами
получения, хранения, переработки информации (ОК-11);
− имеет навыки работы с компьютером как средством управления
информацией (ОК-12);
− способен работать с информацией в глобальных компьютерных сетях
(ОК-13).
 Профессиональные компетенции:
− понимает основные принципы организации и функционирования ЭВМ
(ПК-35);
− владеет основными методами классификации вычислительных систем
(ПК-36);
− владеет методами эффективного программирования современных
ЭВМ (ПК-37);
− понимает роль компилятора
исполнительного кода (ПК-38);
в
формировании
эффективного
− способен сопоставлять текстовое представление исполнительного кода
(ассемблер) и исходного кода программы (ЯВУ) (ПК-39);
− владеет методами эффективного программирования для компьютеров
с общей и распределенной памятями (ПК-43);
− имеет представление об архитектурных особенностях современных
специализированных вычислительных устройств (ПК-44);
− имеет представление о возможностях эффективной реализации
данного класса задач на параллельной вычислительной системе с
данной архитектурой (ПК-46);
 Инструментальные компетенции:
− имеет
навыки
использования
инструментальных
программирования для ОС семейства Unix (ИК-1);
средств
− имеет навыки решения типовых задач программирования и владеет
основными моделями и методами их решения (ИК-5).
5
4.
Структура
и
программирование
мультипроцессоров».
содержание
дисциплины
«Эффективное
современных
микропроцессоров
и
Общая трудоемкость дисциплины составляет 4 зачетные единицы, 144 часа.
2
3
4
5
6
Введение. Общие
принципы
оптимизации
программ.
Оптимизация
работы с данными.
Оптимизация
вычислений и
управления потоком
команд.
Векторизация
вычислений.
Оптимизация
многопоточных
программ.
Инструментальные
средства
оптимизации
программ.
Итого по курсу:
4
2
4
10
6
2-4
8
8
12
28
6
5-7
8
8
12
28
6
8-9
6
8
12
26
6
1011
6
6
12
24
6
1215
8
8
12
28
40
40
64
144
Всего
1
Практические
занятия
Самостоятельная
работа
6
Лекции
Неделя семестра
1
Семестр
№
п/п
Раздел
дисциплины
Виды учебной работы,
включая
самостоятельную
работу студентов и
трудоемкость (в часах)
Формы
текущего
контроля
успеваемости
(по неделям
семестра)
Форма
промежуточной
аттестации
(по семестрам)
КР* (4)
КР* (9)
Зачет (6)
КР* – Контрольная работа. Выполняется студентами после изучения темы.
Темы лекционных занятий разделов дисциплины
Раздел 1. Введение. Общие принципы оптимизации программ.
6
1.1 Основы оптимизации программ: роли человека, программных и
аппаратных средств. Правило 90/10, профилирование, измерение времени.
Общая и архитектурно-зависимая оптимизация.
1.2 Модель современного микропроцессора. Конвейер исполнения
команд. Подсистема памяти.
Раздел 2. Оптимизация работы с данными.
2.1 Принцип
локальности.
Иерархия
памяти
в
современных
микропроцессорах. Оптимизация размещения данных. Выравнивание
данных.
2.2 Оптимизация обращений к данным. Порядок обхода данных. Эффект
буксования кэш-памяти.
2.3 Предвыборка
данных.
Способы
повышения
эффективности
использования кэш-памяти. Выбор размера блока данных.
Раздел 3. Оптимизация вычислений и управления потоком команд.
3.1 Принципы исполнения команд в современных микропроцессорах.
Конвейерное исполнение команд. Параллелизм на уровне команд. Причины
остановки конвейера.
3.2 Простые способы оптимизации. Использование быстрых операций.
Вынос общих подвыражений. Устранение зависимостей по данным.
Понижение точности вычислений с плавающей точкой. Преобразование
типов данных.
3.3 Оптимизация
ветвлений.
Оптимизация
циклов.
Устранение
зависимостей по данным между итерациями. Уменьшение числа обращений
к памяти. Раскрутка цикла. Программная конвейеризация цикла.
Раздел 4. Векторизация вычислений.
4.1 Реализация векторных операций в современных микропроцессорах
(x86, PowerPC, Itanium2, Cell).
4.2 Векторные типы данных. Векторные операции. Относительное
выравнивание векторов. Автоматическая векторизация с помощью
компилятора.
Раздел 5. Оптимизация многопоточных программ.
5.1 Исполнение многопоточных программ. Выбор числа потоков.
5.2 Проблемы доступа к общим ресурсам в мультипроцессорах. Ложное
разделение кэш-строк. Одновременный доступ к памяти нескольких
потоков.
Раздел 6. Инструментальные средства оптимизации программ.
6.1 Обзор
инструментальных
средств
оптимизации
программ.
Использование ключей и директив компилятора.
6.2 Средства профилирования (gprof, OProfile, VTune, CodeAnalyst).
Оптимизация на основе сбора статистики.
7
6.3
Использование оптимизированных библиотек.
Практические занятия
На практических занятиях студенты выполняют лабораторные работы,
отрабатывая навыки создания и оптимизации программ для различных
архитектур микропроцессоров и мультипроцессоров. Примерные темы
лабораторных работ:
1. Создание функции быстрого копирования блока данных.
2. Реализация блочных алгоритмов матричных операций.
3. Определение оптимальной величины раскрутки цикла.
4. Определение оптимального порядка вложенности циклов в программе.
5. Определение оптимальной группировки циклов в программе.
6. Векторизация вычислений.
7. Оптимизация многопоточной программы.
8. Использование ключей и директив компилятора для оптимизации
программ.
9. Использование средств профилирования при оптимизации программ.
10. Выполнение комплексной оптимизации вычислений для заданного
алгоритма.
5. Образовательные технологии
В ходе преподавания дисциплины используются следующие виды
организации учебного процесса: лекции, практические занятия и
самостоятельная работа студента. При разработке образовательной
технологии организации учебного процесса основной упор сделан на
соединение активной и интерактивной форм обучения, с переносом «центра
тяжести» в интерактивную форму обучения. Интерактивная форма
позволяет студентам проявить самостоятельность в освоении теоретического
материала и овладении практическими навыками, формирует интерес и
позитивную мотивацию к учебе.
На лекциях изложению нового материала предшествуют обсуждение
предыдущей темы лекции с целью восстановления и закрепления
студентами изученного теоретического материала и ответы на вопросы
студентов. Затем
излагается материал лекции с использованием
мультимедийной презентации. В конце лекции выделяется время для ответов
на вопросы по текущему материалу и его обсуждению. В течении семестра
провидятся три коллоквиума для проверки теоретических знаний. Такой
подход позволяет выявить и устранить пробелы в понимании материала
лекций. Материалам лекций, практических занятий и самостоятельных работ
выложены в банке образовательных материалов на сайте кафедры ПВ. Это
позволяет реализовать технологию опережающей самостоятельной работы и
уделить больше времени интерактивной работе в ходе аудиторных занятий.
8
Каждая тема теоретического материала курса прорабатывается на
практических занятиях, где у студента формируется связь теоретических
знаний с практикой, а затем полученные знания и навыки закрепляются при
выполнением практических заданий и самостоятельных работ.
Практические занятия проводятся в терминальном классе по
следующей схеме. В начале каждого аудиторного занятия рассматривается
очередная лабораторная работа, объясняется её суть с привлечением
необходимого теоретического материала. Затем каждый студенты выполняет
задание, по ходу обсуждая с преподавателем возникающие вопросы.
В конце аудиторного занятия проводится разбор решений лабораторных
работ в интерактивной форме, и объясняется очередное задание для
самостоятельного выполнения студентами. Кроме этого, проводится
обсуждение вопросов, возникших у студентов в процессе выполнения
предыдущих самостоятельных работ.
Кроме этого, в ходе практического занятия преподаватель
индивидуально беседует со студентами и принимает выполненные
самостоятельные работы, а студент защищает свою работу, устно отвечая на
дополнительные вопросы преподавателя.
Самостоятельная работа студента состоит в повторении и усвоении
лекционного материала дома по конспектам лекций, в выполнении
самостоятельных заданий в терминальном классе (по согласованию с
преподавателем) или дома (при наличии необходимого программного и
аппаратного обеспечения) в свободное от аудиторных занятий время. Кроме
того, самостоятельная работа включает подготовку к коллоквиумам и
экзамену. По результатам выполнения самостоятельной работы оформляется
отчет в виде пояснительной записки по каждому заданию и защищается
студентом лично.
По собственному желанию и по согласованию с преподавателем
студент может выполнять нестандартное более сложное задание, например,
включающее вопросы исследовательского характера, связанное с
углубленным изучением материала курса. Такое индивидуальное задание
обсуждается с преподавателем и, при успешном выполнении, учитывается
при промежуточном контроле успеваемости студента. Аналогично заданиям
для
самостоятельного выполнения
усложнённое
задание
также
сопровождается отчётом в форме пояснительной запиской.
При выполнении лабораторных и самостоятельных работ студенты
получают доступ к современным высокопроизводительным системам
Сибирского
суперкомпьютерного
центра
(ИВМиМГ
СО
РАН),
оборудованию отдела МОВВС ИВМиМГ СО РАН, оборудованию НГУ.
Кроме того, студенты привлекаются к участию в зимней и летней школах
(http://ssd.sscc.ru/school/index.html), проводимых кафедрой ПВ НГУ на базе
отдела МОВВС СО РАН. В ходе школы студенты выполняют проекты,
связанные с тематикой курса, в группах по 2-3 человека. Проекты
9
предусматривают решение одной из подзадач реальных научных проектов
отдела МОВВС. Таким образом, студенты имеют возможность получить
опыт работы в научном учреждении над реальными проектами в кооперации
с другими студентами и сотрудниками научного института.
6. Оценочные средства для текущего контроля успеваемости,
промежуточной аттестации по итогам освоения дисциплины и учебнометодическое обеспечение самостоятельной работы студентов
Для
аттестации
студентов
по
дисциплине
«Эффективное
программирование современных микропроцессоров и мультипроцессоров»
используется модульно-рейтинговая система. Итоговая успеваемость
студента за семестр оценивается суммой баллов по следующим показателям:
практические занятия, самостоятельные работы и зачет. Максимальная
сумма баллов за семестр составляет 100 баллов (текущий рейтинг – 80
баллов, итоговая аттестация – 20 баллов). Максимальные количества баллов
по каждому показателю приведены ниже в таблице.
Текущий контроль. В течение семестра проверяются
навыки и
теоретические знания путем защиты практических занятий и
самостоятельных работ.
На защите практического занятия и
самостоятельной работы
студенту предлагаются 3-6 вопросов,
проясняющих уровень понимания студентом соответствующей темы.
Максимальное количество баллов за текущую аттестацию составляет 80 (см.
табл.). Количество максимальных баллов, которые может получить студент
за выполнение конкретного задания определяется преподавателем в
зависимости от сложности задания.
Промежуточный контроль. Для оценки теоретических знаний
студентов в конце семестра проводится зачет. Максимальная сумма баллов
за зачет составляет 20 баллов. Правила промежуточной аттестации
студентов.
1. К зачету у не допускаются студенты, работа которых на основании
текущего контроля оценивается преподавателем менее, чем в 60
баллов и менее.
2. Студенты, которые получили 80 баллов
по результатам текущего
рейтинга, получают зачет без официальной сдачи зачета.
3. Зачет сдается устно, он включает два теоретических вопроса и один
практический. Вопросы к зачету выложены на сайте кафедры.
Вид учебной деятельности
Практические занятия и
самостоятельные работы
табл.2.
Максимальное
число баллов
80
10
Зачет
Итого за семестр:
20
100
Итоговая оценка выставляется в зависимости от числа баллов:
80-100 – «зачет».
60 и менее 60 – «не зачет».
Примерные вопросы для контрольных работ и самостоятельной работы
1.
2.
3.
4.
5.
Сравните эффективность двух заданных участков программы.
Предложите способ оптимизации заданного участка кода.
Сравните различные способы обхода данных в памяти по времени.
Предложите алгоритм векторизации заданного участка кода.
Назовите способы оптимизации программ, используемые
компиляторами.
6. Какую полезную для оптимизации информацию может предоставить
профилировщик.
7. Объясните причины повышения производительности при раскрутке
цикла.
8. Объясните причины повышения производительности при
векторизации цикла.
9. Объясните причины повышения производительности при
программной конвейеризации цикла.
10. Как архитектурные особенности данного
микропроцессора/мультипроцессора должны быть учтены при
написании программ для него?
11. Назовите особенности архитектуры данного микропроцессора. Как их
нужно учитывать при написании программ?
12. Как компилятор учитывает архитектурные особенности данного
микропроцессора при автоматической оптимизации программы?
Примерный список вопросов к зачету
1. Причины потери производительности, связанные с доступом в память.
Способы их преодоления.
2. Основные способы оптимизации доступа в память. Какие
преобразования программ для этого используются.
3. Причины потери производительности на исполнительном конвейере.
Способы их преодоления.
4. Способы оптимизации, подходящие для всех архитектур общего
назначения.
5. Способы оптимизации ветвлений.
11
6. Способы оптимизации циклов.
7. Векторизация вычислений.
8. Причины потери производительности в многопоточных программах.
Оптимизация многопоточных программ.
9. Способы оптимизации программ, используемые в компиляторах.
Границы возможностей компиляторов по оптимизации программ.
10. Оптимизация программ с помощью профилирования. Средства
профилирования.
7. Учебно-методическое и информационное обеспечение дисциплины
а) основная литература:
1. Ахо А. Лам М. Сети Р. Ульман Д. Компиляторы: Принципы,
технологии и инструментарий. – М. Вильямс, 2008. – 1184 с.
2. Бентли Д. Жемчужины творчества программистов: Пер. с англ. – М.
Радио и связь, 1990. – 224 с.
3. В.В.Воеводин, Вл.В.Воеводин. Параллельные вычисления. – СПб.:
БХВ-Петербург, 2002. – 608 с.
4. Гук М., Юров В. Процессоры Pentium 4, Athlon и Duron. – СПб.:
Питер, 2002. – 512 c.
5. Касперски К. Техника оптимизации программ. Эффективное
использование памяти. – СПб.: БХВ-Петербург, 2003. – 464 с.
6. Таненбаум Э. Архитектура компьютеров. СПб.: Питер, 2007. – 848 с.
7. Цилькер Б. Я., Орлов С.А. Организация ЭВМ и систем. СПб.: Питер,
2006. – 668 с.
8. Ulrich Drepper, What Every Programmer Should Know About Memory,
2007. (http://people.redhat.com/drepper/cpumemory.pdf).
б) дополнительная литература:
1. А. Ахо, Дж. Хопкрофт, Дж. Ульман Структуры данных и алгоритмы. –
М. Вильямс, 2003. – 382 с.
2. Антошина И.В., Котов Ю.Т. Микропроцессоры и микропроцессорные
системы (аналитический обзор): Учебное пособие. - М.: МГУЛ, 2005. –
432 с.
3. Грушин В.В. Выполнение математических операций в ЭВМ.
Погрешности компьютерной арифметики: Учебное пособие /
СПбГЭТУ "ЛЭТИ". СПб., 1999. – 56 с.
4. Гуров В.В. Архитектура микропроцессоров: Учебное пособие. – М..:
Интернет-Университет Информационных Технологий: БИНОМ.
Лаборатория знаний, 2010. – 272 с.
5. Зубков С.В. Assembler для DOS, Windows и UNIX. – М. ДМК, 2006. –
608 с.
12
6. Касьянов В.Н. Оптимизирующие преобразования программ. – М.:
Наука, 1988. – 336 с.
7. Калачев А.В. Многоядерные процессоры: Учебное пособие. – М..:
Интернет-Университет Информационных Технологий: БИНОМ.
Лаборатория знаний, 2011. – 247 с.
8. Корнеев В.В., Киселев А.В. Современные микропроцессоры, 3-е изд.,
перераб. и доп. – СПб.: БХВ-Петербург, 2003. – 440 с.
9. Кнут Д. Искусство программирования. Т 1. Основные алгоритмы. –
М.: Вильямс, 2006. – 720 с.
10. Кнут Д. Искусство программирования. Т 2. Получисленные
алгоритмы. – М.: Вильямс, 2007. – 832 с.
11. Кнут Д. Искусство программирования. Т 3. Сортировка и поиск. – М.:
Вильямс, 2007. – 824 с.
12. Папков В.И. Система памяти ЭВМ (Функциональный подход). Учеб.
пособие. СПб.: Изд.центр СПбГМТУ, 2002. – 238 с.
13. Столлингс В. Структурная организация и архитектура компьютерных
систем. 5-е издание. – М.: Вильямс, 2002. – 896 с.
14. Хамахер К., Вранешич З., Заки С., Организация ЭВМ. СПб, Из-во
«Питер», 2003 г.
15. AMD64 Architecture Programmer’s Manual, 2010.
16. Developing Multithreaded Applications: A Platform Consistent Approach //
Intel Corporation, 2005.
17. Dov Bulka, David Mayhew. Efficient C++: Performance Programming
Techniques. – Addison Wesley, 1999. – 336 p.
18. IBM PowerPC 970FX RISC Microprocessor User’s Manual, 2005.
19. Intel®64 and IA-32 Architectures Optimization Reference Manual, 2011.
20. Intel®64 and IA-32 Architectures Software Developer’s Manual, 2011.
21. Intel Itanium Architecture Software Developer’s Manual, 2006.
22. Software Optimization Guide for AMD64 Microprocessors, 2005.
23. Software Optimization Guide for AMD Family 10h and 12h Processors,
2011.
24. Software Optimization Guide for AMD Family 15h Processors, 2011.
в) программное обеспечение и Интернет-ресурсы:
 Доступ в интернет по протоколам HTTP и SSH для доступа к ресурсам
кафедры,
 OpenOffice/MS Office (Word, Excel, PowerPoint),
 SSH-клиент (PuTTY).
8. Материально-техническое обеспечение дисциплины
Лекции читаются в специальной лекционной аудитории, обеспеченной
средствами отображения презентаций и других лекционных материалов на
экран.
13
Практические занятия проводятся в терминальных классах с
отдельными рабочими местами для каждого студента. Задания выполняются
на вычислительных системах, имеющихся в распоряжении кафедры ПВ ФИТ
и ИВМиМГ СО РАН.
Самостоятельные работы выполняются либо дома (при наличии у
студента соответствующего аппаратного и программного обеспечения), либо
в терминальных классах в согласованное с преподавателем время.
Рецензент (ы) _________________________
Программа одобрена на заседании Методической комиссии ФИТ
от ___________ года, протокол № _______.
14
Download