Questão Relógio da CPU e cache L3 para programação


Estou interessado em saber o quanto diferentes escolhas de hardware afetam os seguintes casos de uso:

  • Programação em Python: muitos cálculos matemáticos pesados ​​usando matrizes numpy
  • Aplicações de Dados em Python e Pandas, usando vários GB de dados

Eu serei capaz de paralelizar uma minoria desses aplicativos usando o módulo Threating. A lógica da maioria não permitirá isso.

Qual a importância das seguintes configurações / extensões de hardware para os meus propósitos?

  • 2,3 GHz vs 2,7 GHz
  • 6mb L3 vs 8mb L3

0


origem


Tal como está, isto é essencialmente uma recomendação de compra. Contudo Se você generalizasse a pergunta um pouco - talvez perguntando sobre as vantagens de mais cache l3, por exemplo, isso pode acabar sendo mais útil para um público mais amplo. - Journeyman Geek♦


Respostas:


Supondo que você esteja falando de um Macbook ou Macbook Pro da atual geração, a diferença de desempenho entre os dois modelos citados (2,3 GHz com cache L3 de 6 MB vs. 2,7 GHz com cache L3 de 8 MB) produzirá, aproximadamente, entre uma diferença de 2% a 15%, dependendo da carga de trabalho exata. Definitivamente não é nada de quebrar a terra. Mas tudo depende de quanto tempo leva para seus dados serem calculados. Meu percentual de 2% a 15% vem do que li em avaliações e benchmarks de processadores modernos (Ivy Bridge e Haswell), da mesma geração, com taxas de clock diferentes. Geralmente, a diferença de desempenho single-thread entre a mais lenta e a mais rápida é de cerca de 25% em benchmarks sintéticos extremamente específicos; 10-15% em casos médios; e 2% ou menos em alguns benchmarks que realmente não chegam perto de taxar o desempenho single-thread (ou exibir gargalos em outras partes do sistema, por exemplo, I / O).

Para usar um exemplo ridículo, se levasse 1 milhão de anos para que seus cálculos de matriz numpy aparecessem no processador de 2,3 GHz, o corte de 15% economizaria 150.000 anos - ou sobre o tempo que homo sapiens sapiens foi mucking ao redor.

Obviamente, se você tivesse uma vida útil de, digamos, 2 milhões de anos, raspar 150k faria uma enorme diferença. Você pode até conseguir executar o cálculo duas vezes antes de pousar em seu leito de morte.

Por outro lado, se seus cálculos forem executados quase instantaneamente na maioria dos CPUs modernos, adicionar 15% de desempenho não importará muito. Tomemos por exemplo algo como executar o Google Chrome. Você vai notar qualquer diferença perceptível em tudo na velocidade em que páginas da Web e vídeos são carregados, durante a execução de um Macbook atual com esses dois processadores diferentes? Eu duvido severamente que você seria capaz de perceber a diferença. Mas se você começou a carregar um arquivo HTML de 24 GB que levou várias horas para analisar, a diferença pode começar a se acumular em um tempo mensurável.

No final, você vai sacrificar o tempo, ou sacrificar dinheiro, quando estiver fazendo coisas envolvendo algoritmos computacionalmente intensivos que levam mais que alguns milissegundos para serem concluídos. Se você pegar o processador lento, você vai esperar mais tempo por pagar menos dinheiro. Se você obtiver o processador rápido, pagará mais em consequência de não ter que esperar tanto tempo.


2



Você poderia, talvez, distinguir entre as duas dimensões Herz versus cache L3? Por exemplo, eu não tenho certeza de quanto efeito os 2mb de cache L3 realmente têm, dado que minhas matrizes são todas de tamanho nas centenas de mb, pelo menos: "Quanto poderia potencialmente importar, dado que ele tem que ser lido de RAM o tempo todo de qualquer maneira ". Estas porcentagens são realmente muito interessantes para mim, uma simulação leva cerca de 5-6 dias no meu 2.4 i5, então 10% já seria meio dia. - FooBar
Honestamente, se você está executando simulações que levam aquele Por muito tempo, eu sugeriria seriamente procurar em algum tipo de plataforma de servidor, ou pelo menos um desktop high-end, para fazer suas computações. Você pode se comunicar com ele por meio do ssh ou de algum tipo de área de trabalho remota. CPUs laptop são significativamente reduzidas em comparação com o que os servidores podem fazer. Você faria bem com um Core i7-4960X com overclock ou mais. - allquixotic
Para a velocidade do clock versus cache, eu diria que depende tremendamente da localização do cache de seus algoritmos. Não tenho certeza de como o python / numpy é configurável, ou se você pode controlar diretamente a ordem de acesso aos dados, mas se conseguir obter uma boa localidade de cache e repetidamente bater repetidamente nos mesmos dados, mais cache poderá importar significativamente mais do que mais Velocidade do relógio. Por outro lado, se a localidade do cache do seu algoritmo for fraca, a quantidade bruta de instruções por segundo (que vem da velocidade do clock) seria mais importante. - allquixotic
Para descrever a localidade do cache: imagine duas pessoas diferentes comendo em dois buffets separados, que são dispostos em mesas longas com pratos variados. Ambos estão realmente com fome e acabarão limpando a mesa do bufê. Um deles come 100% das batatas antes de tocar em qualquer outro alimento, enquanto o outro pega 1 colher de cada item em seu prato, come e repete. O cara que come exclusivamente uma comida de cada vez antes de limpá-la teria uma excelente localização de cache em seu "algoritmo". Aquele que come um pouco de tudo tem localidade de cache ruim. - allquixotic