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

0

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

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

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

Компьютеры, которые мы используем в настоящее время, представляют собой решения серверного масштаба, которые содержат несколько процессоров с относительно высокой скоростью (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-битные программы. Память и жесткий диск не должны быть огромным фактором для рассмотрения.

Ура!

SimonG
источник
Как в обмане: это зависит от процессов и от того, как они используют систему. Так что (IMO) нет ни единого ответа, ни простого вычисления, которое вы можете сделать, чтобы определить, что лучше. Оцените и профилируйте свой код на нескольких платформах / конфигурациях, а затем купите любую настройку, на которой он работает лучше всего. Если у вас нет времени, чтобы выполнить профилирование, тогда настройте большинство ядер, используя самую быструю скорость, какую вы можете себе позволить.
Ƭᴇcʜιᴇ007
1
Если в программном обеспечении используется только одно ядро, то вы хотите, чтобы это одно ядро ​​было максимально быстрым, чтобы конкретный экземпляр программного обеспечения выполнял свою задачу как можно быстрее. Почему вы умножаете количество ядер и тактовую частоту. Это не работает так. Вы действительно правы. Увеличение производительности не будет линейным, но вы сможете определить следующее узкое место. Лично я бы просто использовал вычислительное программное обеспечение, которое НЕ было однопоточным.
Ramhound
@Ramhound: Я понимаю, что это не работает так, но мне интересно, как это работает, то есть какие альтернативные факторы я должен принимать во внимание. Действительно, программы одноядерные, но мы все равно запускаем их параллельно. Это делается с помощью «основного» процесса, который запускает несколько «рабочих» экземпляров одной и той же программы. Когда вычисления так же интенсивно загружают процессор, как указано выше, производительность фактически умножается на количество ядер на данном компьютере. Однако это не позволяет сделать вывод о том, что приносит больший выигрыш в сценарии, описанном выше: тактовая частота или физические ядра.
SimonG
1
Не хватает информации, чтобы сделать вывод, что будет лучше. Если у вас есть 5 задач, и каждая задача занимает 1 час на одноядерном процессоре, работающем с частотой 3 ГГц, то вы можете выполнить 5 задач за один час, если этот процессор имеет 5 ядер, работающих на частоте 3 ГГц. Если вы хотите наилучшую производительность, то увеличьте количество ядер и частоту, чтобы производительность была линейной.
Ramhound
@SimonG, все ответы в этой теме (и связанных темах) в основном некорректны. Вам нужно купить компьютеры с самым большим кэшем на чипе доступны, см superuser.com/questions/543702/...
Ale..chenski

Ответы:

1

Расчеты не точные. Они с математической точки зрения, но в вычислениях вам действительно нужно умножить на 0,9 до 0,75, чтобы получить реальную «мощность». Чем больше ядер / процессоров, тем меньше число. Это происходит из-за мощности компьютера, вам нужно распараллеливать задачи и их, чтобы получить конечный результат из разных потоков.

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