Skip to content

Paralelización del código

HydroBID Flood CPU

HydroBID Flood utiliza el motor RiverFlow2D compartido de Hydronia, cuyo código para CPU se ha paralelizado mediante directivas OpenMP disponibles en el compilador Intel C++. La interfaz de programación de aplicaciones (API) de OpenMP admite programación paralela multiplataforma de memoria compartida en C/C++ y Fortran sobre arquitecturas que incluyen MAC OS, Unix y Windows (OpenMP, 2009). OpenMP proporciona instrucciones para paralelizar código secuencial existente y ejecutarlo en plataformas de memoria compartida, desde computadoras asequibles y ampliamente disponibles con varios núcleos hasta supercomputadoras. Mediante este enfoque de paralelización, el motor distribuye dinámicamente la carga de trabajo computacional entre tantos procesadores o núcleos como estén disponibles. De este modo, el modelo optimiza sus cálculos para la arquitectura particular de cada computadora.

La figura muestra la aceleración del modelo en función del número de procesadores/núcleos en una computadora DELL Precision 7400 con 2 Intel Xeon CPU X5472 \@3.00GHz y 16GB de RAM. Con 8 núcleos, el modelo se ejecuta más de 4 veces más rápido que el modelo no paralelizado. Una simulación de una hora tarda aproximadamente 6 minutos cuando se utiliza el modelo paralelizado en esta plataforma informática particular.

Aceleración del modelo HydroBID Flood CPU en función del número de núcleos del procesador.

HydroBID Flood GPU

El modelo HydroBID Flood GPU utiliza la versión GPU del motor compartido RiverFlow2D para reducir los tiempos de ejecución. Combina la paralelización OpenMP con técnicas de GPU. Debido a que el número de celdas mojadas cambia durante las simulaciones de inundación transitoria, la implementación de OpenMP asigna tareas dinámicamente a los procesadores para mantener equilibrada la carga de trabajo. El método estricto del motor para controlar la conservación del volumen (errores del orden de \(10^{-14} \%\)) al modelar los frentes de mojado y secado implica un paso de corrección que no es completamente local, lo cual requiere un tratamiento especial para evitar degradar el rendimiento del modelo. La versión GPU reduce el tiempo de cálculo hasta en un factor de 700X en comparación con ejecuciones de CPU no paralelizadas (1 núcleo). La figura muestra pruebas de rendimiento realizadas con tecnología reciente de hardware GPU y demuestra que las técnicas de paralelización implementadas en el modelo HydroBID Flood GPU pueden reducir significativamente el costo computacional.

Aceleración del modelo HydroBID Flood GPU en función del número de núcleos del procesador.