Архитектурно-ориентированная оптимизация кода
Курс повышения квалификации по заказу предприятия, 5 дней (утро – лекции, после обеда – практика)
Keywords: Intel64, ILP/TLP, DRAM/SRAM, k-way set-associative cache, cache line, cache hit, cache misprediction, false sharing, struct splitting, AoS-SoA, MESIF, branch prediction, branchless code, data hazard, loop unrolling, out-of-order execution, code vectorization (avx2, avx-512), TLB, huge pages, THP, NUMA, Linux memory affinity, first touch policy, NUMA balancing, NUMAStat, Intel TMAM, perf, toplev, MPI, MPI RMA, MPI Hybrid MPI + OpenMP, MPI collective operations.
Материалы лекций и практик
- Структурная организация процессоров с архитектурой Intel 64. Понятие архитектуры и микроархитектуры процессора. Уровни параллелизма ILP/TLP
- Организация оперативной памяти (DRAM/SRAM, многоканальность). Cбор информации о конфигурации целевой системы GNU/Linux
- Кеш память процессора. Методы отображения адресов. Множественноассоциативное отображение. Протоколы поддержания согласованности кеш-памяти (Intel 64). Атомарные операции x86-64. Оптимизация локальности обращения к памяти. Оптимизация кеширования структур данных. Анализ эффективности использования кешпамяти с помощью perf
- Оптимизация кода для суперскалярного ядра Intel 64. Оптимизация предсказания ветвлений (branch prediction). Устранение ветвлений (branchless code). Оптимизация загрузки суперскалярного ядра: конфликты данных (data hazards), loop unrolling, внеочередное выполнение инструкций. Векторизация кода (AVX2/AVX512)
- Оптимизация трансляции адресов (TLB). Большие страницы памяти (huge pages, transparent huge pages). Выделение больших страниц памяти и использование в программах
- Архитектура NUMA-систем. Адресное пространство процесса и политики выделения памяти GNU/Linux (memory affinity). Политики выделения физических страниц памяти с NUMA-узлов (first touch policy). Мониторинг загрузки и автоматическая балансировка NUMAузлов (NUMATop, vmstat)
- Методика анализа производительности Intel Top-Down Microarchitecture Analysis Method
- Масштабируемость интерфейса MPI и его реализаций
- Гибридные параллельные программы MPI+OpenMP. Оптимизация обменов с использованием разделяемой памяти вычислительных узлов (MPI + MPI 3.0 RMA Shared Memory)
- Коллективные операции MPI (подходы к оптимизации)
Курс может быть адаптирован под интересы целевого предприятия/компании, по вопросам сотрудничества mkurnosov[at]gmail.com