Я запускаю некоторый научный код для моделирования на кластере, в котором есть узлы, содержащие процессор Intel Xeon E5-2630 v3. В кластере используется CentOS 7.2.1511, используемая версия gcc - 5.1.0, а ассемблер - 2.23.52.0.1-55.

Теперь я попытался запустить тот же код на рабочей станции друга, на которой установлено два процессора Xeon E5-2697 v3. На нем установлена Ubuntu 16.04 LTS. На этой машине мой код работает в 2-2,5 раза медленнее, чем на кластере. Я ожидал, по крайней мере, такую же производительность, как на кластере.

Странно то, что на рабочей станции друга из 30 заданий, которые я выполняю, 2 из них работают в 3 раза быстрее (или в 1,5 раза быстрее, чем в кластере). В системе 2x28 потоков, поэтому я подумал, что это как-то связано с этим, но мой друг также выполняет несколько заданий (всего 32).

Код ассемблера также сравнивался в двух системах и был практически идентичен, несмотря на использование разных версий gcc. Код также не требует интенсивного ввода-вывода и использует только ~ 5 МБ ОЗУ.

Что может вызвать такие большие различия в производительности, и что я могу сделать, чтобы выяснить, почему это происходит?

РЕДАКТИРОВАТЬ: Также здесь вы можете найти сравнение производительности двух процессоров. Поскольку мой код однопоточный, здесь важнее однопоточный рейтинг.

0