SerialDataHandlingnow performs the device selection upon construction. It can also be constructed with an explicit device number to deviate from the default selection.
ParallelDataHandling, the assignment of devices to MPI ranks should be handled by Walberla by calling
cudaSetDevice(). It has
selectDeviceBasedOnMpiRankfor this purpose. I am not sure it actually calls it -- I think it should be called from
MPIManager::initializeMPI. Right now everything probably just ends up on the first GPU.
- The kernel wrapper now determines the correct device by inspecting the fields.
gpu_indexing_paramsneeds an explicit device number, I don't think any kind of default is reasonable.
- Some tests now iterate over all devices instead of using a default device. This is actually the right thing to do because it tests whether the device selection works correctly.