Estou executando algum código de simulação científica em um cluster que possui nós contendo processadores Intel Xeon E5-2630 v3. O cluster usa o CentOS 7.2.1511, a versão do gcc que estou usando é a 5.1.0, e o assembler é o 2.23.52.0.1-55.
Agora, tentei executar o mesmo código na estação de trabalho de um amigo, que tem dois processadores Xeon E5-2697 v3. Tem o Ubuntu 16.04 LTS instalado. Nesta máquina, meu código é executado 2-2,5 vezes mais lento que no cluster. Eu estava esperando pelo menos o mesmo desempenho que no cluster.
O mais estranho é que na estação de trabalho do amigo, dos 30 trabalhos que estou executando, 2 deles estão rodando 3 vezes mais rápido (ou 1,5 vezes mais rápido do que no cluster). Existem 2x28 threads no sistema, então eu estava pensando que tem algo a ver com isso, mas meu amigo também está executando alguns trabalhos (são 32 no total).
O código de montagem também foi comparado nos dois sistemas e foi quase idêntico, apesar de usar versões diferentes do gcc. O código também não é intensivo em IO e usa apenas ~ 5MB de RAM.
O que pode causar grandes diferenças de desempenho e o que posso fazer para descobrir por que isso acontece?
EDITAR : aqui você pode encontrar uma comparação de desempenho das duas CPUs. Como o meu código é single-threaded, a classificação single-threaded é a mais importante aqui.
Tags performance cpu linux