courses:high_performance_computing:lectures
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
courses:high_performance_computing:lectures [2022/01/03 21:00] – kel | courses:high_performance_computing:lectures [2025/01/13 01:12] (current) – kel | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Программа ====== | ====== Программа ====== | ||
- | ===== 1. Введение ===== | + | ===== 0. Введение ===== |
- Тенденции развития вычислительных систем, | - Тенденции развития вычислительных систем, | ||
- Классификация параллельных систем (SIMD, MISD..., SMP, MPP) | - Классификация параллельных систем (SIMD, MISD..., SMP, MPP) | ||
- | - Современные высокопроизводительные системы: | + | - Расширения процессоров |
- Понятия ускорения, | - Понятия ускорения, | ||
- | - Многопоточность или IPC | ||
- План курса | - План курса | ||
+ | - Старт потока (Java): реализация Runnable vs наследование от Thread | ||
+ | - Напоминание о процессах и потоках: | ||
- | ===== 2. Создание/завершение потоков ===== | + | ===== 1. Многопоточность или IPC ===== |
- | - Механизм запуска потока | + | - Виды IPC |
+ | - Преимущества многопоточности: | ||
+ | * Простота | ||
+ | * Скорость (TLB) | ||
+ | - Преимущества IPC: | ||
+ | * Безопасность | ||
+ | * Надёжность | ||
+ | - Сложности реализации shmem | ||
+ | |||
+ | ===== 2. Завершение потоков ===== | ||
- Корректное завершение потоков: | - Корректное завершение потоков: | ||
* cancellation points | * cancellation points | ||
* interrupted exception | * interrupted exception | ||
* примеры кода в glibc | * примеры кода в glibc | ||
- | - Сравнение различных потоков (POSIX, | + | - Сравнение различных потоков (POSIX, |
+ | - Разница pthread / kthread | ||
- Проброс исключений между потоками | - Проброс исключений между потоками | ||
+ | - Напоминание о user space / kernel space и соответствующей стоимости syscall | ||
===== 3. Примитивы синхронизации ===== | ===== 3. Примитивы синхронизации ===== | ||
Line 43: | Line 55: | ||
* lock-free | * lock-free | ||
* wait-free | * wait-free | ||
- | - SWMR-регистры | ||
- Lock-free snapshot | - Lock-free snapshot | ||
- Wait-free snapshot | - Wait-free snapshot | ||
Line 58: | Line 69: | ||
===== 7. Модель памяти ===== | ===== 7. Модель памяти ===== | ||
+ | - Пример ошибки в ядре ОС | ||
- Устройство кэшей процессора | - Устройство кэшей процессора | ||
- Пример на протоколе MESI | - Пример на протоколе MESI | ||
Line 67: | Line 79: | ||
- Средства анализа производительности | - Средства анализа производительности | ||
* Утилита time | * Утилита time | ||
- | * Intel Parallel Studio | + | * Intel VTune |
- | * Valgrind (модули callgrind, cachegrind) | + | * Valgrind (модули callgrind) |
- Пример поиска узких мест | - Пример поиска узких мест | ||
- Профилирование промашек по кэшу и метрика CPI | - Профилирование промашек по кэшу и метрика CPI | ||
Line 112: | Line 124: | ||
- Lock-free очередь Michael & Scott | - Lock-free очередь Michael & Scott | ||
- Точки линеаризации | - Точки линеаризации | ||
+ | - Relaxed SkipList | ||
===== 16. Оптимизации в компиляторах ===== | ===== 16. Оптимизации в компиляторах ===== | ||
Line 126: | Line 139: | ||
===== 17. Шаблоны || программирования ===== | ===== 17. Шаблоны || программирования ===== | ||
+ | - Общий взгляд на виды организации вычислений | ||
- Структурные шаблоны: | - Структурные шаблоны: | ||
* Декомпозиция по задачам | * Декомпозиция по задачам | ||
Line 131: | Line 145: | ||
* Recursive Data | * Recursive Data | ||
* Pipeline | * Pipeline | ||
- | - Некоторые программные структуры: | ||
- | * Parallel loops | ||
- | * Boss/Worker | ||
- Разное: | - Разное: | ||
* Double check | * Double check | ||
Line 192: | Line 203: | ||
- Потокобезопасные контейнеры | - Потокобезопасные контейнеры | ||
- | ===== 24. Wait-free MRMW снимок регистров ===== | + | ===== 24. Средства поиска ошибок ===== |
- | - Напоминание о MRSW алгоритме | + | |
- | - Переход к //bounded// версии на битовых // | + | |
- | - Расширание до MRMW | + | |
- | + | ||
- | ===== 25. Средства поиска ошибок ===== | + | |
- Google Thread Sanitizer | - Google Thread Sanitizer | ||
- Intel Parallel Studio | - Intel Parallel Studio | ||
Line 203: | Line 209: | ||
- Пример использования | - Пример использования | ||
- | ===== 26. Lock-free изнутри ===== | + | ===== 25. Lock-free изнутри ===== |
- Feldman Multi Array | - Feldman Multi Array | ||
- Схемы управления памятью: | - Схемы управления памятью: | ||
Line 209: | Line 215: | ||
* Hazard pointer | * Hazard pointer | ||
- | ===== 27. Оптимизации | + | ===== 26. Системы потоковой обработки данных ===== |
- | - Relaxed SkipList | + | - Analytics vs Streaming |
+ | - Гарантии обработкии данных: | ||
+ | * Exactly once | ||
+ | * At least once | ||
+ | * At most once | ||
+ | - Windows | ||
+ | * Session | ||
+ | * Sliding | ||
+ | * Tumbling | ||
+ | * Hopping | ||
+ | - Linear scalability | ||
+ | - Fault tolerance | ||
+ | - Back pressure | ||
+ | - Isolation | ||
+ | - Qutoing | ||
+ | - MillWheel/ | ||
+ | - Yandex Query | ||
courses/high_performance_computing/lectures.1641232837.txt.gz · Last modified: 2022/01/03 21:00 by kel