Pregunta Reloj de la CPU y caché L3 para la programación


Me interesa saber cuánto afectan las diferentes opciones de hardware a los siguientes casos de uso:

  • Programación en Python: muchos cálculos matemáticos pesados ​​usando matrices numpy
  • Aplicaciones de datos en Python y Pandas, utilizando varios GB de datos

Podré paralelizar una minoría de estas aplicaciones utilizando el módulo Threating. La lógica de la mayoría no permitirá esto.

¿Qué importancia tienen las siguientes dos configuraciones de hardware / extensiones para mis propósitos?

  • 2.3 Ghz vs 2.7 Ghz
  • 6mb L3 frente a 8mb L3

0


origen


Tal como está, esto es esencialmente una recomendación de compra. sin embargo Si generalizas un poco la pregunta, tal vez preguntando sobre las ventajas de un caché más 13, por ejemplo, esto podría terminar siendo más útil para un público más amplio. - Journeyman Geek♦


Respuestas:


Suponiendo que está hablando de una Macbook o Macbook Pro de última generación, la diferencia de rendimiento entre los dos modelos que citó (2.3 GHz w / 6 MB de caché L3 frente a 2.7 GHz w / 8 MB de caché L3) hará, aproximadamente, entre un 2% a 15% de diferencia, dependiendo de la carga de trabajo exacta. Definitivamente no es nada estremecedor. Pero todo depende de cuánto tarden sus datos en calcular. Mi cifra de 2% a 15% proviene de lo que he leído en las revisiones y los puntos de referencia de los procesadores portátiles modernos (Ivy Bridge y Haswell), de la misma generación, con diferentes velocidades de reloj. En general, la diferencia de rendimiento de subproceso único entre la más lenta y la más rápida es de alrededor del 25% en puntos de referencia sintéticos extremadamente específicos; 10-15% en casos promedio; y 2% o menos en algunos puntos de referencia que realmente no se acercan a imponer ningún tipo de impuesto al rendimiento de un solo subproceso (o presentan cuellos de botella en otras partes del sistema, por ejemplo, E / S).

Para utilizar un ejemplo ridículo, si llevó 1 millón de años para que los cálculos de su matriz nudosa aparecieran en el procesador de 2.3 GHz, reducir el 15% le ahorraría 150,000 años - o aproximadamente el tiempo que homo sapiens sapiens ha estado dando vueltas.

Obviamente, si tuviera una vida útil de, digamos, 2 millones de años, afeitarse con 150k haría una gran diferencia. Incluso podría ejecutar el cálculo dos veces antes de aterrizar en su lecho de muerte.

Por otro lado, si sus cálculos se ejecutan casi instantáneamente en la mayoría de las CPU modernas, agregar un 15% de rendimiento no importará mucho. Tomemos por ejemplo algo así como ejecutar Google Chrome. ¿Notarás cualquier diferencia perceptible en absoluto en la velocidad a la que se cargan las páginas web y los videos, mientras se ejecuta una Macbook actual con estos dos procesadores diferentes? Dudo mucho que puedas percibir la diferencia. Pero luego, si comenzó a cargar un archivo HTML de 24 GB que tomó varias horas para analizar, la diferencia podría comenzar a acumularse en un tiempo medible.

Al final, sacrificarás el tiempo o sacrificarás dinero cuando hagas cosas que impliquen algoritmos intensivos en cómputo que tardan más de unos pocos milisegundos en completarse. Si obtiene el procesador lento, esperará más tiempo como consecuencia de pagar menos dinero. Si obtiene el procesador rápido, pagará más como consecuencia de no tener que esperar tanto tiempo.


2



¿Podría distinguir entre las dos dimensiones, Herz y L3? Por ejemplo, no estoy seguro de cuánto efecto tiene realmente la memoria caché de 2 mb en L3, dado que mis matrices tienen todos los tamaños en cientos de mb como mínimo: "¿Cuánto podría importar si tiene que leer desde RAM todo el tiempo de todos modos ". Estos porcentajes en realidad son bastante interesantes para mí, una simulación demora alrededor de 5-6 días en mi 2.4 i5, por lo que el 10% ya sería medio día. - FooBar
Honestamente, si estás ejecutando simulaciones que toman ese Por mucho tiempo, le sugiero que busque seriamente algún tipo de plataforma de servidor, o al menos una computadora de escritorio de alta gama, para hacer sus cálculos. Podrías comunicarte con él a través de ssh o algún tipo de escritorio remoto. Las CPU de los portátiles se reducen significativamente en comparación con lo que pueden hacer los servidores. Harías bien con un Core i7-4960X overclockeado más o menos. - allquixotic
Para velocidad de reloj vs caché, yo diría que depende tremendamente de la localidad de caché de tus algoritmos. No estoy seguro de cuán configurable es python / numpy, o si puede controlar directamente el orden de acceso a los datos, pero si puede obtener una buena localidad de caché y repetidamente golpear los mismos datos una y otra vez, más caché podría importar significativamente más que más velocidad de reloj. Por otro lado, si la localidad de caché de su algoritmo es pobre, la cantidad bruta de instrucciones por segundo (que proviene de la velocidad del reloj) sería más importante. - allquixotic
Para describir la localidad de caché: imagina a dos personas diferentes comiendo en dos buffets separados, que se presentan como mesas largas con platos variados. Ambos tienen mucha hambre y eventualmente limpiarán la mesa del buffet. Uno de ellos come el 100% de las papas antes de tocar cualquiera de los otros alimentos, mientras que el otro toma 1 cucharada de cada artículo en su plato, come eso y repite. El tipo que come exclusivamente un alimento a la vez antes de limpiarlo tendría una localidad de caché excelente en su "algoritmo". El que come un poco de todo tiene una pobre localidad de caché. - allquixotic