GPM is a system which allows a GPU to leverage Persistent Memory and enables writing highly performant recoverable GPU applications. The repository contains the source of our benchmark suite: GPMBench and a CUDA library: LibGPM. GPMBench comprises of 9 benchmarks categorized as transactional, native and checkpointing. LibGPM contains the source of our CUDA library which provides a user-friendly interface for GPU-accelerated recoverable applications.
For full details refer to our paper: [Paper] [Video]
GPM: Leveraging Persistent Memory from a GPU Shweta Pandey, Aditya K Kamath, and Arkaprava Basu 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), 2022 DOI: https://doi.org/10.1145/3503222.3507758
This section explains how to setup your NVDIMM config to be run in app direct mode. This also makes sure that all the PMEM strips are interleaved to attain maximum bandwidth.
- Install all the dependencies to support PMEM
chmod +x dependencies.sh
sudo ./dependencies.sh
- Run the teardown script to tear down any older PMEM configuration.
sudo ./pmem-setup/teardown.bashrc
- Run the preboot script to destroy all the existing namespaces. This script will also reboot the sytsem.
sudo ./pmem-setup/preboot.bashrc
- Run the config-setup script to configure interleaved namespace for PMEM along with app-direct mode. To run the script one has to be root.
sudo su
./pmem-setup/config-setup.bashrc
exit
We provide the scripts required to compile and generate the results contained in the paper. Further details on how to replicate results can be found in the README in the GPMBench folder.
The relevant source code for libGPM can be found in "LibGPM". Further details on the source code and full API documentation can be found in the README in the LibGPM folder.