Архитектурно-ориентированная оптимизация кода

Курс повышения квалификации по заказу предприятия, 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.

Материалы лекций и практик

  1. Структурная организация процессоров с архитектурой Intel 64. Понятие архитектуры и микроархитектуры процессора. Уровни параллелизма ILP/TLP
  2. Организация оперативной памяти (DRAM/SRAM, многоканальность). Cбор информации о конфигурации целевой системы GNU/Linux
  3. Кеш память процессора. Методы отображения адресов. Множественноассоциативное отображение. Протоколы поддержания согласованности кеш-памяти (Intel 64). Атомарные операции x86-64. Оптимизация локальности обращения к памяти. Оптимизация кеширования структур данных. Анализ эффективности использования кешпамяти с помощью perf
  4. Оптимизация кода для суперскалярного ядра Intel 64. Оптимизация предсказания ветвлений (branch prediction). Устранение ветвлений (branchless code). Оптимизация загрузки суперскалярного ядра: конфликты данных (data hazards), loop unrolling, внеочередное выполнение инструкций. Векторизация кода (AVX2/AVX512)
  5. Оптимизация трансляции адресов (TLB). Большие страницы памяти (huge pages, transparent huge pages). Выделение больших страниц памяти и использование в программах
  6. Архитектура NUMA-систем. Адресное пространство процесса и политики выделения памяти GNU/Linux (memory affinity). Политики выделения физических страниц памяти с NUMA-узлов (first touch policy). Мониторинг загрузки и автоматическая балансировка NUMAузлов (NUMATop, vmstat)
  7. Методика анализа производительности Intel Top-Down Microarchitecture Analysis Method
  8. Масштабируемость интерфейса MPI и его реализаций
  9. Гибридные параллельные программы MPI+OpenMP. Оптимизация обменов с использованием разделяемой памяти вычислительных узлов (MPI + MPI 3.0 RMA Shared Memory)
  10. Коллективные операции MPI (подходы к оптимизации)

Курс может быть адаптирован под интересы целевого предприятия/компании, по вопросам сотрудничества mkurnosov[at]gmail.com