Devito Codes Automatiza la Generación de Código de HPC

Devito Codes con procesadores Intel® Xeon® 6 genera código de HPC optimizado y habilita soluciones de diferencias finitas.

Resumen:

  • Devito Codes trabaja en estrecha colaboración con los principales fabricantes de hardware de computación y empresas de la nube para ayudar a sus clientes a maximizar el desempeño, la productividad y la portabilidad en su plataforma.

  • Devito Codes con tecnología Intel® genera código de HPC optimizado a partir de un lenguaje de dominio específico (DSL) de Python, lo que les permite a los científicos crear soluciones de diferencias finitas de alto desempeño a partir de las matemáticas.

author-image

Por

El trilema de la HPC: Elegir entre desempeño, portabilidad y productividad

Las ciencias físicas describen el mundo con las matemáticas aplicadas. La sismología, el electromagnetismo y la dinámica de fluidos dependen de técnicas como las ecuaciones diferenciales parciales y las simulaciones de diferencias finitas para elaborar modelos de fenómenos físicos.

Python y su ecosistema científico de bibliotecas como NumPy, SciPy y MatPlotLib les ofrecen a los científicos e investigadores marcos para desarrollar soluciones sofisticadas específicas de dominio con relativamente pocas líneas de código de fácil acceso. Son esta versatilidad y productividad las que han convertido a Python en uno de los lenguajes líderes en ciencia e ingeniería en la actualidad. ¿En qué otro lenguaje de programación puede literalmente importar la antigravedad?

Si bien Python puro puede ser más lento que los lenguajes compilados, su función principal en la informática de alto desempeño (HPC) es la de ser una interfaz accesible para bibliotecas altamente optimizadas escritas en lenguajes compilados de bajo nivel, como C, C++, Fortran e incluso CUDA, SYCL o HIP para la compatibilidad con GPUs. Las bibliotecas científicas de Python, como NumPy y SciPy, aprovechan estos backends compilados para ofrecer un alto desempeño, a la vez que mantienen la facilidad de uso de Python. Sin embargo, este modelo aún depende de la disponibilidad de código de HPC optimizado para tareas específicas de dominio, cuyo desarrollo y mantenimiento a menudo requieren experiencia y recursos especializados.

La solución de Devito: Permitir que los científicos se concentren en ser científicos

El equipo de Devito Codes tenía como objetivo ofrecer al ecosistema de Python la compilación justo a tiempo (JIT) de código de diferencias finitas de grado HPC. Con Devito, los científicos pueden trabajar dentro del marco de trabajo simbólico y matemático de Python (SymPy), escribir solucionadores complejos de ecuaciones diferenciales parciales y problemas de optimización orientados a objetivos, y generar sin problemas código de HPC paralelizado y optimizado para hardware para todas las principales arquitecturas de CPU y GPU.

Los códigos de Devito obtienen grandes beneficios con Intel® Xeon® 6 (más alto es mejor)

Un kernel de Devito Codes para un propagador anisotrópico acústico para un modelo de isotropía transversal (TTI) inclinado (un modelo sísmico típico de la industria energética) ilustra los aumentos de desempeño de Intel® Xeon® 6 en comparación con los procesadores escalables Intel® Xeon® de 5ª Generación.1

“La mayoría de las personas adoptan Devito inicialmente para aumentar la productividad”, dice Gerard Gorman, director ejecutivo y cofundador de Devito Codes. “Posibilita una forma única de creación rápida de prototipos, lo que les permite tratarlo como un laboratorio computacional”.

