Investigating runtimes for parallel SVMs by implementing randomized SVD and parallel mat-mat multiplication on Python, Torch, PyCUDA and C++ - CBLAS and LAPACKE.
The work comprises of using algorithms for training and predicting classification datasets. These algorithms are - LSSVM, PLSSVM and LIBSVM. These are given at the following links:
- LSSVM - https://github.com/RomuloDrumond/LSSVM
- PLSSVM - https://github.com/SC-SGS/PLSSVM
- LIBSVM - https://github.com/cjlin1/libsvm
The goal of this project is to try to achieve speedup by replacing the regular matrix inverse in the fit functions of the above 3 libraries with -:
- Randomized SVD using CPU
- rSVD using GPU
- rSVD using C++ code using CBLAS and LAPACKE
- rSVD using Torch
- rSVD using PyCUDA
The algorithm for rSVD is taken from the paper: https://epubs.siam.org/doi/10.1137/090771806 "Finding Structure with Randomness: Probabilistic Algorithms for Constructing Approximate Matrix Decompositions" - Halko, Martinsson, Tropp (2011).