Skip to content

Paralelización del código

CPU de RiverFlow2D

El código de RiverFlow2D ha sido 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 con memoria compartida en C/C++ y Fortran sobre arquitecturas, incluidas las plataformas MAC OS, Unix y Windows (OpenMP, 2009). OpenMP proporciona instrucciones para paralelizar códigos seriales existentes para que se ejecuten en plataformas con memoria compartida, desde computadoras asequibles y ampliamente disponibles con múltiples núcleos hasta supercomputadoras. Mediante este enfoque de paralelización, RiverFlow2D distribuye dinámicamente la carga de trabajo computacional entre tantos procesadores o núcleos como estén disponibles. De esta manera, el modelo optimiza sus cálculos para la arquitectura particular de cada computadora.

La figura muestra la aceleración del modelo con respecto al 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 utilizando el modelo paralelizado en esta plataforma informática concreta.

Aceleración usando el código paralelizado de RiverFlow2D en función del número de núcleos del procesador.

GPU de RiverFlow2D

La versión GPU del modelo RiverFlow2D ofrece aceleraciones sorprendentes que reducen considerablemente los tiempos de ejecución. RiverFlow2D GPU implementa dos estrategias: paralelización OpenMP y técnicas de GPU. Puesto que al tratar flujos transitorios de inundación el número de llamadas wet cambia durante la simulación, se ha incluido en la implementación de Open MP una asignación dinámica de tareas a los procesadores que garantiza una carga de trabajo equilibrada. El método estricto de RiverFlow2D para controlar la conservación del volumen (errores del orden de \(10^{-14} \%\)) en la modelización numérica de los frentes de mojado/secado implica un paso de corrección que no es completamente local, lo que requiere un tratamiento especial para evitar degradar el rendimiento del modelo. La versión GPU reduce el tiempo computacional por factores de hasta 700X en comparación con ejecuciones de CPU (1-core) no paralelizadas. La figura muestra pruebas de rendimiento utilizando tecnología reciente de hardware GPU, que demuestran que las técnicas de paralelización implementadas en RiverFlow2D GPU pueden reducir significativamente el coste computacional.

Aceleración usando el código paralelizado de RiverFlow2D en función del número de núcleos del procesador.