The Journal of Supercomputing

, Volume 58, Issue 2, pp 206–214 | Cite as

Simulation of one-layer shallow water systems on multicore and CUDA architectures

  • Marc de la Asunción
  • José M. Mantas
  • Manuel J. Castro


The numerical solution of shallow water systems is useful for several applications related to geophysical flows, but the big dimensions of the domains suggests the use of powerful accelerators to obtain numerical results in reasonable times. This paper addresses how to speed up the numerical solution of a first order well-balanced finite volume scheme for 2D one-layer shallow water systems by using modern Graphics Processing Units (GPUs) supporting the NVIDIA CUDA programming model. An algorithm which exploits the potential data parallelism of this method is presented and implemented using the CUDA model in single and double floating point precision. Numerical experiments show the high efficiency of this CUDA solver in comparison with a CPU parallel implementation of the solver and with respect to a previously existing GPU solver based on a shading language.


General Purpose computation on Graphics Processing Units (GPGPU) Shallow water systems OpenMP CUDA 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Castro MJ, García-Rodríguez JA, González-Vida JM, Parés C (2006) A parallel 2d finite volume scheme for solving systems of balance laws with nonconservative products: Application to shallow flows. Comput Methods Appl Mech Eng 195:2788–2815 zbMATHCrossRefGoogle Scholar
  2. 2.
    Castro MJ, García-Rodríguez JA, González-Vida JM, Parés C (2008) Solving shallow-water systems in 2D domains using Finite Volume methods and multimedia SSE instructions. J Comput Appl Math 221:16–32 MathSciNetzbMATHCrossRefGoogle Scholar
  3. 3.
    Chapman B, Jost G, van der Pas R (2007) Using OpenMP: portable shared memory parallel programming. The MIT Press, Cambridge Google Scholar
  4. 4.
    Eigen 2.0.9. Accessed November 2009
  5. 5.
    Fernando R, Kilgard MJ (2003) The Cg tutorial: the definitive guide to programmable real-time graphics. Addison-Wesley, Reading Google Scholar
  6. 6.
    Hagen TR, Hjelmervik JM, Lie K-A, Natvig JR, Henriksen MO (2005) Visual simulation of shallow-water waves. Simul Model Pract Theory 13:716–726 CrossRefGoogle Scholar
  7. 7.
    Lastra M, Mantas JM, Ureña C, Castro MJ, García JA (2009) Simulation of Shallow-Water systems using graphics processing units. Math Comput Simul 80:598–618 zbMATHCrossRefGoogle Scholar
  8. 8.
    NVIDIA. CUDA Zone. Accessed November 2009
  9. 9.
    Rumpf M, Strzodka R (2006) Graphics Processor Units: New Prospects for Parallel Computing. In: Lecture notes in computational science and engineering, vol. 51. Springer, Berlin, pp 89–132 Google Scholar
  10. 10.
    Shreiner D, Woo M, Neider J, Davis T (2007) OpenGL programming guide: the official guide to learning OpenGL, Version 2.1. Addison-Wesley Professional, Reading Google Scholar

Copyright information

© Springer Science+Business Media, LLC 2010

Authors and Affiliations

  • Marc de la Asunción
    • 1
  • José M. Mantas
    • 1
  • Manuel J. Castro
    • 2
  1. 1.Depto. Lenguajes y Sistemas InformáticosUniversidad de GranadaGranadaSpain
  2. 2.Depto. Análisis MatemáticoUniversidad de MálagaMálagaSpain

Personalised recommendations