Número ideal de encadeamentos a serem usados para o melhor processamento paralelo em um i5 [fechado]

1

Estou interessado em executar algum processamento razoavelmente pesado em meu desktop / laptop (não tão ruim que exija um cluster, mas precisa de uma boa máquina doméstica). Minha pergunta é quantos threads criar para fazer o trabalho mais rapidamente (suponha que o aplicativo distribui a carga de trabalho com muito poucas sobrecargas).

Eu normalmente criaria um thread por processador, mas eu queria saber se o recurso de hyperthreading no Core i5 / i7 significa que eu realmente deveria estar criando dois threads por processador (ou seja, um thread por processador virtual). Alguém sabe?

* Obviamente, uma resposta razoável seria tentar e ver. Como leva cerca de 12 horas para rodar, eu prefiro acertar na primeira vez, mas ficarei feliz em postar os resultados se tiver a chance de executá-los nos dois sentidos.

    
por Alex 31.10.2012 / 02:22

2 respostas

1

Esta é uma questão aberta que requer benchmarking caro. Eu pessoalmente vi isso acontecer nos dois sentidos. A menos que você realmente estrague sua mulitthreading, a diferença será de + -10%, então vale a pena tentar nos dois sentidos. Mesmo se demorar muito tempo.

Muitos clusters de Computação de Alto Desempenho criados a partir de componentes da Intel têm o HT desativado. Esta é 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, já que as threads estão sendo compostas e ativadas e desativadas. Consulte o link .

Mas se o seu código não for altamente ajustado, você pode não ter quase o mesmo aumento de desempenho, veja link .

Parece que, para a computação de CPU única, a desativação do hyperthreading pode aumentar alguns softwares em 1%, mas também prejudica outros softwares significativamente. Talvez por ~ 10%.

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

    
por 31.10.2012 / 02:52
0
Estou falando completamente de experiências com o F @ H dobrando aqui dizendo que um único thread por núcleo (seja virtual ou físico) é o melhor.

Ao dizer isso, pode ser uma boa idéia deixar um único núcleo livre para lidar com processos em segundo plano e tarefas gerais de computador, pois até mesmo um pouco de uso pode colocar a tarefa de joelhos.

Observe a afinidade da CPU se quiser acompanhar o andamento das coisas. Como regra geral, atribua a núcleos físicos primeiro (isto é, numerações par ) e, em seguida, os núcleos de hiperterra.

    
por 31.10.2012 / 02:41