Admin message

Attention: i10git will shutdown soon!

This i10git GitLab server was migrated to gitos.rrze.fau.de due to hardware issues with the current host. This affects all production repositories, including waLBerla, lbmpy, pystencils and HyTeG.

Login: Gitos supports DFN-AAI and eduGAIN. If your institution does not support either, please use our GitHub mirrors.

Onboarding: All repositories belonging to groups were migrated. To regain access, first log in to gitos.rrze.fau.de once to activate your account. Then email cs10-admin@fau.de with your old i10git and your new gitos.rrze username (the @) as shown on your respective user profiles. We will reassign your accordingly. Note: Repositories from former courses (e.g. advpt) were not migrated.

Personal repositories in individual user namespaces were not migrated. Please export these yourself before the old server is shut down.

Expected shutdown by the end of 2026. Until then, the old i10git server will still be reachable with all repositories archived (read only). However, due to the ongoing hardware issues, it may remain unreliable and will receive no further maintenance.

The parent group is archived. This project and its data are read-only.
UniformGpuScheme violates Rule of Five
The `gpu::communication::UniformGpuScheme` class violates the C++ [rule of five](https://en.cppreference.com/w/cpp/language/rule_of_three); its copy and move semantics are invalid. `UniformGpuScheme` objects manage system ressources, namely a set of GPU streams. These are created in its constructor and destroyed in its destructor. However, it does not define custom copy and move constructors, so whenever a UniformGpuScheme object is copied or moved, and the destructor is called on the original, all streams are destroyed. Subsequently, when the comm scheme executes kernels, hard-to-track CUDA and HIP runtime errors ensue. ## Suggested Fix Either fix copy and move semantics (preferred!) or make objects of the class non-copyable and non-movable. ## Ideas CUDA streams are system ressources that are used in many corners of our code base. The best way to handle their lifetimes would be to wrap streams into RAII objects. Implement a [RAII](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-raii) class for managing a single stream, and then use this class inside UniformGpuScheme to get correct copy and move semantics.
issue