.. _rascil_wagg: RASCIL and WAGG --------------- .. note:: WAGG was released with the implementation in `ska-sdp-func `_. ``invert_wg`` and ``predict_wg`` were migrated to `ska-sdp-func-python `_. RASCIL can use GPU-based version of nifty-gridder called WAGG for the gridding-degridding operations: https://gitlab.com/ska-telescope/sdp/ska-gridder-nifty-cuda/-/tree/sim-874-python-wrapper There are two function counterparts to predict_ng and invert_ng called predict_wg and invert_wg, WAGG needs to be installed from its repository after the RASCIL installation. WAGG uses numpy to build the installation wheel, and it will download the recent one if numpy is absent in a system. The numpy version mismatch can cause the WAGG crash. By installing WAGG after RASCIL, we make sure it uses the numpy version that RASCIL requires for the build. Installing WAGG module ********************** To install WAGG it is required to clone the repository, switch to the python wrapper branch, change to `python` folder and run `pip install .` , i.e.:: git clone https://gitlab.com/ska-telescope/sdp/ska-gridder-nifty-cuda.git cd ska-gridder-nifty-cuda git checkout --track origin/sim-874-python-wrapper cd python pip install . Alternatively, WAGG can be installed directly with `pip`:: pip install git+http://gitlab.com/ska-telescope/sdp/ska-gridder-nifty-cuda.git@sim-874-python-wrapper#subdirectory=python Using WAGG GPU-based predict and invert functions ************************************************* WAGG module makes a use of Nvidia runtime system, called `NVRTC`. It is a runtime compilation library for CUDA C++. It accepts CUDA C++ source code in the form of a string, and outputs GPU-specific PTX (Parallel Thread Execution) instructions. The PTX code generated by NVRTC can be loaded and linked with other modules of the CUDA Driver API. More information on `NVRTC` can be found on CUDA website, https://docs.nvidia.com/cuda/nvrtc/index.html . When the runtime support is installed, the functions predict_wg and invert_wg can be used as the CPU-based predict_ng and invert_ng since the parameters are the same. One can find an example on how to use the functions predict_ng and invert_ng in the Imaging and deconvolution demonstration Jupyter notebook in :ref:`rascil_examples` section.