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.