lunes, julio 06, 2009

Could faster chips translate into slower computers?

Ya que el otro día mejoramos la ejecución en el super PC-1 (18 minutos 31 segundos), se me ha ocurrido compilar y ejecutar el programa Visual C++ en mi viejo portátil.

Con el Dev C++ sin optimizar tardaba 21 minutos 9 segundos y tenía curiosidad por saber lo que iba a mejorar.

Han sido ni más ni menos 14 minutos 20 segundos, lo que significa que ¿es la máquina más rápida? ¡Imposible!

Algo raro está ocurriendo... el resultado no es lógico, o tal vez sí...

Así es la utilización de la CPU al comenzar la ejecución. 100% de uso del único procesador hasta el final.



Y así la relajación final:


El AMD64 es multinucleo y se comporta diferente. El XP lo ve como si fueran 3 procesadores. El caso es que el uso de la CPU se mantiene bastante constante en un 34% de uso.


Cuando termina:


Esto hay que estudiarlo un poco pero el punto de partida puede ser este:

Could faster chips translate into slower computers?

Esta es la pregunta que se hicieron en este artículo de la revista Fortune e indica una posibilidad que puede estar ocurriendo, o tal vez no.

Saludos.

2 comentarios:

tayoken dijo...

¿Has probado a ejecutar en el multinucleo el programa dándole "afinidad" a un solo procesador y que los otros dos queden libres?

Yo apostaría que mejorará, al parecer el cambio de procesador no está muy logrado, yo también me he encontrado con este caso, un servicio de red que podía dar más respuestas por segundo si se ponía en un único procesador.

Eso sí, si implementas tu programa para que corra en paralelo en todos los procesadores, entonces irá "follao"!

Mikelats dijo...

¡Hola chaval!

Tienes razón, hay que probar la ejecución forzando. Mañana en cuanto tenga un momento lo lanzo y a ver que pasa (es que no tengo el PC en casa :-(

Para la ejecución en paralelo la cosa va a ser más sencilla de lo esperado. Resulta que aunque el programa C es totalmente monoproceso, el otro escrito en FORTRAN (debió ser el programa original), tiene directivas para ejecución en paralelo en un CRAY.

Así que el trabajo duro ya está hecho :-)

Saludos.