Número ideal de threads a serem usados ​​para melhor processamento paralelo em um i5

Número ideal de threads a serem usados ​​para melhor processamento paralelo em um i5

Estou interessado em executar algum processamento razoavelmente pesado em meu desktop/laptop (não tão ruim a ponto de exigir um cluster, mas precisa de uma boa máquina doméstica). Minha pergunta é quantos threads criar para realizar o trabalho mais rapidamente (suponha que o aplicativo distribua a carga de trabalho com pouquíssimas despesas gerais).

Eu normalmente criaria um thread por processador, mas queria saber se a capacidade de hyperthreading no Core i5/i7 significa que eu deveria realmente criar dois threads por processador (ou seja, um thread por processador virtual). Ninguem sabe?

*Obviamente, uma resposta razoável seria experimentar e ver. Como leva cerca de 12 horas para ser executado, prefiro acertar na primeira vez, mas ficarei feliz em postar os resultados se tiver a chance de executar nos dois sentidos.

Responder1

Esta é uma questão aberta que requer benchmarking caro. Eu pessoalmente vi isso acontecer nos dois sentidos. A menos que você realmente tenha estragado seu multithreading, a diferença será de cerca de +-10%, então vale a pena tentar dos dois lados. Mesmo que demore muito.

Muitos clusters de computação de alto desempenho criados a partir de componentes Intel têm o HT desativado. Isto é por uma boa razão, pois esses códigos tendem a saturar o hardware e, portanto, seu desempenho está muito ligado à saturação do acesso à memória - o que será pior no caso do HT, pois os threads estão competindo e ligando e desligando. Verhttp://semiaccurate.com/2012/04/25/does-disabling-hyper-threading-increase-performance/.

Mas se o seu código não estiver altamente ajustado, você poderá não experimentar o mesmo aumento de desempenho, consultehttp://semiaccurate.com/2012/04/25/does-disabling-hyper-threading-increase-performance/.

insira a descrição da imagem aqui

Parece que, para a computação de CPU única, desabilitar o hyperthreading pode aumentar alguns softwares em 1%, mas também prejudicar outros softwares significativamente mais. Talvez em cerca de 10%.

Isso significa que, a menos que seus benchmarks indiquem o contrário, você deve criar 1 thread por núcleo hiperthreaded/real em sua máquina desktop.

Responder2

Estou falando completamente de experiências com dobramento F@H aqui ao dizer que um único thread por núcleo (seja virtual ou físico) é melhor.

Ao dizer isso, pode ser uma boa ideia deixar um único núcleo livre para lidar com processos em segundo plano e tarefas gerais do computador, já que mesmo um pouco de uso pode deixar uma tarefa de joelhos.

Verifique a afinidade da CPU se quiser acompanhar onde as coisas estão sendo executadas. Como regra geral, atribua anúcleos físicos primeiro(ou seja:aténumerações), depois os núcleos do hyperthread.

informação relacionada