Увеличивается время CPU (как сообщается командой time
CLI), указывающее на неэффективность при использовании гиперпотока (например, время, затрачиваемое на прокрутки или промахи в кэше), или возможно, что время процессора раздувается нечетным характером HT? (например, реальные ядра заняты, а HT не может ударить)Является ли время процессора релевантным для Hyperthreading?
У меня четырехъядерный i7, и я тестирую тривиально-параллелизуемую часть (переопределение изображения на палитру) OpenMP program - без блокировок, без критических разделы. Все потоки получают доступ к некоторой части памяти общего доступа только для чтения (справочная таблица), но записываются только в их собственную память.
cores real CPU
1: 5.8 5.8
2: 3.7 5.9
3: 3.1 6.1
4: 2.9 6.8
5: 2.8 7.6
6: 2.7 8.2
7: 2.6 9.0
8: 2.5 9.7
Я обеспокоен тем, что количество процессорного времени используется быстро растет, как количество ядер превышает 1 или 2.
Я полагаю, что в идеальном сценарии CPU время не увеличится много (то же самое количество работа просто распределяется по нескольким ядрам).
Означает ли это, что 40% накладных расходов потрачено на распараллеливание программы?
Не забывайте, что сверхпрочные сердечники не являются «настоящими» сердечниками.Поэтому ожидается, что время процессора возрастет. – Mysticial
Я был бы более обеспокоен тем, что количество процессорного времени ** не увеличится быстро, показывая, что ядра не работают. В идеальном случае процессорное время будет 'cores' раз' real' (с 'cores' до' 4', до выхода HT). Вы снижаете эффективность до 65% с 3 ядрами. См. [Закон Амдаля] (http://en.wikipedia.org/wiki/Amdahl%27s_law) о том, как количество непараллельных частей в программе влияет на его масштабируемость. Также проверьте, связана ли проблема с памятью. –
Возможно также, что вы неправильно закодировали раздел «тривиально параллелизуемый». Это очень просто, чтобы заставить параллельные вычисления ошибочно и в конечном итоге тратить производительность, что приводит к субоптимальному масштабированию. Но 40% звучат абсурдно - я легко получаю 95% -ную эффективность с менее масштабируемыми алгоритмами, поэтому здесь определенно что-то играет. – Thomas