Многоядерное энергетическое требование ЦП и выравнивание нагрузки

Я интересуюсь выравниванием нагрузки для многоядерных систем ЦП. Если Вы используете 1 ЦП с несколькими ядрами, это более энергосберегающий, чтобы сбалансировать нагрузку на несколько ядер или попытаться заполнить единственные ядра и оставить других неактивными.
Основное предположение состоит в том, что объем работы, сделанный в обоих случаях, является точно тем же в то же время. Так, это более эффективный для использования 4 ядер в том же ЦП с 25%-й загрузкой каждый или 1 ядро с 100%-й загрузкой.
Я предположил бы, что 1 ядро с 100%-й загрузкой должно быть более эффективным, но поскольку я мог бы быть неправым, я искал серьезные ответы об этой проблеме (никакие предположения).

10
задан 05.08.2010, 22:48

4 ответа

IMO этот вопрос является просто не имеющим ответа в общем случае.

На моем столе у меня есть один из них новомодный Core-i7-980x, который TurboBoost с 6 ядрами включил центральным процессорам. При загрузке одноядерного на этой машине она повысит тактовую частоту того ядра, таким образом, увеличивая потребляемую мощность ЦП, так, чтобы сделал для огромной разницы. Этот ЦП, а также другой, более современные центральные процессоры могут частично de-питание неактивные ядра, увеличивая экономию электроэнергии. Это не так верно на более старых моделях CPU.

Следует иметь в виду, что работа, что Вы имеете отношение к одному ядру, будет обязательно отличаться, чем работа, которую Вы делаете с несколькими ядрами. Если будет иметь место, что можно распределить нагрузку на несколько ядер, то Вы найдете, что много дополнительного времени будет проведено на одноядерных работающих дорогих контекстных переключениях, и Ваша производительность пострадает.

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

О, и еще одна вещь. Большинство людей, вероятно, заключит эффективность в кавычки с точки зрения питания. Вы не хотите попадать в то прерывание. Так как время для обработки загрузок будет обязательно отличаться в зависимости от того, как загрузки сбалансированы, необходимо интегрировать результат со временем, чтобы найти, что чистая сумма энергии раньше завершала задания для прибытия в вероятный результат.

6
ответ дан 07.12.2019, 12:56

Я сделал некоторые тесты сегодня с помощью этого компьютера (Intel C2D T8100), и использование оптимизировало приложения SETI@Home из установщика сумасшедших 0.36. Я использовал M$ Joulmeter для вычисления потребляемой мощности. Я измерил времена дерева потребления. Во-первых, я позволяю BOINC взять 100% ядер и 100%-е процессорное время и позволить ему работать в течение одного часа. Процессор использовал 20 Вт, и диаграммы процессорного времени от диспетчера задач были плоскими в 100%. Потребление средней мощности моего компьютера составляло 45.05 Вт и повышение, и в данный момент я остановился, тестовая потребляемая мощность составляла 46.18 Вт.

Во втором тесте я установил BOINC, чтобы взять 50% доступных ядер и 100% процессорного времени и позволить ему работать в течение одного часа. Потребление мощности ЦП варьировалось между 12 Вт и 13 Вт. Среднее потребление составляло 42.72 Вт и повышение. В данный момент я остановил тест, потребление составляло 44 Вт. Чтобы заставить график процессорного времени для целенаправленного ядра быть, застопорились, я установил привязку программы к одному ядру и приоритета к высоко. График для другого ядра показал несколько выше, чем нормальное использование процессорного времени.

Для третьего теста я установил BOINC для использования 100% доступных ядер и 50% процессорного времени. Потребляемая мощность варьировалась по большим переходам между 5 Вт и 17 Вт. Потребление средней мощности после одного часа тестирования составляло 39.96 Вт и падение. Графики процессорного времени looled как /\/\/\/\/\/\/\/\/\/\/\/\/\. Скачки ожидались из-за размера единиц измерения времени, используемых BOINC.

Таким образом, я полагаю, что более эффективно использовать два ядра, работающие при половине загрузки, чем выполнить одно ядро в предельной нагрузке.

И да, я знаю, что для надлежащего исследования намного больше образцов необходимо, но в то время, когда у меня нет достаточного количества компьютеров или время, чтобы сделать надлежащую статистику.

4
ответ дан 07.12.2019, 12:56

Ответ на Ваш вопрос является двукратным: Если Вы выполняете очень vectorizable, параллельный код, то балансировка загрузки по нескольким ядрам всегда более эффективна. Ядра будут работать при более низких загрузках, выделяющих меньше тепла, чем одноядерное, которое продвинуто к, он - предел. С другой стороны, если Ваш код не parallelizable, то выполнение его на нескольких ядрах менее эффективно из-за количества неудачных обращений в кэш, которые произойдут из-за зависимостей через код. Это могло бы все еще выработать меньше тепла, но определенно займет больше времени выполнить Вашу задачу по сравнению с выполнением его на одноядерном.

0
ответ дан 07.12.2019, 12:56

Ваш вопрос, как спросили имеет слишком много неизвестных. Вы спрашиваете об эффективности времени или энергоэффективности? Не параллельны коду или параллельному коду? Единственное задание или средняя настольная многозадачность? Если у Вас есть законопроект об энергетике более чем $1 000 / месяц для Ваших компьютеров затем, это МОГЛО БЫ стоить беспокойства или два. Иначе Вы не можете сохранить достаточно для создания проблемы стоящей решения. Забава говорить о - но если у Вас есть серьезная проблема лучший ответ: попробуйте некоторые разные вещи и посмотрите что работы.

0
ответ дан 07.12.2019, 12:56

Теги

Похожие вопросы