Тактовая частота в зависимости от количества ядер для параллельного компьютерного моделирования

1565
SimonG

Мой вопрос похож на некоторые вопросы «скорость против ядер», которые уже задавались на этом сайте. Однако меня интересуют некоторые очень специфические и технические моменты. Поэтому я надеюсь, что мой вопрос будет иметь право на «ответ», а не исключительно на основе мнения.

На моем рабочем месте мы часто подходим к определенным статистическим проблемам, используя компьютерное моделирование. Программное обеспечение, которое мы используем, в основном предназначено для одноядерных процессоров, но мы запускаем его параллельно, используя несколько экземпляров этих программ. Моделирование требует большого объема вычислений, и одна итерация может занять до одного часа.

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

Компьютеры, которые мы сейчас используем, представляют собой серверные решения, которые содержат несколько процессоров с относительно высокой скоростью (16 физических ядер, 2,9 ГГц каждое и без графического процессора). Таким образом, решение сводится к двум вариантам:

  • инвестировать в аналогичные машины с чуть более высокой тактовой частотой (например, 3,2 ГГц) и таким же количеством ядер (скажем, 16) или, альтернативно ...
  • снижение тактовой частоты (например, 2,6 ГГц) и переход на большее количество ядер (скажем, 20 или 24).

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

  • 3,2 ГГц * 16 ядер = 51,2 ГГц или, альтернативно ...
  • 2,5 ГГц * 24 ядра = 60,0 ГГц

Тем не менее, я уверен, что этот расчет ошибочен по нескольким причинам. Но каким именно образом? В данном частном случае деньги на самом деле не проблема, и, к сожалению, нужно исключать вычисления с использованием графических процессоров.

Машины будут работать под управлением Windows Server 2012 R2 и будут использоваться исключительно для такого рода расчетов. Все задействованные программы оптимизированы для работы с 64-битной версией, но иногда могут использоваться и 32-битные программы. Память и жесткий диск не должны быть огромным фактором для рассмотрения.

Ура!

0
Как в обмане: это зависит от процессов и от того, как они используют систему. Так что (IMO) нет единственного ответа, который можно дать, или простого вычисления, которое вы можете сделать, чтобы определить, что лучше. Оцените и профилируйте свой код на нескольких платформах / конфигурациях, а затем купите любую настройку, на которой он работает лучше всего. Если у вас нет времени, чтобы выполнить профилирование, то настройте большинство ядер, используя самую быструю скорость, какую вы можете себе позволить. Ƭᴇcʜιᴇ007 9 лет назад 0
Если в программном обеспечении используется только одно ядро, то вы хотите, чтобы это одно ядро ​​было максимально быстрым, чтобы конкретный экземпляр программного обеспечения выполнял свою задачу как можно быстрее. Почему вы умножаете количество ядер и тактовую частоту. ** Это не работает так. ** Вы действительно правы. Увеличение производительности не будет линейным, но вы сможете определить следующее узкое место. Лично я бы просто использовал вычислительное программное обеспечение, которое НЕ было однопоточным. Ramhound 9 лет назад 1
@Ramhound: Я понимаю, что это не работает так, но меня интересует, * как * это работает, то есть какие альтернативные факторы я должен принимать во внимание. Действительно, программы являются одноядерными, но мы все равно запускаем их параллельно. Это делается с помощью «основного» процесса, который запускает несколько «рабочих» экземпляров одной и той же программы. Когда вычисления требуют такой же интенсивной загрузки ЦП, как указано выше, производительность фактически умножается на количество ядер на данном компьютере. Однако это не позволяет сделать вывод о том, что приносит больший выигрыш в сценарии, описанном выше: тактовая частота или физические ядра. SimonG 9 лет назад 0
Не хватает информации, чтобы сделать вывод, что будет лучше. Если у вас есть 5 задач, и каждая задача занимает 1 час на одноядерном процессоре, работающем с частотой 3 ГГц, то вы можете выполнить 5 задач за один час, если этот процессор имеет 5 ядер, работающих на частоте 3 ГГц. ** Если вы хотите наилучшую производительность, максимизируйте количество ядер и частоту, чтобы производительность была линейной. ** Ramhound 9 лет назад 1
@SimonG, все ответы в этой теме (и связанных темах) в основном некорректны. Вам необходимо купить компьютеры с самым большим кешем на кристалле, см. Http://superuser.com/questions/543702/why-are-newer-generations-of-processors-faster-at-the-same-clock-speed/ 1142639 # 1142639 Ale..chenski 7 лет назад 0

1 ответ на вопрос

1
Romeo Ninov

The calculations are not precise. They are from mathematical point of view, but in computing you actually need to multiply by 0.9 to 0.75 to get the real "power" And more cores/processors mean lower number. This happen because of computer power you need to parallelize the tasks and them to build the final result from different threads.

Это замечание уже помогает моей цели. Тем не менее, я думаю, что в данном сценарии усилия, необходимые для распараллеливания процесса, довольно малы, поскольку вычисления занимают довольно много времени, так что обмен данными между основным и рабочим процессами происходит не слишком часто. SimonG 9 лет назад 1

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