![]() |
![]() |
|
![]() |
Compilación
y ejecución del código
El entorno de compilación juega un papel importante en este tipo de arquitecturas. En este caso la compilación y la ejecución del código fue posible gracias al ambiente de programación y desarrollo LAM (Local Area Multicomputer), el cual permite que un cluster dedicado o una red de computadoras, puedan funcionar como una computadora paralela. LAM incluye una versión completa de las librerías estándar de paso de mensajes MPI. Es importante mencionar que los archivos de salida de ZEUS-MP, pueden ser escritos en formato ASCII o binario. En nuestro caso utilizamos un tipo de archivos binarios, generados con ayuda del software HDF (Hierarchical Data Format), que además de permitirnos compactar el tamaño de éstos, la información que contienen se puede manipular sin ningún problema, independientemente de la plataforma empleada para escribir los datos. Análisis
de rendimiento Para este trabajo se utilizaron 5 problemas astrofísicos, listados en la tabla 3. Cada uno de los problemas se ejecutó en 1, 2, 4, 8, 16 y 32 procesadores. Los tiempos de procesamiento se fueron reportando en tablas con la siguiente información. En la primera columna se tiene el número de procesadores N que se utilizaron para correr el código; en la segunda, el tiempo de CPU (medido en segundos), empleado en cada corrida; en la tercera el número de zonas que resuelve el código por segundo; en la cuarta, el tiempo de reloj pared, es decir, el tiempo que transcurre desde que empieza a correr el código, hasta terminado el cálculo numérico, tomando en cuenta las posibles pausas que pueda hacer el sistema. También está medido en segundos. Finalmente, la última columna muestra los valores del cociente, entre el tiempo de CPU de un procesador y el tiempo que tarda en correr el programa en N procesadores. Por otro lado, en la figura 2, el eje horizontal representa el número de procesadores, mientras el eje vertical nos da el cociente entre tiempos de CPU, T1/TN. Debido a que los resultados estudiados en todos los casos son muy similares, únicamente analizaremos el caso 1. Caso
1 (0nda explosiva-XYZ-MHD) En los resultados presentados en la tabla 2, se observan dos aspectos muy interesantes. Primero, conforme se utilizan más procesadores, el tiempo de CPU comienza a decrecer considerablemente, desde un factor de 5/9 para N=2, hasta un factor de 1/15 más pequeño para el caso de 32 procesadores. Con este resultado se muestra claramente una de las bondades del cluster: al ejecutar exactamente el mismo programa, en la misma máquina, el tiempo de procesamiento irá disminuyendo considerablemente, conforme se utilicen más procesadores. La figura 2 muestra explícitamente este efecto. De hecho puede verse que la curva nunca se aplana, sino que crece conforme aumenta el valor de N. Por otro lado, el tiempo de reloj de pared de las corridas, desafortunadamente va aumentando conforme se utilizan más procesadores. Por ejemplo, llega a ser 4 veces más grande que el tiempo de CPU cuando utilizamos 32 procesadores. Esto puede ser interpretado de la siguiente manera: los nodos esclavos están siendo compartidos con otros usuarios y no pueden ser aprovechados de manera óptima. Este inconveniente tal vez no sea importante en ejecuciones de programas que tarden horas, pero es muy significante cuando hay simulaciones de problemas astronómicos que llegan a emplear semanas de ejecución, por lo que se recomienda que este tipo de complejos de computadoras se utilice de manera dedicada y no compartida, para obtener un beneficio ideal. (Se recomienda al lector visitar la página de ZEUS-MP, donde podrá encontrar los rendimientos del código en diferentes computadoras, cuando los procesadores son dedicados). |