2

Мне нужно выполнить ~ 1500 заданий на сервере моей лаборатории. Программа, которую я использую (blastpgp если кому-то все равно), способна работать в параллельном режиме, опция -a устанавливает, сколько потоков она запустит. Рассматриваемый сервер имеет 40 64-битных процессоров Opteron.

У меня есть следующие варианты:

  1. Последовательно запускайте задания , позволяя blastpgp занять все 40 ядер, запустив 40 потоков (-a 40).

  2. Запустите 40 заданий параллельно, позволяя каждому запускать только один поток.

Какой из этих двух вариантов будет быстрее? Они эквивалентны? Я предполагаю, что это может зависеть от конкретного аппаратного / программного / рабочего задания, но есть ли общее правило при запуске изначально параллельной программы в кластере?

1 ответ1

2

Я задал похожий (не идентичный) вопрос по stackoverflow, и, по общему мнению, многопоточность будет быстрее, потому что:

  1. Потоки легче, чем процессы, меньше нагружают систему
  2. Поток означает запуск программы только один раз, поэтому любые задачи инициализации нужно выполнять только один раз.
  3. В управлении памятью и планировании ОС обычно лучше, чем в пользовательской среде, поэтому лучше запустить несколько потоков и позволить ОС разобраться с ними.

Я отмечаю это как вики сообщества, потому что это просто сводка ответов, которые я получил в stackoverflow.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .