Mejora de desempeño de OpenMPI, contribución del CCAD-UNC

Peter Cushing, Top Secret, Lens EyeEl licenciado Carlos Bederián, quién ademas de ser docente de la FAMAF y profesional principal del CONICET es uno de los integrantes históricos del CCAD-UNC, introdujo una mejora de desempeño en una de las implementaciones más usadas a nivel mundial de Message Passing Interface (MPI). Dicha mejora tendrá un impacto considerable en el rendimiento de todas las aplicaciones que utilizan la biblioteca OpenMPI, reduciendo de este modo los tiempos de cálculo y de consumo eléctrico de la mayoría de clusters HPC del planeta, incluyendo los equipos publicados en la lista TOP500.

Durante el Periodo de uso exclusivo de Mendieta verano 2017 se ejecutaron diversos programas de manera intensiva en grandes porciones de nuestro cluster. Una de las tareas de nuestros técnicos es el monitoreo regular de la ejecución de las aplicaciones a fin de maximizar el uso de la infraestructura computacional.

Durante la ejecución de Quantum ESPRESSO, el Lic. Bederián usando perf, notó que una parte importante del tiempo de ejecución se la llevaba la función opal_progress que está relacionada con los llamados a la función MPI_Wtime, dentro de la implementación OpenMPI. Como no debería haber sobrecarga alguna en una función que solo mide el tiempo, Carlos empezó a investigar por qué tomaba tanto tiempo en arquitecturas modernas como la que usamos en Mendieta (Ivy Bridge).

Su aporte fue explorar todo el stack trace y dar con el responsable de esta demora innecesaria. La modificación fué reemplazar una instrucción en assembler dentro de opal_sys_timer_get_cycles, además de cambiar la lógica para evitar en lo posible usar la operación de división de enteros que resulta cara.

La discusión del pull-request se puede ver en Improve x86-64 timer performance #2926 que finalmente fué aceptado ayer en el head por Nathan Hjelm y formará parte de openmpi-2.0.3.

En tests preliminares se logró una mejora decente en los tiempos de ejecución de QUANTUM Espresso y de NPB.

Para tener una idea de lo que significa este aporte, basta con revisar la licencia de la biblioteca y ver las organizaciones que contribuyen o han contribuido en el código. Se trata de Centros de HPC reconocidos internacionalmente o empresas multinacionales con recursos económicos y/o materiales que son órdenes de magnitud más grandes que los nuestros.

Es importante también señalar que el trabajo del CCAD-UNC respeta los standards de calidad de los grandes centros de cálculo de los países desarrollados a pesar del déficit en equipamiento que caracteriza nuestro país desde el surgimiento de la computación de alto desempeño hasta la fecha.