E o quad core finalmente prevaleceu…
Resolvi tomar outro rumo de teste. Parei com as multiplicações de matrizes e resolvi pegar uma tarefa que eu sei que consome muito processamento e que eu poderia deixar cada núcleo executando sozinho sem ficar interagindo com a thread de controle a cada passo. Eu já tinha um programa de teste que calculava todos os números primos em uma faixa de 10000 números a partir de 99.999.999.000.001 (como se fala esse número?), o fato é que os números são tão grandes que a verificação de primalidade (saber se é ou não primo) toma muito tempo *para cada um dos números* do intervalo.
Pois bem, cada núcleo recebeu um conjunto de números para testar, sendo que o Turion X2 tem dois núcleos então o intervalo de 10000 números foi dividido em 2, e no Phenom X4 que tem quatro núcleos o mesmo intervalo foi dividido em 4. Somando a isso a diferença de clock, Turion 2.1 e Phenom 3.4, o resultado foi impressionante!
Lembrando que o problema era conseguir que o programa em Lua, interpretado, executasse mais rápido no Phenom do que no Turion, coisa que não estava acontecendo com o programa de multiplicação de matrizes, onde o Phenom estava 2x mais lento.
Neste caso, como o programa foi preparado para deixar cada núcleo executar sozinho sem intervenções é possível aproveitar todo o potencial do núcleo (e olha que eu desisti de usar a técnica de aumentar a prioridade dos processos em relação aos outros programas do sistema) então como o Phenom tem mais núcleos e tem um clock 1.3GHz maior que o Turion então a diferença é realmente muito grande. No final o programa ficou 8.2x mais rápido no Phenom.
Mas só consegui perceber esse resultado porque mudei a estratégia de teste para um programa que tinha menos dependência de dados e de controle.
O que nós aprendemos hoje amiguinhos?
Quando você faz um programa paralelo tenha muito cuidado, o simples fato de aumentar o clock e a quantidade de núcleos *não* garante melhor desempenho. Isto porque o programa que você fez pode ter pequenas brechas que no processador mais rápido limitam o ganho por conta da quantidade comunicação ou sincronismo por exemplo. O controle por passo, como acontece na versão atual do meu programa de multiplicação de matrizes (ok vou mudar isso) sobrecarregou o processor com comunicações e mesmo sendo mais rápido e com mais núcleos, todo o desempenho foi sacrificado.
Assim que eu fizer os novos testes de multiplicação de matrizes eu coloco aqui qual o detalhe que quebrou o desempenho.


Parabéns pelo resultado !!
Resumindo, o melhor desempenho de um processador é obtido com uma aplicação meio que fantasiosa, ou seja, com pouca dependência de dados e controle, certo ?!
Pergunto, professor:
Um usuário comum que utiliza editores de texto, planilhas, email e internet consegue perceber na prática a superioridade de um quad ?
Abraço
Pelos resultados parece que o seu algoritmo de multiplicacao de matrizes estava piorando a performance conforme o aumento do numero de CPU cores. Voce ja testou ele no Phenon com apenas um CPU core ligado so pra comparar?
Eu nao sou professor, mas respondendo a pergunta do Wesley a minha resposta seria: “ate essa ultima leva dos processadores da Intel valia mais a pena pegar um dual core com um clock mais alto – poucas aplicacoes usariam os 4 cores e normalmente um quad funciona numa frequencia mais baixa que um dual core por causa do calor gerado. Hoje em dia, entretanto, os processadores da linha nova da Intel usam uma tecnica chamada Turbo Core que ‘desliga’ CPU cores desocupados pra diminuir o calor gerado e em troca aumenta a frequencia dos cores ocupados. A AMD tambem tem uma tecnica bem parecida nos CPUs mais novos dela. Isso ajuda a tornar um quad ou hexa-core mais atraente pra um numero maior de usuarios”.
Grande abraco,
Pedro
Sim, mas isso só acontece quando você usa um processador que tem uma diferença no clock muito grande, como foi o caso, além de ter 2 núcleos a mais o processador novo tinha 1.3GHz a mais. Quando migrei para o exemplo de verificação de números primos, que é realmente independente de comunicação, o novo processador mostrou um ganho de 8.2x