Skip to content

csl-iisc/GPM-ASPLOS22

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GPM: GPU with Persistent Memory

DOI

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

Setting up PMEM [~10 minutes]

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.

  1. Install all the dependencies to support PMEM chmod +x dependencies.sh sudo ./dependencies.sh
  2. Run the teardown script to tear down any older PMEM configuration. sudo ./pmem-setup/teardown.bashrc
  3. Run the preboot script to destroy all the existing namespaces. This script will also reboot the sytsem. sudo ./pmem-setup/preboot.bashrc
  4. 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

Replicating primary results (Figures and Tables)

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.

Source code

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.