Количество процессоров, необходимых для достижения определенного ускорения?
Проще говоря, программа имеет 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