Калькулятор закона Амдала

Введите долю работы, которую можно выполнять параллельно, и число процессоров или потоков. Калькулятор покажет ускорение по закону Амдала, эффективность на процессор, потолок, который не преодолеть никаким числом процессоров, и сколько их нужно для заданного ускорения. Для задачи, растущей вместе с системой, переключитесь на закон Густавсона.

Закон
%
Ускорение4,706 ×
Эффективность на процессор
58,82 %
Время работы от исходного
21,25 %
Предельное ускорение (бесконечно много процессоров)
10 ×
Процессоров для нужного ускорения
6

Работает в браузере: всё, что вы вводите, никуда не отправляется.

Как пользоваться

  1. Выберите Амдала для фиксированной задачи, которую нужно выполнить быстрее, или Густавсона для задачи, растущей с числом процессоров.
  2. Введите параллельную долю работы в процентах и число процессоров.
  3. Для закона Амдала можно задать нужное ускорение и узнать, сколько процессоров для него требуется и достижимо ли оно вообще.

Формулы

  • Амдал: S = 1 ÷ ((1 − p) + p ÷ N); время работы = (1 − p) + p ÷ N от исходного; предел = 1 ÷ (1 − p).
  • Процессоров для ускорения s: N = p ÷ (1/s − (1 − p)), с округлением вверх; при s ≥ 1 ÷ (1 − p) недостижимо.
  • Густавсон: S = (1 − p) + p × N.
  • Эффективность = S ÷ N.

Пример расчёта

Программа, параллельная на 90 %, на 8 процессорах:

  • S = 1 ÷ (0,1 + 0,9 ÷ 8) = 1 ÷ 0,2125 = 4,706 ×;
  • время работы 21,25 % от исходного, эффективность 4,706 ÷ 8 = 58,82 %;
  • предельное ускорение 1 ÷ 0,1 = 10 ×;
  • для ускорения в 4 раза нужно 0,9 ÷ (0,25 − 0,1) = 6 процессоров.

По закону Густавсона те же 90 % на 8 процессорах дают 0,1 + 0,9 × 8 = 7,3 ×.

Советы

  • Сначала сокращайте последовательную часть. Переход с 90 % на 95 % параллельности поднимает потолок с 10 × до 20 × — больше, чем любое число дополнительных ядер.
  • Эффективность падает с ростом N. С какого-то момента новые процессоры почти ничего не дают; строка эффективности показывает, когда.
  • Гиперпотоки — не полноценные процессоры: для вычислительных задач считайте физические ядра.

Частые вопросы

Что такое закон Амдала?

Ускорение фиксированной задачи, если её параллельная часть p выполняется на N процессорах, а остальное — последовательно, S = 1 ÷ ((1 − p) + p/N). Последовательная часть задаёт жёсткий предел 1 ÷ (1 − p): задача, параллельная на 90 %, никогда не ускорится больше чем в 10 раз.

Чем отличается закон Густавсона?

Густавсон считает, что задача растёт вместе с системой и время работы не меняется, и спрашивает, во сколько раз больше работы удастся сделать, S = (1 − p) + p × N. Это ответ на другой вопрос, число получается больше; ни один из законов не ошибочен.

Как узнать параллельную долю своей программы?

Профилированием. Измерьте время последовательного запуска и тех частей, что можно раскидать по потокам; p — это время параллельной части, делённое на общее. Можно и наоборот: измерить ускорение на N ядрах и выразить p из закона Амдала.

Почему реальное ускорение меньше расчётного?

Закон не учитывает затраты на запуск потоков, обмен данными, блокировки, пропускную способность памяти и неравномерную нагрузку. Это верхняя граница при данном p, а не прогноз.

Ещё в разделе «Разработчикам»

Все инструменты раздела: Разработчикам ·Обновлено 6 ноября 2026 г.

Настройки конфиденциальности

Google Analytics показывает нам, какими инструментами пользуются и работают ли они. Он может ставить cookie. Ваш выбор сохраняется в этом браузере.