Computación de Alto Rendimiento: Lo que necesitas saber
¿Conoces el término? En este artículo, contaré un poco más de qué se trata, los conocimientos básicos necesarios, las tecnologías utilizadas y algunos consejos de material técnico para conocer más.
La Computación de Alto Rendimiento (CAR o HPC por sus siglas en inglés) es un área de la computación enfocada en aplicar diferentes técnicas para lograr rendimiento elevado en aplicaciones paralelas y distribuidas, además de monitorear el comportamiento de las aplicaciones y los sistemas de cómputo disponibles, enfocándose en las supercomputadoras.
Las supercomputadoras son máquinas superpoderosas con muchos nodos computacionales y procesadores con múltiples núcleos que podrán alcanzar un rendimiento extremadamente alto, hoy en día de exaflops (simplemente 10¹⁸ operaciones de punto flotante por segundo).
Un área multidisciplinar
¡La CAR es un área que avanza muy rápido! Todo el tiempo surgen nuevos problemas, aplicaciones y sistemas susceptibles de optimizarse. La parte más genial es que puede manejar aplicaciones en diferentes campos de investigación como geología, astronomía, física y medicina. Un ejemplo es el COVID-19 HPC Consortium, el cual unió esfuerzos de varias instituciones públicas y privadas para compartir sus supercomputadoras y ejecutar aplicaciones relacionadas con la investigación sobre la pandemia.
El área es una mezcla de hardware y software. El profesional de CAR puede trabajar con los diseños de procesadores y memorias o de programas planificadores de procesos, con programación paralela y distribuida y con evaluación de desempeño.
Conocimientos básicos
Además de la curiosidad, necesitarás conocimientos de algunos conceptos técnicos. Si tienes experiencia en informática, debes saber que varias de las clases que tomaste al graduarte serán útiles como base de conocimiento en el área:
- Sistemas operativos: Sí, deberás ser más que un simple usuario. Tu día a día requerirá emplear una terminal/símbolo del sistema. Comprender la estructura de tu sistema, el uso de recursos y los sistemas de archivos, por ejemplo, te ayudará a evaluar el rendimiento de tus aplicaciones.
- Arquitectura informática: Será fundamental entender cómo funciona el procesamiento de instrucciones en tu ordenador, las diferentes arquitecturas existentes y sus impactos en tus aplicaciones.
- Redes informáticas: Comprender los modelos y la topología de la red utilizada te dará la base para comprender el impacto de los procesos que se ejecutan en sistemas distribuidos.
- Estadísticas: Se utilizarán para evaluar el rendimiento de sus experimentos e investigaciones.
- Programación: Conocimiento de algoritmos, su complejidad y estructuras de datos.
Tecnologías que utilizo en mi vida diaria
Hay varios caminos dentro de la CAR, pero me gustaría compartir con ustedes algunas de las herramientas que utilizo diariamente como investigadora en el área desde hace tres años:
- Lenguajes de programación: El lenguaje de programación más popular para implementar programas paralelos es C/C++ debido al soporte de diferentes modelos de programación para sistemas paralelos y distribuidos que facilitarán la paralelización de tu código. Por ejemplo: MPI y OpenMP para CPU, OpenACC y CUDA para GPU.
- Guiones: ¡Muchos! Esta es mi parte favorita: poder modelar cómo se realizarán mis experimentos y automatizar tareas. Al principio, puedes sentir que pasarás más tiempo desarrollando el script que si ejecutaras tus 10 experimentos manualmente (siempre recuerdo esto, pero luego descubres el truco).
- Rastreadores y perfiles de ejecución: Varias herramientas pueden ayudarte a monitorear el rendimiento de tus experimentos, como ejecutar rastreadores de perfiles y generadores de perfiles, que brindan resúmenes del rendimiento de tu aplicación.
- Git: El control de versiones del código es esencial en casi todas las áreas de la informática. Usa Git para que no pierdas de vista tu progreso, para que documentes y generes proyectos colaborativamente con mayor facilidad.
- Herramientas de ciencia de datos: Uso R y Python para el análisis de datos y gráficos. Grafana es una herramienta muy popular para visualizar datos y monitorear sistemas hoy en día.
Aprende CAR en la práctica:
- Desarrollo de algoritmos eficientes en sistemas de Computación de Alto Rendimiento.
- Habilidades Básicas en Computación de Alto Rendimiento.
- Supercomputadoras.
¿Tienes más dudas sobre Computación de Alto Rendimiento (CAR)? Consulta aquí otros escritos de mi autoría.
Revelo Content Network da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.