clSpMV: A Cross-Platform OpenCL SpMV Framework on GPUs
| Package Description | The clSpMV framework optimizes the Sparse Matrix Vector multiplication (SpMV) kernel on OpenCL enabled GPU platforms. Given a sparse matrix, the ultimate goal is to find the best representation of any sparse matrix, and choose the best kernel implementation on the platform of choice automatically. |
| Matrix Format | The clSpMV framework uses the Cocktail Format to store a sparse matrix. The Cocktail Format is a combination of different sparse matrix formats. The idea is to represent specialized submatrices using specialized formats. Under the case that the sprase matrix should be represented by a single format, the clSpMV framework will also tell you which single format to choose. So far the package supports 9 different formats in the Cocktail Format: Diagonal based formats: Diagonal, Banded Diagonal Flat based formats: Sliced ELL, ELL, CSR, COO Block based formats: Sliced Blocked ELL, Blocked ELL, Blocked CSR |
| Executables | The package has two major executables: spmv_cocktail: Given a sparse matrix, analyze it, represent the matrix using the Cocktail Format, and perform the SpMV kernel. spmv_all: Represent the matrix using any 1 of the 9 supported format, and evaluate the execution time of different implementations of that format. |
| Framework Usage | The README file in the package summarizes how you can use the framework APIs on iterative solvers. |
| Documentation | Please read the README file in the package. |
| Paper | clSpMV Paper |
| Download | clSpMV - Version 0.1 - NVidia Platforms clSpMV - Version 0.1 - AMD Platforms |
Feedback |
I am interested in understanding where the framework is used. I really appreciate if you can spend 10 seconds and tell me the field (e.g. computer vision, molecular dynamics, ...) and the algorithm (eigen decomposition, conjugate gradient, ...) where the framework will be used. |
| Citation | Bor-Yiing Su, Kurt Keutzer, "clSpMV: A Cross-Platform OpenCL SpMV Framework on GPUs," in International Conference on Supercomputing (ICS 2012), Italy, June 2012.
@inproceedings{ics2012-su, |