Я ищу некоторые рекомендации, прежде чем тратить кучу времени на реорганизацию устаревшей программы. Если у меня есть ядра, которые являются частью виртуального кластера. У меня есть вычисление, которое разбито на множество частей и распределено между каждым членом кластера. Если каждое ядро поддерживает технологию Hyper-Threading, что из следующего является наиболее эффективным:
- 2 виртуальные машины, по одной на каждое логическое ядро. Половина вычисления отправляется каждому
- 1 виртуальная машина, где ОС управляет использованием логических ядер.
- 1 виртуальная машина, где OpenMP используется для создания 2 потоков для разделения вычислений.
Я интуитивно чувствую вариант 2, потому что ядро с гиперпоточностью не является настоящим ядром, а вариант 3 требует дополнительных накладных расходов на запуск потоков и передачу данных, пока один поток простаивает. Любое понимание очень ценится. Спасибо.