O mesmo código, diferentes computadores - Diferenças contraintuitivas e enormes no desempenho

0

TL; DR: Estou fazendo um pouco de computação de desempenho e descobri que a máquina ostensivamente "mais fraca" está superando a máquina "mais strong" em ordens de grandeza. Por quê?

Eu escrevi algum código em C para um projeto. Ele envolve 10.000 iterações de um processo demorado que gera dados pseudo-aleatórios e, após cada iteração, grava os dados em um arquivo. Eu usei #pragma omp parallel for para multi-thread a tarefa.

Eu posso executar meu programa em duas máquinas: vamos chamá-las s e d . Aqui estão as especificações relevantes (por favor, pergunte para quaisquer outras especificações que possam ser importantes):

  • s : Linux Mint 15, SSD Samsung 840 EVO, 8gB RAM, CPU Intel i3 quad-core a 2,40 gHz
  • d : Linux Mint 16, SSD Intel, 8gB RAM, CPU AMD FX-8320 de oito núcleos a 3,5 gHz

Aqui está a grande surpresa: s conclui a tarefa uma ordem de grandeza mais rápida do que d . Já executei o programa algumas vezes em ambas as máquinas e s conclui a tarefa em cerca de 3-4 minutos, enquanto d leva de 12 a mais de 30 minutos (Perdi a noção do tempo). Ambos esgotam totalmente seus núcleos (ou seja, todos os núcleos a 100%) durante o processamento. Este fenômeno é mesmo com programas auxiliares (Firefox, etc.) abertos em s , e nada mais sendo executado em d .

Mas o código é o mesmo. Os sinalizadores do compilador são os mesmos. Até a saída é a mesma. Eu mesmo removi as unidades de s e d , e as troquei e depois executei o programa novamente, apenas para testar se não estava de alguma forma relacionado ao Sistema Operacional . O resultado foi que o fenômeno persistiu: o processador quad-core de 2,4 gHZ superou em muito o processador de 3,5 gHZ de oito núcleos.

Isto é, claro, realmente intrigante e totalmente contra-intuitivo. Alguém pode me dizer o que está acontecendo?

    
por Newb 18.02.2014 / 04:41

1 resposta

1

O que você está falando é o mito do Megahertz, um número maior nem sempre significa melhor, porque a velocidade computacional real depende da arquitetura e dos fatores de design. Aqui está uma boa página sobre o assunto.

    
por 18.02.2014 / 04:56