This repository was archived by the owner on Dec 22, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 15
Essentials For Linux
Muhammad Osama edited this page Dec 24, 2021
·
6 revisions
This page covers the process of getting Essentials for Linux and how one may run the provided examples. We do not provide a compiled binary of Essentials/Gunrock for any environment.
- NVIDIA CUDA Supported Linux Distros, our development is on Ubuntu 18.04 and 20.04.
- Supported GCC, G++ (also listed in Table 1. Native Linux Distribution Support).
- CUDA 11.2 or higher, the latest CUDA version is recommended.
- CMake version 3.20.1 or higher.
- Thrust, CUB, ModernGPU, and CXXOpts (automatically downloaded using cmake).
-
GoogleTest (automatically downloaded when using cmake with flag
-DESSENTIALS_BUILD_TESTS=ON
) -
NVBench (automatically downloaded when using cmake with flag
-DESSENTIALS_BUILD_BENCHMARKS=ON
)
- Clone using
git
git clone https://github.com/gunrock/essentials.git
- Download ZIP
wget --no-check-certificate https://github.com/gunrock/essentials/archive/refs/heads/master.zip
unzip master.zip
- Once you have the correct
cmake
version installed, which can be checked bycmake --version
, follow the following steps:
cd essentials
mkdir build && cd build
cmake [{-D <var>=<value>}...] ..
- [🌟] Using
cmake
with a variable/option:
cmake -DESSENTIALS_BUILD_TESTS=ON ..
- You can now build all applications using:
make
- [🌟] Or build a specific application by specifying its name after
make
:
make sssp
- [🌟] All binaries are found in
bin
in yourbuild
directory, to run an application:
./bin/sssp ../datasets/chesapeake/chesapeake.mtx
- [🌟] Sample output:
./bin/sssp ../datasets/chesapeake/chesapeake.mtx
Single Source = 0
GPU distances[:40] = 0 2 2 2 2 2 1 1 2 2 1 1 1 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 1 1 2 1 2 1
CPU Distances[:40] = 0 2 2 2 2 2 1 1 2 2 1 1 1 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 1 1 2 1 2 1
GPU Elapsed Time : 2.20403 (ms)
CPU Elapsed Time : 0.003 (ms)
Number of errors : 0
[🌟] Example command usage.
Essentials © 2022 The Regents of the University of California
- Programming Model
- Gunrock Operators
- Graph Algorithms
- Getting Essentials
- (GitHub Template)
essentials
project example
- MGPU, Python, Docs (needs review)
- Boolmap Frontier
- Hypergraphs (private)
- Modern CPP Features
- Programming Interface Examples (API)
- Style Guide
- Understanding the code structure
- Git Workflow
-
Debugging with
cuda-memcheck
andcuda-gdb
- Profiling with NVIDIA Nsight Systems and Compute
- Unit testing with GoogleTest
- Performance analysis
- How to write a new graph algorithm
- PageRank: PageRank: From
networkx
togunrock essentials
- How to write parallel operators
- How to add a new graph representation
- How to add a new frontier representation
- How to add multiple GPU support
- How to bind an application to python
- How to use
thrust
/cub
- Writing sparse-matrix dense-vector multiplication using graphs
- Variadic Inheritance
- Polymorphic-Virtual (Diamond) Inheritance
- Need for custom copy constructor
- CUDA-enabled
std::shared_ptr
- Ubuntu
-latest
- Windows
-latest
- Doxygen
- Code Quality