Количество процессоров, необходимых для достижения определенного ускорения?

Проще говоря, программа имеет 15%, работающих в последовательной части, и 85% является ее параллельной частью.

Как я могу определить максимальную скорость при бесконечном количестве процессоров?

А также, как я могу выяснить, скажем, сколько процессоров требуется для ускорения программы до 80% от ее максимальной скорости?

Используя законы Амдала. Я пробовал просматривать Интернет, Google и т. Д. Не нашел ничего, что могло бы помочь мне с этой простой проблемой!

2 ответа

Решение

Логично, что если вы предполагаете, что бесконечные процессоры будут бесконечно ускорять 85%, то есть время выполнения для этой части будет около нуля, то есть у вас останется 15%. Таким образом, максимальное ускорение составляет ~6,6 раза.

Сколько процессоров нужно разогнать до 80% от максимума? Предполагая, что это означает, что вы хотите время выполнения 15%/80%=18,75%. Поскольку 15% требуется для последовательной части, 3,75% должны покрывать 85% распараллеленных. Таким образом, вам нужно 85/3,75 ~23 процессора.

Если у вас бесконечное количество процессоров, 85% работы выполняется бесконечно быстро, то есть за незначительное время амортизации. Таким образом, ускорение составляет 1/(15%), т.е. 1/0,15

Другие вопросы по тегам