Содержание курса
1. Введение
4 урока
3 084
1 982
56м
75
Закрытый
1.1
История и задачи
↗
1 309
704
11м 5с
20
Закрытый
1.2
Общий взгляд на HPC: от SSE к кластерным вычислениям
↗
676
388
17м 43с
21
Закрытый
1.3
Процессы и потоки
↗
573
461
17м 4с
20
Закрытый
1.4
Создание потоков
↗
526
429
11м 44с
14
2. Многопоточность или IPC
5 уроков
2 153
1 698
35м
61
Закрытый
2.1
Механизмы IPC
↗
511
409
9м 22с
12
Закрытый
2.2
Преимущество многопоточности: скорость обмена данными
↗
437
351
7м 31с
12
Закрытый
2.3
Преимущество многопоточности: простота
↗
410
332
7м 54с
14
Закрытый
2.4
Преимущество IPC: безопасность
↗
396
315
4м 30с
9
Закрытый
2.5
Преимущество IPC: надёжность
↗
399
291
9м 45с
14
3. Завершение потоков
5 уроков
1 798
1 459
49м
68
Закрытый
3.1
Постановка задачи
↗
380
317
4м 51с
15
Закрытый
3.2
Завершение POSIX-потоков
↗
378
321
21м 20с
17
Закрытый
3.3
Примеры кода из glibc
↗
355
298
7м 31с
11
Закрытый
3.4
Завершение Java-потоков
↗
359
257
11м 50с
14
Закрытый
3.5
Сравнение механизмов завершения на разных языках
↗
326
266
6м 7с
11
4. Примитивы синхронизации
8 уроков
2 490
1 855
100м
95
Закрытый
4.1
Необходимость использования примитивов
↗
332
277
4м 37с
9
Закрытый
4.2
Логика реализации mutex
↗
320
283
11м 16с
10
Закрытый
4.3
Рекурсивные и нерекурсивные примитивы
↗
317
269
23м 49с
16
Закрытый
4.4
Read/Write mutex
↗
309
253
4м 26с
9
Закрытый
4.5
User space / kernel space
↗
298
251
15м 58с
11
Закрытый
4.6
CAS: spin mutex и атомики
↗
309
224
14м 27с
14
Закрытый
4.7
RAII, Futex и адаптивные примитивы
↗
301
226
6м 49с
12
Закрытый
4.8
Condition variables
↗
304
72
23м 45с
14
5. Ошибки || программирования
3 урока
772
583
64м
33
Закрытый
5.1
Dead lock
↗
275
195
30м 43с
11
Закрытый
5.2
Гонки данных (Data race / Race condition)
↗
248
201
18м 50с
11
Закрытый
5.3
Инверсия приоритетов
↗
249
187
16м 1с
11
6. Алгоритмы синхронизации
6 уроков
1 444
1 189
75м
56
Закрытый
6.1
Грубая
↗
268
218
8м 30с
12
Закрытый
6.2
Тонкая
↗
233
201
21м 38с
8
Закрытый
6.3
Оптимистичная
↗
233
200
10м 35с
9
Закрытый
6.4
Ленивая
↗
231
198
4м 58с
8
Закрытый
6.5
Неблокирующая
↗
232
207
13м 15с
9
Закрытый
6.6
Проблема ABA
↗
247
165
19м 57с
10
7. Снимки атомарных регистров
3 урока
715
540
49м
24
Закрытый
7.1
Согласованность и актуальность
↗
239
190
9м 24с
8
Закрытый
7.2
Lock-free snapshot
↗
241
199
10м 51с
7
Закрытый
7.3
Wait-free snapshot
↗
235
151
30м 36с
9
8. Модели памяти
5 уроков
1 013
836
124м
36
Закрытый
8.1
Диагностика ошибки с проблемой видимости
↗
205
176
38м 45с
10
Закрытый
8.2
Протокол поддержки когерентности кешей процессора (MESI)
↗
200
174
20м 36с
7
Закрытый
8.3
Причины появления memory reordering
↗
195
169
27м 10с
5
Закрытый
8.4
Барьеры памяти
↗
206
173
16м 33с
6
Закрытый
8.5
Модели памяти
↗
207
144
24м 42с
8
9. Lock-free структуры данных: стек и очередь
4 урока
791
539
57м
19
Закрытый
9.1
Стек Treiber
↗
207
172
6м 7с
4
Закрытый
9.2
Линеаризуемость
↗
191
162
29м 35с
6
Закрытый
9.3
Очередь Michael & Scott
↗
190
158
11м 34с
3
Закрытый
9.4
Проверка корректности параллельных алгоритмов
↗
203
47
12м 48с
6
10. Профилирование
4 урока
431
325
81м
11
Закрытый
10.1
Valgrind: анализ и представление через kcachegrind
↗
120
94
11м 0с
3
Закрытый
10.2
Perf: анализ статистики и flamegraph
↗
111
89
20м 38с
2
Закрытый
10.3
VTune: анализ ожидания / синхронизации
↗
105
72
34м 30с
2
Закрытый
10.4
VTune: анализ промашек по кешу
↗
95
70
16м 49с
4
11. RCU
3 урока
368
270
45м
8
Закрытый
11.1
Архитектура epoch-based синхронизации
↗
125
97
11м 19с
2
Закрытый
11.2
Kernel space RCU
↗
122
100
15м 54с
2
Закрытый
11.3
User space RCU
↗
121
73
19м 7с
4
12. Flat combining
2 урока
308
182
46м
9
Закрытый
12.1
TLS
↗
146
109
21м 28с
4
Закрытый
12.2
Архитектура и производительность FC
↗
162
73
25м 58с
5
13. Асинхронный ввод/вывод
0 уроков
0
0
0м
0
14. OpenMP / MPI
0 уроков
0
0
0м
0
15. Транзакционная память
0 уроков
0
0
0м
0