Skip to content
Snippets Groups Projects
João Victor Tozatti Risso's avatar
João Victor Tozatti Risso authored
Changes introduced in this commit are the following:

- CUDA streams: Add support for asynchronous (un)packing operations using CUDA
  streams in cuda::communication::GPUPackInfo. Through asynchronous operations
  it is possible to overlap GPU computation and MPI communication in simulations
  (e.g. LBM simulations). Asynchronous copies in CUDA require pinned memory on
  the host, and for that purpose a staging buffer is introduced (i.e.
  cuda::communication::PinnedMemoryBuffer) in the cuda module, which is used to
  stage data between the GPU and the MPI buffers.

- zyxf layout: Add zyxf field layout support in GPUPackInfo through extensions
  of the functions in cuda::GPUCopy.

- Extended GPUPackInfo test: Add stream and zyxf layout tests to the
  GPUPackInfoTest to test the proposed implementation.

- Extended Kernel: add CUDA stream and shared memory configuration support in
  cuda::Kernel class.

Signed-off-by: João Victor Tozatti Risso <joaovi...
6bfe8c59
Forked from waLBerla / waLBerla
2132 commits behind the upstream repository.

waLBerla

waLBerla (widely applicable Lattice Boltzmann from Erlangen) is a massively parallel framework for multi physics applications. Besides its original objective, Lattice Boltzmann solvers for hydrodynamics, it now contains modules for other applications like Multigrid and rigid body dynamics as well. Great emphasis is placed on the interoperability between the modules in particular the fluid-particle coupling. It scales from laptops to current and future supercomputers while maintaining near-perfect efficiency.

See http://walberla.net/ for more information and a showcase of applications.

Documentation and Tutorials

Documentation for the C++ framework is available in Doxygen, while the Python interface is documented in Sphinx.

Getting started

The minimum requirements are a C++11-compliant compiler (e.g. GCC or Clang), the Boost library and the CMake build system. Furthermore, you need an MPI library (like Open MPI) if you want to make use of parallel processing capabilities. All of these dependencies are typically available in your operating system's package manager.

Get involved

Contributing

Please submit all code contributions on our GitLab. To get an account, please sign and submit the contributor license agreement.

Support

While we currently do not have a mailing list, any questions can be asked via the Issue Tracker.

Authors

Many thanks go to waLBerla's contributors

Please cite us

If you use waLBerla in a publication, please cite the following article:

  • C. Godenschwager, F. Schornbaum, M. Bauer, H. Köstler, and U. Rüde. A framework for hybrid parallel flow simulations with a trillion cells in complex geometries. In: Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis, page 35. ACM, 2013.

License

waLBerla is licensed under GPLv3.