Параллелизм · РЕДАКЦИОННЫЙ МАТЕРИАЛ
Ядра, потоки и предел ускорения
Что даёт многопоточность и как оценить её пользу до переписывания кода.
Физическое и логическое
Ядро содержит ресурсы исполнения, а аппаратные потоки дают несколько контекстов выполнения. При SMT потоки делят часть ресурсов одного ядра. Два логических процессора не следует считать двумя независимыми ядрами одинаковой мощности. Топологию системы нужно проверять отдельно от общего числа потоков.
Последовательная часть
Часть задачи остаётся последовательной: подготовка входа, общий замок, объединение результатов. В идеализированной модели Амдала ускорение равно 1 / ((1 − p) + p / n), где p — параллельная доля, а n — число работников. Модель предполагает отсутствие дополнительных накладных расходов.
Расходы реальной программы
Создание задач, передача данных, синхронизация и конкуренция за память уменьшают выигрыш. На малом входе параллельная версия может быть медленнее. Несколько потоков, часто обновляющих соседние переменные, способны вызывать лишний обмен кэш-линиями даже без общей логической переменной.
Проверка масштабирования
Измерьте 1, 2, 4 и далее доступное число работников на одном наборе. Запишите время, загрузку CPU и память. Ищите точку, после которой время перестаёт уменьшаться. Калькулятор на сайте показывает только верхнюю оценку по выбранной модели, а не прогноз для конкретного процессора.
Проверить по первоисточнику
Общий материал проверен по документации 26 октября 2026 года. Детали конкретного процессора уточняйте в его руководстве.