viernes, 14 de diciembre de 2018

modelos de ejecución paralela, pequeño detalle

Hace poco encontré un programa que genera algunas combinaciones tomadas de un conjunto de elementos n.
Resulta que el tiempo de ejecución en mi computadora con 4 núcleos (cores) es de 15 segundos.
Luego tuve la oportunidad de utilizar un equipo para HPC o lo que se traduce como Computación de Altas Prestaciones, en la que tengo mucha más memoria RAM, de 16 a 96 Gb. Así como en lugar de 1 solo CPU con 4 núcleos, como 23 CPUs.
Al revisar el uso de recursos en la computadora, los núcleos recibían carga de manera automática. Al ejecutar en el Cluster esperaba que el tiempo de ejecución descienda a menos de 15 segundos.
Sin embargo, al revisar el consumo de CPU ví que solo se utilizaba un CPU y que el tiempo de ejecución ea de 19 a 25 segundos.
Averiguando un poco, encontré que Java solo usa paralelización basada en hilos (threads), es decir con memoria compartida y para poder sacarle el jugo al cluster se debe utilizar paquetes adicionales como JPPF (https://www.jppf.org/). Algo para probar.