ammarhakim / gkyl

This is the main source repo for the Gkeyll 2.0 code. Please see gkeyll.rtfd.io for details.
https://gkeyll.readthedocs.io/en/latest/
62 stars 18 forks source link

Remove some Gkyl namespace stuff, enable Cuda in g2, and add NCCL wrapper #104

Closed manauref closed 2 years ago

manauref commented 2 years ago

In preparation for parallelizing species across GPUs (and also decomposing space across multiple GPUs), we

  1. Enable Cuda in g2.
  2. Add a wrapper for NCCL (similar to our MPI wrapper) used for inter-GPU communication.
  3. Remove a bunch of the Gkyl namespace stuff we had implemented the 1st year we attempted GPU implementation (like those huge templates).

The first was needed to interface with NCCL. The latter made build/compilation easier or possible.

Note to myself and maybe others: I think the GC could be invoked in more places where we wrap MPI and CUDA objects to be a little safer. See how NCCL communicators are created in Comm/Nccl.lua.