Учебно-методические материалы к дисциплине
Образовательная программа: 09.03.01 Информатика и вычислительная техника
Расписание на 2022 г. (3 курс, весенний семестр)
- вторник, 12:40 - 14:15, лекция, ауд. 1133
- вторник, 14:30 - 16:05, практика, ауд. 2213
Ссылка на трансляцию лекции
- meet.google.com/tsk-aywp-aup (трансляция не проводится, лекции проходят очно)
Материалы к лекциям
- Введение. Базовые способы оптимизации
- Профилирование программ
- Пример использования PAPI: papi_example.cpp
- Анализ производительности. Roofline Performance Model
- Возможности компиляторов по оптимизации программ
- Векторизация вычислений
- Ручная векторизация вычислений. Пример
- Эффективная работа с памятью
- Оценочное тестирование, моделирование производительности
- Оптимизация ветвлений и циклов
Практические задания
- Задание 1: написание программы, базовая оптимизация, анализ производительности
- Задание 2: векторизация программ
- Задание 3: оптимизация по памяти
- Задание 4: распараллеливание в потоках
Теоретические материалы
- Материалы по архитектуре
- Intel® 64 and IA-32 Architectures Software Developer's Manuals
- AMD Developer Guides, Manuals & ISA Documents
- Intel Intrinsics Guide (mirror), x86 Intrinsics Cheat Sheet
- Agner Fog, The microarchitecture of Intel, AMD and VIA CPUs: An optimization guide for assembly programmers and compiler makers
- Agner Fog, Instruction tables: Lists of instruction latencies, throughputs and micro-operation breakdowns for Intel, AMD and VIA CPUs
- Agner Fog, Optimizing software in C++: An optimization guide for Windows, Linux and Mac platforms
- Фрагмент на русском: Эффективность различных конструкций языка C++
- Фрагмент на русском: Способы оптимизации, реализованные в компиляторах
- Roofline Performance Model
- APEX - Application Performance Characterization Benchmarking
- Эффективное программирование современных микропроцессоров: учеб. пособие / В.П. Маркова, С.Е. Киреев, М.Б. Остапкевич, В.А. Перепелкин. – Новосибирск: Изд-во НГТУ, 2014 – 148 с.
Дополнительные материалы
- Ulrich Drepper, What every programmer should know about memory
- Part 1: Introduction. Commodity Hardware Today
- Part 2: CPU caches
- Part 3: Virtual memory
- Part 4: NUMA systems
- Part 5: What programmers can do - cache optimization
- Part 6: What programmers can do - multi-threaded optimizations
- Part 7: Memory performance tools
- Part 8: Future technologies
- Part 9: Appendices and bibliography
- Статьи по оптимизации на IT Hare
- A Performance-Based Comparison of C/C++ Compilers (colfaxresearch.com)
Вопросы к зачёту (2017, 2018, 2020, 2021)
Отметки о выполнении заданий (2022 г.)
Отметки о выполнении заданий (2021 г.)
Отметки о выполнении заданий (2020 г.)