![](https://media.enccs.se/2023/04/GPU-Course-why-when-how.jpg) # GPU mini-hackathon - This hackMD: https://hackmd.io/@enccs/mini-hackathon-june2023 - Lesson material: https://enccs.github.io/gpu-programming/ ### Joining the mini-hackathon :::info Do you have a code that you want to port to GPUs and you need help? Join us for a mini-hackathon on Friday June 16! Register at https://events.prace-ri.eu/event/1502/registrations/1102/. ::: Please also visit this hackMD and describe your code, what you want to do, and how we can access your code: https://hackmd.io/@enccs/mini-hackathon-june2023 It's most convenient if your code is accessible publicly on GitHub, GitLab or similar and you write the URL in the hackMD, but you can also send an email to Thor Wikfeldt (thor.wikfeldt@enccs.se) with a file archive or instructions on how to access it. --- ## Projects Please write the name of your project, what it's about, how you want to GPU-port it (or if you're still trying to decide), and how a mentor can inspect the code 1. Example project - modeling of X using method Y - I want to implement OpenMP and maybe HIP - code can be downloaded from github.com/me/example-project 2. - Modeling Sea Surface Temperature using atmospheric forcing data (ERA5). - I am implementing a UNet for regression. - would you please provide the code to your UNet regression so that we could take a look beforehand - If I am not wrong, my data for training is (1645, 94, 360, 130), as in (time, lat, lon, features), my test set is (736, 94, 360, 130). The y-data for training is (1645, 94, 360, 1), and my y-data for the test set is (736, 94, 360, 1) - The UNet has ~8M 3. I'd like to look at Lagrangian particle tracking in general, see e.g. https://github.com/opendrift or https://oceanparcels.org/. Are these kinds of libraries too high-level and "pythonic" to port to GPU? Is there maybe already software for particle tracking on GPUs? The challenging part is to have active particle behaviour - is there any particular part from opendrift or openparcel you would like to optimize more? - This would be mostly the advection algorithm itself. Challenge here is copying the data needed from the CPU to GPU. - you could always port it or part of it to GPU, whether it is worth the effort or not is another question - About the active particle behaviour, is this feature missing in the present code and you would like to implemente it? - No, this is present in those two libraries (and easy to do the python way, but at certain performance hits) 4. I'm Sunniva Indrehus from NGI. E-mail: sunniva.indrehus@ngi.no I have been given a c++ code for modelling the micromechanical interactions between grains. I would like to get an advice about porting the parallelized part from CPUs to GPUs. This code is currently not opensource so I can't share the code in an open repo. I'm thinking that I could give some of you access to a private repo if I know your user names. **NB**: I can only join the first part of the workshop on Friday so if you have a lot of participants you should prioritize someone else. 5. I'm Patric Holmvall from Uppsala University. E-mail: patric.holmvall@physics.uu.se . I have a C++ code that currently runs on GPU via CUDA/ROCm, but I want to make it possible to run on multiple GPUs on different nodes using MPI. The code is trivially parallelizeable for this: I simply want to run the same kernel but for different input data on different GPUs. The distribution and collection of data via MPI will all be in the same file and function. I mainly want to know how to design the code to reduce MPI code bloat in the rest of the code, and write efficient MPI code. I would also be interested in MPI parallelizing the CPU version of the code (which currently uses OpenMP). The code is in a private GitLab repository, but I can happily invite mentors/helpers. 6. 7.