Many computations like physics or biologists simulations these days run on accelerated hardware like CUDA GPUs or Intel Xeon Phi, which are distributed in a big compute cluster communicating over MPI. The goal of ISAAC is to visualize this data without the need to download it to the host while using the high computation speed of the accelerator.
ISAAC insists of two parts: The server and the insitu library. Furthermore, there needs to be a client, which is able to show the transferred stream and metadata. A reference HTML5 client is provided, but needs to be adapted to specific simulations and is not part of ISAAC itself (but still in the repository).
The simulation code has just to add calls and settings to the insitu template library. After that, the server will notice when a simulation is running and give the user some options to observe the computations on the fly. It is also possible to send metadata back to the simulation, e.g. to restart it with improved settings.
Related projects
PIConGPU
PIConGPU is an extremely scalable and platform-portable application for particle-in-cell simulations. While we mainly use it to study laser-plasma interactions, it has also found utility in astrophysical studies and simulations of matter under extreme conditions.
alpaka
PIConGPU achieves hardware parallelization through the alpaka library, a C++17 tool for accelerator development. It offers performance portability across accelerators, supports CPUs and CUDA GPUs, and provides backend options for concurrent execution, streamlining parallelization without requiring CUDA or threading code. Its approach mirrors CUDA's grid-blocks-threads model for optimal hardware adaptation.