Crear un marco de trabajo de Python que pueda producir kernels de alto desempeño para tareas de simulación, inversión y optimización en diversos tipos de hardware no es sencillo. Devito integra múltiples tecnologías de HPC, lo que incluye OpenMP para sistemas de memoria compartida, OpenACC para aceleradores y MPI para paralelismo y portabilidad. Las optimizaciones avanzadas requieren un ajuste específico del hardware con lenguajes especializados como CUDA, HIP y SYCL. Devito Codes aplica casi todas las técnicas de optimización conocidas para el cómputo estructurado e integra continuamente nuevos avances, lo que garantiza que el desempeño aumente con el tiempo. A menudo rivaliza con soluciones comerciales ajustadas manualmente por expertos o incluso las supera.

Al asumir la complejidad del desarrollo de código de HPC, Devito Codes les permite a los usuarios transferir proyectos entre sistemas sin esfuerzo, aprovechando todos los recursos informáticos disponibles. Los proveedores de servicios y operadores de HPC pueden mantener la infraestructura actual, expandirse con matrices heterogéneas y realizar actualizaciones significativas, todo mientras garantizan que las cargas de trabajo sigan siendo compatibles y que tengan un desempeño óptimo.

“Con DevitoPRO, un geofísico puede tomar un algoritmo de un artículo de investigación e implementarlo en una tarde: una tarea que normalmente tomaría meses de codificación y optimización. Este cambio rápido les permite a los equipos experimentar e innovar a un ritmo sin precedentes, lo que acelera las pruebas y la implementación de nuevos algoritmos". Mathias Louboutin, arquitecto de soluciones sénior, Devito

DevitoPRO

Devito comenzó como parte de una iniciativa del Centro de Computación Paralela de Intel dirigida por el profesor Gerard Gorman en el Imperial College London. El proyecto inicial creó software de alto desempeño y de código abierto para imágenes sísmicas. A medida que el proyecto maduró y se convirtió en un verdadero compilador de optimización para cargas de trabajo de HPC, el equipo lanzó DevitoPRO, una edición empresarial con características de propiedad exclusiva, optimizaciones avanzadas de desempeño y asistencia comercial.

DevitoPRO sirve principalmente a la geofísica de exploración en la industria energética. Además de compilar código portátil altamente optimizado para simulaciones sísmicas con la autoría de Python, DevitoPRO ofrece propagadores y operadores de gradiente de alto desempeño para inversión de forma de onda completa (FWI) y migración de tiempo inverso (RTM). DevitoPRO también ofrece asistencia técnica, entrenamiento, desarrollo de software personalizado y optimización específica de hardware para clientes.

Devito continúa ofreciendo tecnología de software simbólico y de compilador de propósito general como software de código abierto y libre de patentes para investigadores del mundo académico y de la industria.

Ampliación de la portabilidad de código con SYCL e Intel

Tradicionalmente, la creación de código portátil que pueda ejecutarse en procesadores heterogéneos requería compilar kernels únicos para cada tipo de hardware: kernels CUDA para GPUs NVIDIA, kernels HIP para GPUs AMD y C/C++ para CPUs x86 y RISC. En los últimos años, SYCL les ha ofrecido a los programadores de HPC una nueva opción de plataformas múltiples para compilar código de HPC optimizado.

“La fusión que hizo Devito de computación simbólica y tecnología de compilador avanzada garantiza una generación de código confiable, verificable y optimizada, lo que es crítico para el software matemático centrado en misiones. Si bien el código de inteligencia artificial generativa carece de este nivel de precisión y confiabilidad, la combinación de ambas tecnologías puede ofrecer una productividad aún mayor en el desarrollo y la prueba de nuevos algoritmos”. Gerard Gorman, director ejecutivo y cofundador de Devito Codes

SYCL es una capa de abstracción de C++ paralela para múltiples plataformas con APIs que pueden encontrar y administrar recursos de datos y ejecución de código en dispositivos mixtos de diversos proveedores, incluidas CPUs, GPUs y FPGAs. SYCL es la base de moneAPI y Data Parallel C++, que Intel ha implementado en GPUs Intel® para centros de datos.

