High Performance Computing

This group researches on improving the efficiency of high-performance computing systems. To that end, it is necessary to take different approaches that require a certain level of cooperation and integration: microarchitecture and multiprocessor architecture, compilers, operating systems, analysis, visualization and prediction tools, algorithms and applications. When measuring efficiency, and besides the classical approach that includes the execution time, we will use metrics that consider design aspects (such as cycle time, area and power dissipation of the processor and memory hierarchy, scalability of the microarchitecture and multiprocessor organization), systems correctness, portability and easy-to-use of the programming models and performance when running on multiuser, multiprogrammed and distributed environments, among others.

The Obisidian I² HPC group conducts research in several areas, including optimizing compilers, performance modeling and optimization, parallel algorithms, and software engineering. Example projects include static and dynamic analysis of software for building application performance models, ensuring software quality, or detecting security vulnerabilities; using machine learning and other approaches to model run-time characteristics of software; developing data mining techniques to study and improve HPC software engineering processes; applying natural language processing methods to study and improve HPC software developer productivity; designing new algorithms or improving existing ones in several application areas, including large-scale dynamic graphs, computational physics, and computational biology.