Se ofrece un conjunto diverso de entornos de compilación para los lenguajes C, C++ y Fortran. Estas herramientas permiten optimizar el rendimiento de los códigos de simulación según la arquitectura del nodo de cómputo empleado.
| Compilador | Lenguaje | Versiones Disponibles | Optimización de Arquitectura |
|---|---|---|---|
| gcc | C/C++, Fortran |
11.5 (sistema), 15.1 | Genérico (multiplataforma) |
| clang/llvm | C/C++ |
14.0.6, 20.1.6 | Genérico (multiplataforma) |
| intel-oneapi | C/C++, Fortran |
2025.3.1 | Específica para CPUs Intel |
| aocc | C/C++, Fortran |
5.0.0 | Específica para CPUs AMD |
Configuración del entorno
Por defecto, el compilador del sistema operativo es GCC 11.5, el cual se encuentra accesible directamente tras iniciar sesión.
Para utilizar cualquier otra suite de compilación o una versión específica, es necesario cargar el entorno correspondiente mediante el administrador de módulos/entornos del sistema. Esto garantiza que las variables de entorno (PATH, LD_LIBRARY_PATH) se configuren correctamente evitando conflictos entre versiones. (Consulte la sección correspondiente del manual para más detalles sobre la gestión de módulos).
¿Qué compilador usar?
La elección del compilador óptimo influye significativamente en el rendimiento y en la capacidad de vectorización de los binarios resultantes. Se recomiendan las siguientes directrices basadas en la arquitectura del hardware de destino:
-
Optimización por fabricante (Recomendado para rendimiento máximo):
-
Nodos con CPU Intel: Se aconseja utilizar intel-oneapi. Este compilador emplea de forma óptima las instrucciones vectoriales avanzadas (como AVX-512) en procesadores Intel.
-
Nodos con CPU AMD: Se aconseja utilizar aocc (AMD Optimizing C/C++ Compiler), diseñado específicamente para extraer el máximo rendimiento de la microarquitectura Zen de AMD.
-
Nota de compatibilidad: Evite ejecutar binarios compilados con herramientas específicas de un fabricante en procesadores de la competencia (por ejemplo, un binario generado con Intel en una CPU AMD), ya que esto suele penalizar el rendimiento o provocar fallos de ejecución por instrucciones no soportadas.
-
-
Compiladores genéricos (Portabilidad y compatibilidad):
-
Si desconoce a priori en qué tipo de nodo (Intel o AMD) se asignará su tarea a través del gestor de colas, o si experimenta problemas de compatibilidad al compilar el código fuente con las suites de los fabricantes, utilice gcc o llvm/clang. Ambas son herramientas maduras, robustas y de alta calidad que generan binarios con un rendimiento sólido y predecible en entornos heterogéneos.
-
Notas sobre versiones específicas
gcc 11.5.0: soporta hasta la microarquitectura zen4 de AMD. Para zen5 sería necesario utilizar gcc 15.1 o aocc
LLVM/Clang 14.0.6: No soporta Zen 4 o Zen 5
LLVM/Clang 20.1.6: Soporte completo para Zen 4 (-march=znver4, EPYC Genoa) y soporte nativo inicial/avanzado para la arquitectura Zen 5 (-march=znver5, EPYC Turin), optimizando el uso de AVX-512 en estas familias
Bibliotecas matemáticas y MPI
Para el desarrollo y ejecución de simulaciones físicas de alto rendimiento (HPC), los compiladores deben enlazarse adecuadamente con las bibliotecas de álgebra lineal y las interfaces de paso de mensajes:
-
Bibliotecas Matemáticas (BLAS, LAPACK, FFTW):
-
Al utilizar la suite de Intel, se recomienda enlazar con Intel MKL (Math Kernel Library).
-
Al utilizar AOCC o GCC en nodos AMD, se recomienda el uso de AOCL (AMD Optimizing CPU Libraries) para maximizar la eficiencia en operaciones matriciales y transformadas de Fourier.
-
-
Entornos MPI (Parallel Computing):
-
El clúster dispone de implementaciones de OpenMPI e Intel MPI compatibles con los diferentes compiladores del catálogo. Asegúrese de cargar el módulo de MPI compilado específicamente para la suite de compiladores que haya seleccionado. Por ejemplo, si se usa el compilador aocc/5.0.0 se ha de usar la versión de openmpi/5.0.8_aocc-5.0.0
-