From 457a45589bd6a2f7bed19fbe7187e9533ce3266c Mon Sep 17 00:00:00 2001 From: Timo Koch <timo.koch@iws.uni-stuttgart.de> Date: Tue, 19 Apr 2022 14:40:26 +0200 Subject: [PATCH] [changelog][parallel][init] Add changelog entry for parallel_for and initialize --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d78078226..838ba967d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,20 @@ Differences Between DuMu<sup>x</sup> 3.5 and DuMu<sup>x</sup> 3.4 ### Improvements and Enhancements +- __ParallelFor and multithreaded assembly__: For single domain applications using Box of CCTpfa discretization, + the possibility for multithreaded (thread-parallel) assembly has been added. It is using the newly added + `Dumux::parallelFor` interface. This features requires a backend to be available. + This can be either external backends (TBB, Kokkos) or a working C++ STL parallel algorithms setup. + The backend will be selected automatically, if found. You can also specify the backend by setting the + compiler definition `DUMUX_MULTITHREADING_BACKEND=TBB,Cpp,Kokkos,Serial`, where Serial forces to always run in serial. + For the assembly, you can explicitly turn multithreading off setting the runtime parameter `Assembly.Multithreading = false`. + If a backend is available and the discretization allows it, the default is multithreaded assembly. + When using TBB or Kokkos is it required (recommended) to use `Dumux::initialize` in the main file. + +- __initialize__: A new control function `Dumux::initialize` has been added which initializes shared and distributed + memory parallelism helpers. It is recommended (and may be required for multithreaded applications) to use `Dumux::initialize` + instead of manually initializing the `Dune::MPIHelper`. + - __Discretization tags__: We introduced tags in the namespace `DiscretizationMethods` (with s) for each discretization method. These tags replace the `enum class DiscretizationMethod`. Tags have several advantages over the enum. Each tag is a named type (see `dumux/common/tag.hh`) so they can for example be used in tag dispatch. Moreover specializing with tags is extensible. -- GitLab