Общаясь с коллегой на тему паралленьного программирования и многопоточности, мы затронули вопрос о производительности большоко количества потоков. Я с удивлением узнал, что много программистов не знает
Закона Амдала, который иллюстрирует ограничение роста с увеличением вычислителей.
Приведу сам закон:
«В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента».
Математическая формулировка (взято из Википедии):
Предположим, что необходимо решить некоторую вычислительную задачу. Предположим, что её алгоритм таков, что доля

от общего объёма вычислений может быть получена только последовательными расчётами, а, соответственно, доля

может быть распараллелена идеально (то есть время вычисления будет обратно пропорционально числу задействованных узлов

). Тогда ускорение, которое может быть получено на вычислительной системе из

процессоров, по сравнению с однопроцессорным решением не будет превышать величины
Но самое главное вывод, который можно сделать из
Закона Амдала:
С определенного момента добавление новых узлов (потоков, процессов) будет увеличивать время расчета задачи.
Проиллюстрирую это на графике:
Комментариев нет:
Отправить комментарий