/sputnik

A library of GPU kernels for sparse matrix operations.

Primary LanguageC++Apache License 2.0Apache-2.0

Sputnik

Sputnik is a library of sparse linear algebra kernels and utilities for deep learning.

Build

Sputnik uses the CMake build system. Sputnik depends on the CUDA toolkit (v10.1+) and supports SM70+. The only additional dependency for the library is google/glog. To build the library, enter the project directory and run the following commands:

mkdir build && cd build

cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON -DCUDA_ARCHS="60;62"

For -DCUDA_ARCHS, see this https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/.

make -j12

The test and benchmark suites additionally depend on abseil/abseil-cpp, google/googltest, and google/benchmark. These dependencies are includes as submodules in third_party. To build the test suite and/or benchmark suite, set -DBUILD_TEST=ON and/or -DBUILD_BENCHMARK=ON in your cmake command.

cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON -DCUDA_ARCHS="70;75"

For -DCUDA_ARCHS, see this https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/.

Docker

Sputnik provides a Dockerfile that builds the proper environment with all dependencies. Note that nvidia-docker must be installed to run on GPU. To build the image, run the following command:

docker build . -t sputnik-dev

To launch the container with the sputnik source mounted under /mount (assuming you're working out of $HOME), run the following:

sudo docker run --runtime=nvidia -v ~/:/mount/ -it sputnik-dev:latest

Citation

If you make use of this library, please cite:

@inproceedings{sgk_sc2020,
  author    = {Trevor Gale and Matei Zaharia and Cliff Young and Erich Elsen},
  title     = {Sparse {GPU} Kernels for Deep Learning},
  booktitle = {Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, {SC} 2020},
  year      = {2020},
}

The sparse models and dataset of sparse matrices from deep neural networks from the above paper can be found here.

Disclaimer

This is not an official Google product.