waLBerla merge requestshttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests2024-03-26T15:01:04+01:00https://i10git.cs.fau.de/walberla/walberla/-/merge_requests/663Fix OpenMesh hint2024-03-26T15:01:04+01:00Helen SchottenhammlFix OpenMesh hintIn commit b01d41375014368ac75c345014ad5ebc74083f45, the custom CMake variable for finding OpenMesh was changed from `OPENMESH_DIR` to `OPENMESH_LIBRARY_DIR`. However, the hint telling the user which variable to set if OpenMesh is not fou...In commit b01d41375014368ac75c345014ad5ebc74083f45, the custom CMake variable for finding OpenMesh was changed from `OPENMESH_DIR` to `OPENMESH_LIBRARY_DIR`. However, the hint telling the user which variable to set if OpenMesh is not found, was not adapted.
This MR, adapts the hint for the user to facilitate the usage of OpenMesh.Helen SchottenhammlHelen Schottenhammlhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/653[Fix] GPU Direct Communication in NonUniformGPUScheme2024-03-20T14:45:45+01:00Markus Holzer[Fix] GPU Direct Communication in NonUniformGPUSchemeThe GPU-direct Communication in NonUniformGPUScheme did not work and is fixed with this MRThe GPU-direct Communication in NonUniformGPUScheme did not work and is fixed with this MRMarkus HolzerMarkus Holzerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/661add clang 172024-03-18T20:01:46+01:00Dominik Thoennesdominik.thoennes@fau.deadd clang 17https://i10git.cs.fau.de/walberla/walberla/-/merge_requests/660Update VTKOutput.cpp2024-03-07T16:26:55+01:00Markus HolzerUpdate VTKOutput.cppFixes non existing `.pvd` files with MPIIOFixes non existing `.pvd` files with MPIIOMarkus HolzerMarkus Holzerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/659Use uint_t instead of int to access f of gpu field2024-03-07T10:41:35+01:00Samuel KemmlerUse uint_t instead of int to access f of gpu fieldUse uint_t instead of int to access f of gpu field because the f index should always be positiveUse uint_t instead of int to access f of gpu field because the f index should always be positiveSamuel KemmlerSamuel Kemmlerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/657Extend VTK Writer2024-02-28T15:44:50+01:00Markus HolzerExtend VTK WriterThis MR extends the VTKOutput by two new features
1. Writing AMR files (https://www.kitware.com/visualization-analysis-of-amr-datasets/)
2. Writing data per Rank instead of per Process for unstructured dataThis MR extends the VTKOutput by two new features
1. Writing AMR files (https://www.kitware.com/visualization-analysis-of-amr-datasets/)
2. Writing data per Rank instead of per Process for unstructured dataMarkus HolzerMarkus Holzerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/658increase version to prevent deprecation warning during cmake call2024-02-27T13:28:17+01:00Dominik Thoennesdominik.thoennes@fau.deincrease version to prevent deprecation warning during cmake callhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/652Integration for Interpolation BCs2024-02-13T14:39:46+01:00Markus HolzerIntegration for Interpolation BCsIn lbmpy Interpolation, NoSlip Boundary conditions are provided. These require the calculation of the wall distance, which is realised in waLBerla by providing an additional data handler for it. This MR provides the additional data handlerIn lbmpy Interpolation, NoSlip Boundary conditions are provided. These require the calculation of the wall distance, which is realised in waLBerla by providing an additional data handler for it. This MR provides the additional data handlerMarkus HolzerMarkus Holzerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/656Also erase the element in blockDataItem_ when clearing Block Data in the Bloc...2024-02-06T09:54:06+01:00Philipp SuffaAlso erase the element in blockDataItem_ when clearing Block Data in the BlockStorage.Philipp SuffaPhilipp Suffahttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/647Define own MPI type for float162024-02-02T16:01:52+01:00Michael ZikeliDefine own MPI type for float16Until now, `MPI_WCHAR` was used as a placeholder for `float16` since it has the same amount of bits. However, since `WCHAR` is no `floating point type`, arithmetic operations could not be used with it.
---
**Some information about Floa...Until now, `MPI_WCHAR` was used as a placeholder for `float16` since it has the same amount of bits. However, since `WCHAR` is no `floating point type`, arithmetic operations could not be used with it.
---
**Some information about Float16 in MPI that I could find**
- Regarding [Issue 55](https://github.com/mpi-forum/mpi-issues/issues/65) in the MPI forum, the community decided that ["MPI standard will not define FP16 types but implementor can decide to implement or not."](https://github.com/mpi-forum/mpi-issues/issues/74#:~:text=MPI%20standard%20will%20not%20define%20FP16%20types%20but%20implementor%20can%20decide%20to%20implement%20or%20not).
Either an MPI implementation that has a `float16` datatype or an own handling for float16 must be provided. Since relying on specific implementation is not portable, we decided to do the latter one.
---
This MR aims to provide an own handling MPI handling for float16 according to the solution suggested in this [stackoverflow post](https://stackoverflow.com/questions/29638251/16-bit-float-mpi-reduce/29643391#29643391).
MPI types and MPI operations are chosen via the struct `MPITrait` that maps a `CType` to a respective `MPI_Datatype` `::type()` and `MPI_Op` `::operation( mpi::Operation )`.
Both self defined `MPI_Type`s and `MPI_Op`s that are needed for `float16` operations are initialized in the `MPIManager` the first time they are used via `MPITrait` and automatically freed before `MPI_Finalize` is called.
Via the `MPIManager` those operations and types can be accessed anytime and place in the code. This must not be done by the user, though, since the `MPITrait` located in the new header `MPIFloat16.h` handles these calls.
To use `float16` and MPI in your application, make sure to include `core/mpi/MPIFloat16.h`
---
TODO:
- [x] Write `MPITrait` specialization for `float16` that creates an own MPI type.
- [x] Add `MPI_FLOAT16` dummy type to the MPI_Wrapper, in case MPI is not activated.
- [ ] ~~Find out if the MPI_OP are only used for in `mpi::Redaction` or if there are other files, that use them.~~
- [x] Write own mpi::Operation class that handles creations of MPI_Ops.
- [x] Define own operations for `MPI_FLOAT16`:
- [x] `MIN`
- [x] `MAX`
- [x] `SUM`
- [ ] ~~will be added when needed {`PRODUCT`
- [ ] `LOGICAL_AND`
- [ ] `BITWISE_AND`
- [ ] `LOGICAL_OR`
- [ ] `BITWISE_OR`
- [ ] `LOGICAL_XOR`
- [ ] `BITWISE_XOR`}~~
- [x] Make walberla choose the right operator, depending on the MPI Datatype.
- [x] Automate the lifetime of self generated types and operations.
- [x] Write Test for `float16` type creation.
- [x] Add Test for all `Operations` that are implemented yet.
- [ ] ~~Make the Test that check if all resources are properly freed.~~ ( Don't know how )
- [x] Once gcc13 is merged, enable `WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT` in pipeline, to have float16 changes tested as well.https://i10git.cs.fau.de/walberla/walberla/-/merge_requests/655FreeSlip BC with refinement2024-01-31T14:48:55+01:00Markus HolzerFreeSlip BC with refinementProvides a test case in waLBerla to showcase the interplay between the FreeSlip BC on refined wallsProvides a test case in waLBerla to showcase the interplay between the FreeSlip BC on refined wallsMarkus HolzerMarkus Holzerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/654add gcc 13; remove gcc9; add clang 16; remove clang 122024-01-30T09:48:08+01:00Dominik Thoennesdominik.thoennes@fau.deadd gcc 13; remove gcc9; add clang 16; remove clang 12https://i10git.cs.fau.de/walberla/walberla/-/merge_requests/651fix wrong detection of nec compiler2024-01-25T11:01:35+01:00Dominik Thoennesdominik.thoennes@fau.defix wrong detection of nec compilerbefore this MR the nec compiler was falsely assumed if the compiler (any compiler) is located in a directory that contains "sxc"before this MR the nec compiler was falsely assumed if the compiler (any compiler) is located in a directory that contains "sxc"https://i10git.cs.fau.de/walberla/walberla/-/merge_requests/650Avoiding the duplacte cb trigger job2024-01-24T08:35:54+01:00Christoph AltAvoiding the duplacte cb trigger jobThis should avoid the that the cb trigger is create on merge requests somehow (related to !648)This should avoid the that the cb trigger is create on merge requests somehow (related to !648)https://i10git.cs.fau.de/walberla/walberla/-/merge_requests/648Fixing the cb trigger2024-01-23T14:05:44+01:00Christoph AltFixing the cb triggerThe cb trigger currently is added as a blocked job to every MR Pipeline. This is a problem since the job need to be run for every merge request. For jobs where the `when: manual` is set within in a rule, the allow_failure is set to false...The cb trigger currently is added as a blocked job to every MR Pipeline. This is a problem since the job need to be run for every merge request. For jobs where the `when: manual` is set within in a rule, the allow_failure is set to false by default. Setting the `allow_failure` to true explicitly should fix thatChristoph AltChristoph Althttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/649[BugFix] FreeSlip2024-01-23T12:55:07+01:00Markus Holzer[BugFix] FreeSlipUsing a D3Q27 stencil the concave corner case of the FreeSlip BC failed. This could be shown best when executing the `GeneratedFreeSlip` test case with a D3Q27 stencil instead of a D3Q19 stencil. In this MR the concave corner case is ada...Using a D3Q27 stencil the concave corner case of the FreeSlip BC failed. This could be shown best when executing the `GeneratedFreeSlip` test case with a D3Q27 stencil instead of a D3Q19 stencil. In this MR the concave corner case is adapted to fix the issueMarkus HolzerMarkus Holzerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/646Thermocapillary2024-01-09T17:38:42+01:00Markus HolzerThermocapillaryAdds thermocapillary application to waLBerlaAdds thermocapillary application to waLBerlaMarkus HolzerMarkus Holzerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/645Fixes GPU-Local-Communication-Error in 03_AdvancedLBMCodegen Tutorial2023-12-19T20:16:48+01:00Philipp SuffaFixes GPU-Local-Communication-Error in 03_AdvancedLBMCodegen TutorialFixes GPU-Local-Communication-Error in 03_AdvancedLBMCodegen Tutorial.
("Local Communication not implemented yet for standard PackInfos. To run your application turn of local communication in the Communication class")
Just a hot-fix, I...Fixes GPU-Local-Communication-Error in 03_AdvancedLBMCodegen Tutorial.
("Local Communication not implemented yet for standard PackInfos. To run your application turn of local communication in the Communication class")
Just a hot-fix, I guess the tutorial should be reworked to adapt to the new generated LBM back-end.Philipp SuffaPhilipp Suffahttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/643Extend missing implementations for float16 support2023-12-19T12:10:20+01:00Michael ZikeliExtend missing implementations for float16 supportExtends missing implementations for float16 support. Namely, an MPI_Datatype specialization for 16 bit (wchar_t) and an equality check. Also, improves the CMake checks for `WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT` depending on the com...Extends missing implementations for float16 support. Namely, an MPI_Datatype specialization for 16 bit (wchar_t) and an equality check. Also, improves the CMake checks for `WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT` depending on the compiler and adds float16 tests to the CI.
---
This merge request is related to the HyTeG merge request [!671](https://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/671).
More information about necessary compiler features can be found in this [HyTeG MR comment](https://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/671#note_26567).
---
TODO:
- [x] Extend MPI_Datatype by a 16 bits type, i.e. WCHAR.
- [x] Add equality check for float16.
- [x] Create a minimal requirement test for float16 that only checks `is_floating_point<walberla::float16>::value == true`. (Note: must be `static_assert` since `WALBERLA_CHECK` does not result in an error.)
- [ ] ~~Enable `WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT` in CI.~~ This must be reactivated, once newer compilers are added to the CI.
- [x] Change `WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT` for different compiler checks in CMakeLists.txt to work if the minimal requirement test compiles.https://i10git.cs.fau.de/walberla/walberla/-/merge_requests/641Update FindOpenMesh.cmake2023-12-19T11:42:14+01:00Markus HolzerUpdate FindOpenMesh.cmakeThe current `FindOpenMesh` file throws uses `cmake_minimum_required(VERSION 2.8.12)` and thus the following Warning is thrown:
```
CMake Deprecation Warning at cmake/FindOpenMesh.cmake:56 (cmake_minimum_required):
Compatibility with C...The current `FindOpenMesh` file throws uses `cmake_minimum_required(VERSION 2.8.12)` and thus the following Warning is thrown:
```
CMake Deprecation Warning at cmake/FindOpenMesh.cmake:56 (cmake_minimum_required):
Compatibility with CMake < 3.5 will be removed from a future version of
CMake.
Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake that the project does not need compatibility with older versions.
Call Stack (most recent call first):
CMakeLists.txt:921 (find_package)
```
This MR updates the file from: https://gitlab.vci.rwth-aachen.de:9000/OpenMesh/OpenMesh/-/blob/master/cmake/FindOpenMesh.cmake?ref_type=headsMarkus HolzerMarkus Holzer