Resumen
En muchas aplicaciones de computación científica, la parte principal del cálculo es la resolución numérica de un problema algebraico de
autovalores. Los métodos iterativos de proyección son ventajosos en comparación con otros métodos en los casos en que las matrices
son grandes y dispersas y solo una pequeña fracción del espectro es necesaria. La biblioteca software SLEPc, desarrollada por el equipo
proponente, proporciona métodos iterativos robustos y eficientes para este problema en computadores paralelos, y es utilizado en todo el
mundo en muchas disciplinas científicas.
Los usuarios de SLEPc están abordando problemas cada vez más grandes, tanto en lo que respecta a las dimensiones de las matrices
como al número de autovalores a calcular. Estos cálculos masivamente paralelos se realizan en supercomputadores que a menudo tienen
una arquitectura híbrida, con cientos o miles de nodos multi-núcleo combinados con GPUs y/o aceleradores. Los algoritmos
implementados en SLEPc deben adaptarse y mejorarse para poder resolver estos problemas de forma escalable, aprovechando de forma
eficiente el hardware disponible. Además, es interesante incorporar nuevos métodos que tengan mejores propiedades de escalabilidad
que los disponibles actualmente.
Los desarrollos del proyecto van encaminados a mejorar la escalabilidad desde diferentes perspectivas. Cuando sea posible se utilizará
una metodología de paralelismo jerárquico, especialmente en el caso de calcular un porcentaje elevado del espectro, en el contexto de
técnicas de disección del espectro o métodos de integral de contorno. Se hará un énfasis especial en los métodos que puedan alcanzar
una intensidad aritmética alta, como por ejemplo los métodos de bloques (LOBPCG y similares). La implementación debe realizarse de
forma que las operaciones de estos algoritmos realicen un uso eficiente del paralelismo de memoria compartida y los aceleradores (GPU).
También se explorarán las técnicas algorítmicas de evitación de comunicación, como los métodos de Krylov de s pasos, las variantes
segmentadas, y los métodos eficientes para ortogonalización a bloques. Por último, se investigarán los métodos escalables desde el
punto de vista algorítmico, como las técnicas multi-malla y de descomposición de dominio multi-nivel, de forma que la convergencia de los
métodos no dependa de la resolución de la malla utilizada en la discretización.
Todos los códigos desarrollados durante el proyecto se analizarán, desde el punto de vista de las prestaciones paralelas, en diversas
plataformas, desde ordenadores de sobremesa con una GPU hasta grandes supercomputadores. Además, los nuevos métodos se
incluirán en sucesivas versiones de SLEPc.