We extend the simple previous examples to now use a heterogeneous job to send _ping pong_ messages between the job components of increasing size.
Extending the previous examples, we now send ping pong messages between the CPU memory of one node and the GPU memory of another node, using the heterogeneous job features of Slurm.
Execute the following on JUWELS Booster
TODOs in `ping-pong.cu` indicate points to implement pointers to GPU memory instead of CPU memory.
After working on the TODOs, execute the following on JUWELS Booster to compile `ping-pong.cu` with the right modules.
```bash
bash compile.sh
```
Execute the following on JUWELS Cluster
Execute the following on JUWELS Cluster to compile the CPU part of the application and submit a batch job: