Вы заявляете:
Я знаю, что никогда не должен использовать более 4 рабочих процессов для получения характеристик спуска.
Это не обязательно правда! Вот пример того, что я нашел на i7-3820 с включенным HT. Весь мой код, который я выполнял, был C ++. Учтите, что у меня есть 8 отдельных программ (хотя и идентичных), которые мне нужно запустить. Я пробовал два следующих способа запуска этих кодов:
- Запускать только 4 отдельных потока одновременно. После завершения этих 4 запустите следующие 4 потока (всего 4 x 2 = 8).
- Запускать все 8 как отдельные потоки одновременно (8 x 1 = 8 всего).
Как видите, эти два сценария достигают одного и того же. Тем не менее, я обнаружил, что время выполнения:
- 1 час для каждый набор из 4 нитей; в общей сложности 2 часа, чтобы завершить все 8.
- 1,5 часа для набора из 8 нитей.
То, что вы обнаружите, состоит в том, что отдельный процесс завершится быстрее для случая № 1, но в целом № 2 дает лучшую производительность, поскольку ВСЕ ваши работы выполняются за меньшее время. Я обнаружил, что типичное увеличение производительности составляет ~ 25% при включенном HT.
Как видно, существуют сценарии, когда 8 потоков работают быстрее, чем 4.