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 [2024/09/15 19:11] – kel | courses:high_performance_computing:lectures [2026/01/22 00:12] (current) – kel | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| - Тенденции развития вычислительных систем, | - Тенденции развития вычислительных систем, | ||
| - Классификация параллельных систем (SIMD, MISD..., SMP, MPP) | - Классификация параллельных систем (SIMD, MISD..., SMP, MPP) | ||
| - | - Современные высокопроизводительные системы: | + | - Расширения процессоров |
| - Понятия ускорения, | - Понятия ускорения, | ||
| - План курса | - План курса | ||
| Line 25: | Line 25: | ||
| * примеры кода в glibc | * примеры кода в glibc | ||
| - Сравнение различных потоков (POSIX, C++, Java) | - Сравнение различных потоков (POSIX, C++, Java) | ||
| + | - Разница pthread / kthread | ||
| - Проброс исключений между потоками | - Проброс исключений между потоками | ||
| + | - Напоминание о user space / kernel space и соответствующей стоимости syscall | ||
| ===== 3. Примитивы синхронизации ===== | ===== 3. Примитивы синхронизации ===== | ||
| - | - Напоминание о user space / kernel space и соответствующей стоимости syscall | ||
| - Необходимость синхронизации: | - Необходимость синхронизации: | ||
| - Реализация примитивов синхронизации: | - Реализация примитивов синхронизации: | ||
| Line 78: | Line 79: | ||
| - Средства анализа производительности | - Средства анализа производительности | ||
| * Утилита time | * Утилита time | ||
| - | * Intel Parallel Studio | + | * Intel VTune |
| - | * Valgrind (модули callgrind, cachegrind) | + | * Valgrind (модули callgrind) |
| - Пример поиска узких мест | - Пример поиска узких мест | ||
| - Профилирование промашек по кэшу и метрика CPI | - Профилирование промашек по кэшу и метрика CPI | ||
| Line 114: | Line 115: | ||
| - Блокирующий/ | - Блокирующий/ | ||
| - Синхронный (реактор)/ | - Синхронный (реактор)/ | ||
| + | - Архитектура framework на примере boost::asio | ||
| + | - Особенности реализации callback | ||
| + | - Причины разницы производительности асинхронного i/o на примере простого сервера в классическом и coroutines-режиме | ||
| - Преимущества асинхронной работы и реализация со стороны операционной системы | - Преимущества асинхронной работы и реализация со стороны операционной системы | ||
| - | - Библиотеки асинхронного ввода/вывода | + | - Мотивация к переходу на coroutines |
| + | - Преимущества по отношению к callback-программированию | ||
| + | - Примеры co_await и сравнение с синхронным кодом | ||
| ===== 15. Линеаризуемость ===== | ===== 15. Линеаризуемость ===== | ||
| Line 138: | Line 144: | ||
| ===== 17. Шаблоны || программирования ===== | ===== 17. Шаблоны || программирования ===== | ||
| + | - Общий взгляд на виды организации вычислений | ||
| - Структурные шаблоны: | - Структурные шаблоны: | ||
| * Декомпозиция по задачам | * Декомпозиция по задачам | ||
| Line 143: | Line 150: | ||
| * Recursive Data | * Recursive Data | ||
| * Pipeline | * Pipeline | ||
| - | - Некоторые программные структуры: | ||
| - | * Parallel loops | ||
| - | * Boss/Worker | ||
| - Разное: | - Разное: | ||
| * Double check | * Double check | ||
| Line 159: | Line 163: | ||
| ===== 19. Intel TBB ===== | ===== 19. Intel TBB ===== | ||
| - Алгоритмы | - Алгоритмы | ||
| - | - Аллокаторы | + | - Аллокаторы: |
| + | * scalable | ||
| + | * cache_aligned (false sharing) | ||
| - Деревья задач | - Деревья задач | ||
| - Особенности планирования (work stealing...) | - Особенности планирования (work stealing...) | ||
| Line 184: | Line 190: | ||
| ===== 21. Сопрограммы / Coroutines ===== | ===== 21. Сопрограммы / Coroutines ===== | ||
| - | - Преимущества по отношению к callback-программированию | + | - Архитектурные особенности: |
| - | - Примеры co_await и сравнение с синхронным кодом | + | - stackless |
| + | - stackfull | ||
| + | - fibers | ||
| + | | ||
| + | - Способы | ||
| + | - C++ | ||
| + | - Go | ||
| + | - Kotlin | ||
| + | - ... | ||
| - Проблемы реализации примитивов и TLS | - Проблемы реализации примитивов и TLS | ||
| - Архитектурная аналогия с асинхронными framework | - Архитектурная аналогия с асинхронными framework | ||
courses/high_performance_computing/lectures.1726416674.txt.gz · Last modified: 2024/09/15 19:11 by kel