Skip to content

mindis/thundersvm

 
 

Repository files navigation

Build Status Documentation Status GitHub license

Overview

The mission of ThunderSVM is to help users easily and efficiently apply SVMs to solve problems. ThunderSVM exploits GPUs and multi-core CPUs to achieve high efficiency. Key features of ThunderSVM are as follows.

  • Support all functionalities of LibSVM such as one-class SVMs, SVC, SVR and probabilistic SVMs.
  • Use same command line options as LibSVM.
  • Support Python, R and Matlab interfaces.

Why accelerate SVMs: A survey conducted by Kaggle in 2017 shows that 26% of the data mining and machine learning practitioners are users of SVMs.

Documentations | Installation | API Reference (doxygen)

Contents

Getting Started

Prerequisites

  • CUDA 7.5 or above | cmake 2.8 or above | gcc 4.8 or above

Download

git clone [email protected]:zeyiwen/thundersvm.git

Build

cd thundersvm
mkdir build && cd build && cmake .. && make -j

Quick Start

./bin/thundersvm-train -c 100 -g 0.5 ../dataset/test_dataset.txt
./bin/thundersvm-predict ../dataset/test_dataset.txt test_dataset.txt.model test_dataset.predict

You will see Accuracy = 0.98 after successful running.

Advanced

Working without GPUs

If you don't have GPUs, ThunderSVM can work with CPU only.

Get Eigen Library

ThunderSVM uses Eigen for matrix calculation. To use Eigen, just initialize the submodule.

# in thundersvm root directory
git submodule init eigen && git submodule update

Build without GPUs

# in thundersvm root directory
mkdir build && cd build && cmake -DUSE_CUDA=OFF -DUSE_EIGEN=ON .. && make -j

Now ThunderSVM will work solely on CPUs and does not rely on CUDA.

How to cite ThunderSVM

If you use ThunderSVM in your paper, please cite our work.

@article{wenthundersvm17,
 author = {Wen, Zeyi and Shi, Jiashuai and He, Bingsheng and Li, Qinbin and Chen, Jian},
 title = {{ThunderSVM}: A Fast SVM library on GPUs and CPUs},
 journal = {To appear in arxiv},
 year = {2017}
}

Related websites

Acknowlegement

  • We acknowledge NVIDIA for their hardware donations.
  • This project is hosted by NUS, collaborating with Prof. Jian Chen (South China University of Technology). Initial work of this project was done when Zeyi Wen worked at The University of Melbourne.
  • This work is partially supported by a MoE AcRF Tier 1 grant (T1 251RES1610) in Singapore.
  • We also thank the authors of LibSVM and OHD-SVM which inspire our algorithmic design.

About

ThunderSVM: An Open-Source SVM Library on GPUs and CPUs

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 94.1%
  • Cuda 3.6%
  • CMake 0.9%
  • Python 0.7%
  • C 0.3%
  • Shell 0.2%
  • Other 0.2%