O que eu deveria estar olhando para acelerar um programa que precisa de muita potência e núcleos de processador?

4

Eu quero construir um sistema para executar um programa especializado específico o mais rápido possível (atualmente, pode levar até 50 horas para executar um laptop no meu processador I5).

O programa está escrito em VB6, faz muita compactação de dados / números e usa apenas um núcleo. No entanto, há um arquivo em lotes onde eu posso abrir quantas instâncias do programa eu quiser, e o arquivo em lote então agrupa as informações resultantes como se fossem todas apenas uma corrida (eu sei).

Portanto, as duas coisas que encontrei até agora que ajudam a acelerar são mais núcleos e a velocidade (GHz) dos processadores. Se os processadores usarem o turbo para aumentar a velocidade, eles precisarão de um ou dois núcleos não utilizados para usá-lo.

Eu não quero um servidor, então o que eu deveria estar procurando (em um computador) ao projetar / especificar um sistema para fazer isso?

    
por Rodney 05.04.2013 / 00:42

2 respostas

2

"O programa está escrito em VB6, faz muitos dados / processamento de números e usa apenas um núcleo" estilo Oldschool! Há algumas coisas que você gostaria de levar em conta aqui. Em primeiro lugar, que a maioria das extensões modernas não vai te fazer muito bem, então você está procurando por uma única velocidade segmentada.

"Então as duas coisas que encontrei até agora que ajudam a acelerar são mais núcleos, e a velocidade (Ghz) dos processadores" GHZ, infelizmente não é um ótimo indicador de velocidade atualmente. As arquiteturas usadas pelos sistemas modernos divergem muito e você pode acabar comprando um sistema que executa menos bem com base na velocidade. Embora eu saiba que pode haver boas razões para não reescrever o programa, usar uma linguagem moderna, recursos modernos de processador e programar o aplicativo para aproveitar o processamento paralelo (ou talvez até mesmo um GPGPU) aumentaria maciçamente a velocidade com que você está correndo as coisas.

Eu provavelmente procuraria uma referência que fizesse um único desempenho segmentado em relação ao custo - a senha tem e deve ajudar você toma uma decisão informada. Eu usei uma pesquisa no google para encontrá-lo - eu usei o termo 'single thread performance; Eu notei que os melhores processadores para o preço parecem ser todos intel. Não se esqueça de testar o aplicativo com ou sem hyperthreading ativado, já que muitos aplicativos não funcionam bem com o HT.

Outra abordagem que considero é um conjunto de computadores menores e mais baratos que podem custar menos do que um sistema mais caro, já que essa tarefa parece ser 'trivialmente paralelizável'. Você pode até tentar usar o amazon EC2 para descarregar e fazer os cálculos e, em seguida, refazê-lo em sua própria área de trabalho . Dependendo do tempo de execução de cada instância do programa, você poderá até mesmo fazer isso com a camada gratuita.

Para uma visão mais científica do que é realmente gargalo no seu programa, dê uma olhada no xperf. Eu não estou familiarizado com isso, então eu não posso ajudar muito lá, mas há muita informação boa por aí , e deve ajudá-lo a trabalhar exatamente onde você precisa colocar mais recursos.

    
por 05.04.2013 / 01:03
0

Você tem sorte. Como você pode aproveitar vários núcleos, uma das medidas mais populares de desempenho da CPU, o Benchmark da CPU do PassMark deve fazer um bom trabalho. Você pode simplesmente escolher as CPUs com a mais alta taxa de CPU da PassMark s.

    
por 05.04.2013 / 01:13