bamboon y Doron y tienen razón en que hay muchas variables en juego, pero si tiene un tamaño de entrada sintonizable n
, se puede averiguar el fuerte escalar y débil escalar de su código.
El escalado fuerte se refiere a la fijación del tamaño del problema (por ejemplo, n = 1M
) y la variación del número de subprocesos disponibles para el cálculo. El escalado débil se refiere a la fijación del tamaño del problema por el hilo (n = 10k/thread
) y la variación del número de hilos disponibles para el cálculo.
Es cierto que hay muchas variables en funcionamiento en cualquier programa; sin embargo, si tiene un tamaño de entrada básico n
, es posible obtener una apariencia de escalado. En un simulador de n-cuerpo que desarrollé hace unos años, varié los subprocesos para tamaño fijo y el tamaño de entrada por hilo y pude calcular razonablemente una medida aproximada de qué tan bien se escalaba el código multiproceso.
Como solo tiene 4 núcleos, solo puede calcular factiblemente la ampliación de hasta 4 hilos. Esto limita severamente su capacidad para ver qué tan bien se adapta a cargas en gran medida enhebradas. Pero esto puede no ser un problema si su aplicación solo se utiliza en máquinas donde hay recuentos de núcleos pequeños.
Realmente necesita hacerse la pregunta: ¿Esto va a ser utilizado en 10, 20, más de 40 hilos? Si es así, la única forma de determinar con precisión el escalado a esos regímenes es compararlo realmente en una plataforma donde tenga ese hardware disponible.
Nota al margen: Dependiendo de la aplicación, puede que no importe que sólo tiene 4 núcleos. Algunas cargas de trabajo aumentan con el aumento de subprocesos, independientemente de la cantidad real de núcleos disponibles, si muchos de esos subprocesos pasan tiempo "esperando" que algo suceda (por ejemplo, servidores web).Sin embargo, si está haciendo un cálculo puro, este no será el caso
+1 para efectos visuales. Respuesta corta, no se puede hacer más que hacer conjeturas educadas. – Mysticial
@Mysticial pero ¿no deberías poder medir con una herramienta como VTune de Intel? –
@ConradFrix No cuando intentas adivinar el rendimiento en 16 núcleos que no tienes. Puede, por otro lado, usar VTune para perfilar el rendimiento en 4 núcleos, y en función de esos números para intentar extrapolar a 16 núcleos. Eso sería, más o menos, una "conjetura educada". – Mysticial