Optimización de cómputo QM/MM empleando arquitecturas masivamente paralelas - Ferrería, Manuel (2015)
Este trabajo se enfoca en acelerar cálculos de estructura electrónica mediante el uso de arquitecturas de procesadores especializados en cómputo masivos. Se partió de LIO, una implementación ya existente de los algoritmos dados por la Teoría de los Funcionales de la Densidad (DFT) que ya hacía uso de placas de video para cómputo general (GPGPU). Este programa se adaptó para hacer uso de las prestaciones ofrecidas por multiprocesadores, GPUs modernas, y para el coprocesador numérico Xeon Phi de Intel. Las mejoras se enfocaron en la sección de código computacionalmente intensiva: el cálculo de la energía de intercambio y correlación. En GPU se buscó cambiar la estrategia de paralelización en la estructura del cómputo y aprovechar la mayor cantidad de memoria de las placas para almacenar más resultados intermedios. La implementación en CPU y Xeon Phi es compartida, aprovechando las prestaciones del compilador para explotar vectorización y paralelismo de manera portable. Se estudió el uso de algoritmos de partición de trabajo y balance de cargas para mantener una división equilibrada de trabajo entre unidades de cómputo, notando el impacto de estas decisiones en la escalabilidad de la implementación. Las mejoras logradas en el rendimiento de la implementación son de 8 veces por sobre la original en GPU, y de 22 veces en el caso de CPU, para los casos de prueba y configuraciones de hardware usados. Los resultados en Xeon Phi resultan comparativamente inferiores a los obtenidos con las otras arquitecturas pero se lograron identificar puntos claves del coprocesador que permitirán continuar con la tarea de optimización. En GPU se implementó y estudió, además, el uso de múltiples placas de video en una misma plataforma, escalando linealmente en función de la cantidad de los dispositivos usados para algunos casos. Adicionalmente, se observó que las implementaciones en CPU y GPU tienen un rendimiento complementario con respecto a las tareas necesarias para el cálculo de la energía de intercambio y correlación. Esto lleva a pensar que puede lograrse mejoras muy significativas con una implementación híbrida CPU-GPU, usando el hardware ya disponible. Por último, se realizó una comparativa de las arquitecturas estudiadas desde un punto de vista pragmático en el diseño de clusters de cómputo. Se espera que las técnicas expuestas en este trabajo sirvan como guía para optimizar aplicaciones de índole similar mediante el uso de estas arquitecturas, y para decidir de manera informada entre las mismas según la clase de problema a resolver.