Los ingenieros de Devito Codes y de Intel trabajaron juntos para llevar la generación de código SYCL a DevitoPRO, lo que incluye las optimizaciones específicas para los aceleradores de Intel® Data Center GPU Max series 1100 y 1550. Para implementar la solución, los usuarios de DevitoPRO simplemente deben apuntar a las GPUs Intel® para centros de datos para obtener compilaciones justo a tiempo que aprovechen los beneficios de desempeño de SYCL.

Mejoramiento del desempeño para la sismología de ondas elásticas con informática de precisión mixta

Las ondas sísmicas viajan de dos maneras: a través de ondas primarias longitudinales (ondas P) y ondas secundarias transversales (ondas S). Modelar ondas P (un método que los sismólogos llaman análisis acústico) es relativamente simple desde el punto de vista matemático y computacional, porque la energía de las ondas y el movimiento de las partículas viajan en la misma dimensión. Modelar ondas P y S juntas, lo que los sismólogos llaman análisis elástico, complica las cosas geométricamente.

Debido a que las dos formas de onda se mueven en tres dimensiones en ángulos de noventa grados, describirlas requiere más ecuaciones de onda con más componentes. El análisis elástico también requiere una resolución mucho mayor para producir resultados precisos, lo que implica recopilar muchos más datos.

Las ondas sísmicas existen en dos formas: ondas primarias (P) longitudinales y ondas secundarias (S) transversales.

“Si está ejecutando un análisis elástico, entonces su huella de memoria será, en el mejor de los casos, entre cuatro y cinco veces mayor que en el caso del análisis acústico”, dice Fabio Luporini, director de tecnología y cofundador de Devito Codes. “Es simplemente por la física. Está modelando más campos de ondas simultáneamente en una ecuación diferencial parcial acoplada, que debe mantener en la memoria".

Devito Codes está desarrollando algoritmos de precisión mixta, una técnica de computación de inteligencia artificial, para hacer posibles cargas de trabajo de informática elástica en hardware de la generación actual. Las cargas de trabajo que pueden permitirse una pequeña pérdida de precisión se convierten de FP-32 (punto flotante de 32 bits) a una combinación cuidadosamente diseñada de FP-32 y FP-16 (punto flotante de 16 bits), que representan los mismos valores con la mitad de la memoria. En el mundo del análisis elástico, reducir a la mitad un conjunto de datos de un petabyte a 500 TB produce aumentos de desempeño en cascada en cada paso, desde la gestión de memoria y E/S hasta la escritura de instantáneas en disco.

Devito Codes duplica el desempeño con precisión mixta (más alto es mejor)2

Las pruebas de Devito Codes muestran que el cambio y la precisión mixta (FP-16/FP-32) aumentan el desempeño 2 veces y reducen las huellas de memoria 2 veces, lo que da como resultado un desempeño significativamente más rápido.2

Las cargas de trabajo de FP-16 también se procesan más rápido en CPUs y GPUs que admiten precisión mixta, como los procesadores Intel® Xeon® 6 y las GPUs Intel® para centros de datos. En las pruebas iniciales, el análisis elástico de ondas que se ejecuta con precisión mixta con Devito Codes produjo un aumento de desempeño de hasta 2 veces, 1el equivalente a un cambio de nivel en el desempeño sin actualizaciones de hardware.

Conclusión: Cada incremento de desempeño cuenta

Devito Codes e Intel siguen perfeccionando y optimizando las tecnologías de compilador para obtener más desempeño de sistemas de HPC heterogéneos para simulaciones de diferencias finitas. Para el código abierto de Devito y los clientes de DevitoPRO, el trabajo es indispensable.

“Procesar datos sísmicos para obtener imágenes de subsuperficie puede costar millones en gastos de cómputo por proyecto”, dice Gorman. “Así que tenemos que aprovechar hasta el último porcentaje de desempeño, porque el tiempo es dinero”.

Para obtener las actualizaciones más recientes, visite Devito Codes en GitHub o devitocodes.com.

Descargar documento PDF ›