GPU programming IV-VI: exercises HIP Error Checking Wrapping HIP calls into an error checking macro Basics of HIP programming Hello world Kernel: saxpy Kernel: copy2d Streams, events, and synchronization Understanding asynchronicity using events Investigating streams and events Asynchronous operations (OpenMP) Memory management Memory management strategies Unified memory and structs Memory performance strategies EXTRA: advanced c++ memory wrapping strategies Fortran and HIP Hipfort: saxpy & pi Multi-GPU programming Ping-pong with multiple GPUs and MPI Vector sum on two GPUs without MPI Peer to peer device access (HIP and OpenMP) Bonus: Heat equation with HIP