Skip to content

harp-lab/gdlog

Repository files navigation

Datasets

Dependencies

Hardware

  • The complete benchmark of the CUDA-based transitive closure computation experiment can be executed on an Nvidia A100 GPU with a minimum of 40 GB GPU memory. The ThetaGPU single-GPU node is a suitable choice.
  • Partial benchmarks can be run on other Nvidia GPUs, but they may result in program termination for certain datasets due to limited GPU memory, leading to an instance of the std::bad_alloc: cudaErrorMemoryAllocation: out of memory error.

NVIDIA CUDA Toolkit (version 11.4.2 or later)

CMake

Thrust

Transitive Closure Computation

  • Transitive closure computation is a fundamental operation in graph analytics and relational algebra.
  • We present a CUDA-based implementation of transitive closure computation that is optimized for sparse graphs.
  • Build and run instructions are provided below:
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -S./ -B./build 
cd build
make

This will build the TC executable using the nvcc compiler.

  • The TC executable takes a single argument, which is the path to the input file containing the graph data. The input file should be in the following format:
./TC ../data/data_5.txt

Run instructions for Polaris

  • Run using Interactive node:
ssh <USERNAME>@polaris.alcf.anl.gov
qsub -I -l select=1 -l filesystems=home:eagle -l walltime=1:00:00 -q debug -A dist_relational_alg
module load gcc
cd slog-gpu-backend
git fetch
git reset --hard origin/main
rm -rf build
module purge
module load gcc
module load cmake
module load cudatoolkit-standalone
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -S./ -B./build 
cd build
make
./TC ../data/data_5.txt
  • Transfer a file from local machine to Polaris:
scp data_68993773.txt [email protected]:/home/arsho/slog-gpu-backend/data/

(Optional) Memory check:

  • After creating the build folder and TC executable, run the following commands to check for memory leaks and errors:
cuda-memcheck ./TC ../data/data_7035.txt
========= CUDA-MEMCHECK
...
TC time: 48.691
========= ERROR SUMMARY: 0 errors
compute-sanitizer ./TC ../data/data_7035.txt
========= COMPUTE-SANITIZER
...
TC time: 0.668892
========= ERROR SUMMARY: 0 errors

Run cuDF on Polaris