Advertisement

Implementation of LB Simulations

  • Timm Krüger
  • Halim Kusumaatmaja
  • Alexandr Kuzmin
  • Orest Shardt
  • Goncalo Silva
  • Erlend Magnus Viggen
Chapter
Part of the Graduate Texts in Physics book series (GTP)

Abstract

After reading this chapter, you will understand the fundamentals of high-performance computing and how to write efficient code for lattice Boltzmann method simulations. You will know how to optimise sequential codes and develop parallel codes for multi-core CPUs, computing clusters, and graphics processing units. The code listings in this chapter allow you to quickly get started with an efficient code and show you how to optimise your existing code.

Keywords

Shared Memory Central Processing Unit Message Passing Interface Memory Bandwidth Cache Line 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

References

  1. 1.
    Institute of Electrical and Electronics Engineers. 754-2008 — IEEE standard for floating-point arithmetic (2008). http://dx.doi.org/10.1109/IEEESTD.2008.4610935
  2. 2.
    H.S. Warren Jr., Hacker’s Delight, 2nd edn. (Addison-Wesley, Boston, 2013)Google Scholar
  3. 3.
    U. Drepper. What every programmer should know about memory (2007). https://www.akkadia.org/drepper/cpumemory.pdf Google Scholar
  4. 4.
    S. Chellappa, F. Franchetti, M. Püschel, in Generative and Transformational Techniques in Software Engineering II: International Summer School, GTTSE 2007, Braga, Portugal, July 2–7, 2007. Revised Papers, ed. by R. Lämmel, J. Visser, J. Saraiva (Springer, Berlin, Heidelberg, 2008), pp. 196–259Google Scholar
  5. 5.
    M. Wittmann, T. Zeiser, G. Hager, G. Wellein, Comput. Math. Appl. 65, 924 (2013)MathSciNetCrossRefGoogle Scholar
  6. 6.
    D.A. Bikulov, D.S. Senin, Vychisl. Metody Programm. 3, 370 (2013). This article is in Russian.Google Scholar
  7. 7.
    OpenMP Architecture Review Board. About the OpenMP ARB and OpenMP.org. http://openmp.org/wp/about-openmp/
  8. 8.
    OpenMP Architecture Review Board. OpenMP application program interface (2011). http://www.openmp.org/mp-documents/OpenMP3.1.pdf. Version 3.1
  9. 9.
    OpenMP Architecture Review Board. OpenMP application programming interface (2015). http://www.openmp.org/mp-documents/openmp-4.5.pdf. Version 4.5Google Scholar
  10. 10.
  11. 11.
    Message Passing Interface Forum. Message Passing Interface (MPI) Forum Home Page. http://www.mpi-forum.org/
  12. 12.
    TOP500. November 2015 TOP500 supercomputer sites. http://www.top500.org/lists/2015/11/
  13. 13.
    Message Passing Interface Forum. MPI: A Message-Passing Interface standard (2008). http://www.mpi-forum.org/docs/mpi-1.3/mpi-report-1.3-2008-05-30.pdf. Version 1.3
  14. 14.
    The Open MPI Project. Open MPI: Open Source High Performance Computing. https://www.open-mpi.org/
  15. 15.
    Message Passing Interface Forum. MPI documents. http://www.mpi-forum.org/docs/docs.html
  16. 16.
    The Open MPI Project. Open MPI documentation. https://www.open-mpi.org/doc/
  17. 17.
    B. Barney. Message Passing Interface (MPI). https://computing.llnl.gov/tutorials/mpi/
  18. 18.
    W. Gropp, E. Lusk, A. Skjellum, Using MPI: Portable parallel programming with the Message-Passing Interface, 3rd edn. (MIT Press, Cambridge, 2014)zbMATHGoogle Scholar
  19. 19.
    Adaptive Computing, Inc. TORQUE resource manager. http://www.adaptivecomputing.com/products/open-source/torque/
  20. 20.
    Khronos Group. OpenCL. https://www.khronos.org/opencl/
  21. 21.
    OpenACC. Directives for accelerators. http://www.openacc.org/
  22. 22.
    NVIDIA. CUDA toolkit documentation. http://docs.nvidia.com/cuda/
  23. 23.
  24. 24.
    NVIDIA. CUDA toolkit documentation. http://docs.nvidia.com/cuda/cuda-samples/
  25. 25.
    J. Sanders, E. Kandrot, CUDA by Example: An Introduction to General Purpose GPU Programming (Addison-Wesley, Boston, 2010)Google Scholar
  26. 26.
  27. 27.
  28. 28.
    NVIDIA. CUDA C best practices guide (2015). http://docs.nvidia.com/cuda/pdf/CUDA_C_Best_Practices_Guide.pdf
  29. 29.
    W. Li, X. Wei, A. Kaufman, Visual Comput. 19, 444 (2003)CrossRefGoogle Scholar
  30. 30.
    A. Kaufman, Z. Fan, K. Petkov, J. Stat. Mech. 2009, P06016 (2009)CrossRefGoogle Scholar
  31. 31.
    J. Tölke, Comput. Visual. Sci. 13, 29 (2010)CrossRefGoogle Scholar
  32. 32.
    J. Tölke, M. Krafczyk, Int. J. Comput. Fluid. D. 22, 443 (2008)CrossRefGoogle Scholar
  33. 33.
    M.J. Mawson, A.J. Revell, Comput. Phys. Commun. 185, 2566 (2014)CrossRefGoogle Scholar
  34. 34.
    O. Shardt, J.J. Derksen, S.K. Mitra, Langmuir 29, 6201 (2013)CrossRefGoogle Scholar
  35. 35.
    O. Shardt, S.K. Mitra, J.J. Derksen, Langmuir 30, 14416 (2014)CrossRefGoogle Scholar
  36. 36.
    A.E. Komrakova, O. Shardt, D. Eskin, J.J. Derksen, Int. J. Multiphase Flow 59, 24 (2014)CrossRefGoogle Scholar
  37. 37.
    A.E. Komrakova, O. Shardt, D. Eskin, J.J. Derksen, Chem. Eng. Sci. 126, 150 (2015)CrossRefGoogle Scholar
  38. 38.
    W. Xian, A. Takayuki, Parallel Comput. 37, 521 (2011)MathSciNetGoogle Scholar
  39. 39.
    X. Li, Y. Zhang, X. Wang, W. Ge, Chem. Eng. Sci. 102, 209 (2013)CrossRefGoogle Scholar
  40. 40.
    J. McClure, H. Wang, J.F. Prins, C.T. Miller, W.C. Feng, in Parallel and Distributed Processing Symposium, 2014 IEEE 28th International (2014), pp. 583–592Google Scholar
  41. 41.
    A. Gray, A. Hart, O. Henrich, K. Stratford, Int. J. High Perform. C. 29, 274 (2015)CrossRefGoogle Scholar
  42. 42.
    C. Obrecht, F. Kuznik, B. Tourancheau, J.J. Roux, Comput. Fluids 54, 118 (2012)MathSciNetCrossRefGoogle Scholar
  43. 43.
    C. Obrecht, F. Kuznik, B. Tourancheau, J.J. Roux, Comput. Math. Appl. 65, 252 (2013)MathSciNetCrossRefGoogle Scholar
  44. 44.
    C. Obrecht, F. Kuznik, B. Tourancheau, J.J. Roux, Comput. Fluids 80, 269 (2013)CrossRefGoogle Scholar
  45. 45.
    C. Obrecht, F. Kuznik, B. Tourancheau, J.J. Roux, Comput. Math. Appl. 61, 3628 (2011)CrossRefGoogle Scholar
  46. 46.
    F. Kuznik, C. Obrecht, G. Rusaouen, J.J. Roux, Comput. Math. Appl. 59, 2380 (2010)CrossRefGoogle Scholar
  47. 47.
    C. Obrecht, F. Kuznik, B. Tourancheau, J.J. Roux, Parallel Comput. 39, 259 (2013)MathSciNetCrossRefGoogle Scholar
  48. 48.
    M. Schreiber, P. Neumann, S. Zimmer, H.J. Bungartz, Procedia Comput. Sci. 4, 984 (2011)CrossRefGoogle Scholar
  49. 49.
    H. Zhou, G. Mo, F. Wu, J. Zhao, M. Rui, K. Cen, Comput. Methods Appl. Mech. Eng. 225–228, 984 (2011)Google Scholar
  50. 50.
    M. Schönherr, K. Kucher, M. Geier, M. Stiebler, S. Freudiger, M. Krafczyk, Comput. Math. Appl. 61, 3730 (2011)CrossRefGoogle Scholar
  51. 51.
    C. Obrecht, F. Kuznik, B. Tourancheau, J.J. Roux, Comput. Math. Appl. 65, 936 (2013)MathSciNetCrossRefGoogle Scholar
  52. 52.
    H. Liu, Q. Kang, C.R. Leonardi, S. Schmieschek, A. Narváez, B.D. Jones, J.R. Williams, A.J. Valocchi, J. Harting, Comput. Geosci. 20, 777 (2016)MathSciNetCrossRefGoogle Scholar

Copyright information

© Springer International Publishing Switzerland 2017

Authors and Affiliations

  • Timm Krüger
    • 1
  • Halim Kusumaatmaja
    • 2
  • Alexandr Kuzmin
    • 3
  • Orest Shardt
    • 4
  • Goncalo Silva
    • 5
  • Erlend Magnus Viggen
    • 6
  1. 1.School of Engineering University of EdinburghEdinburghUK
  2. 2.Department of PhysicsDurham UniversityDurhamUK
  3. 3.Maya Heat Transfer TechnologiesWestmountCanada
  4. 4.Department of Mechanical and Aerospace EngineeringPrinceton UniversityPrincetonUSA
  5. 5.IDMEC/IST, University of LisbonLisbonPortugal
  6. 6.Acoustics Research Centre, SINTEF ICTTrondheimNorway

Personalised recommendations