В: Каково общее ускорение?
Лучше всего начинать не с исходной и тривиальной формулы закона Амдала, а с чтения немного дополнительной современной точки зрения , расширяющий исходный, где обсуждаются дополнительные накладные расходы, а также объясняется аспект атомарности-разделения-работы.
Два раздела,
один ускорен за счет локального ускорения,
один общий результат
Ваша первоначальная формулировка проблемы, кажется, обходит объясненные виды проблем с реальными накладными расходами на оркестровку процессов путем простого постулирования (net-local) -speedup, где <PAR>-able
Section-under-Review связанные с реализацией дополнительные накладные расходы становятся скрытыми, что выражается в некоторой неэффективности наличия в три раза большего количества ресурсов для выполнения кодового потока, но при этом ускорение только в 2,3 раза, а не в 3,0 раза, поэтому затраты больше теоретического 1 / В 3 случаях фактически также при начальной настройке (дополнительные накладные расходы, отсутствующие в чистом [SERIAL]
выполнении кода) + параллельная обработка ( выполнение The_useful_work, теперь в три раза больше ресурсов выполнения кода) + также завершение и возврат результатов (дополнительные накладные расходы, которых нет в чистом [SERIAL]
выполнении кода) в основной код.
Скрытие этих естественных затрат на вход / выход из [PARALLEL]
-кодовых разделов упрощает домашнюю работу, но правильное понимание реальных затрат крайне важно, чтобы не тратить намного больше (на настройки и все другие дополнительные накладные расходы, которых невозможно избежать в реальном мире) чем когда-либо получалось бы обратно (из-за желания получить многопроцессорную распределенную систему) ускорение обработки)
|-------> time
|START:
| |DONE: 100% of the code
| | |
|______________________________________<SEQ>______60%_|_40%__________________<PAR>-able__|
o--------------------------------------<SEQ>----------o----------------------<PAR>-able--o CPU_x runs both <SEQ> and <PAR>-able sections of code, in a pure [SERIAL] process-flow orchestration, one after another
| |
| |
|-------> time
|START: |
| | |DONE: 100% of the code :
o--------------------------------------<SEQ>----------o | :
| o---------o .. .. .. .. ..CPU_1 runs <PAR>'d code
| o---------o .. .. .. .. ..CPU_2 runs <PAR>'d code
| o---------o .. .. .. .. ..CPU_3 runs <PAR>'d code
| | |
| | |
| <_not_1/3_> just ~ 2.3x faster (not 3x) perhaps reflects real-costs (penalisations) of new, add-on, process-organisation related setup + termination overheads
|______________________________________<SEQ>______60%_|_________|~ 40% / 2.3x ~ 17.39% i.e. the <PAR>-section has gained a local ( "net"-section ) speedup of 2.3x instead of 3.0x, achievable on 3-CPU-code-execution streams
| | |
Чистое общее ускорение (если не было начислено никаких дополнительных накладных расходов, связанных с другими производственными организациями):
( 60% + ( 40% / 1.0 ) )
---------------------------- ~ 1.2921 x
( 60% + ( 40% / 2.3 ) )
person
user3666197
schedule
20.11.2019