/Benchmark_SpMV_using_CSR

CSR-based SpMV on Heterogeneous Processors (Intel Broadwell, AMD Kaveri and nVidia Tegra K1)

Primary LanguageC++MIT LicenseMIT

SpMV on Heterogeneous Processors using the CSR Format



Introduction

This is the source code of the paper

Weifeng Liu and Brian Vinter, "Speculative Segmented Sum for Sparse Matrix-Vector Multiplication on Heterogeneous Processors". Parallel Computing, 2015. (accepted April 2015) [pdf]

Contact: Weifeng Liu and Brian Vinter (vinter at nbi.ku.dk).

Our algorithm has been implemented on three heterogeneous processors from Intel, AMD and nVidia. See below for a guide on how to benchmark our code.



Intel platform

  • Prerequisites
  1. Processor: Intel Broadwell (the 5th generation processor, e.g., Intel Core i3-5010U) or above,

  2. OS: Microsoft Windows 7 or above,

  3. Other tools: Intel OpenCL SDK with OpenCL 2.0 support, Microsoft Visual Studio 2012 or above.

  • Benchmarking
  1. Open Visual Studio solution spmv_opencl_intel.sln in folder spmv_opencl_intel.

  2. Make sure Debug and x64 in the Visual Studio IDE are selected.

  3. Build the project.

  4. Got to folder x64/Debug and run the generated executable file with an argument (filename of the benchmark matrix in the Matrix Market format). E.g., spmv.exe D:\matrices\filename.mtx.



AMD platform

  • Prerequisites
  1. Processor: AMD Kaveri (e.g., AMD A10-7850K) or above,

  2. OS: Ubuntu or other Linux versions,

  3. Other tools: AMD GPU driver with OpenCL 2.0 support, AMD APP SDK 3.0 Beta or above.

  • Benchmarking
  1. Make sure Makefile in folder spmv_opencl_amd has corrected paths.

  2. Run make USE_DOUBLE=0 or make USE_DOUBLE=1 for building single precision or double precision SpMV.

  3. Run the generated executable file with an argument (filename of the benchmark matrix in the Matrix Market format). E.g., ./spmv /home/user/Downloads/matrices/filename.mtx.



nVidia platform

  • Prerequisites
  1. Processor: nVidia Tegra K1 or above,

  2. OS: Ubuntu Linux 14.04 or above,

  3. Other tools: nVidia GPU driver r19.2 or above, CUDA SDK 6.0 or above.

  • Benchmarking
  1. Make sure Makefile in folder spmv_cuda has corrected paths.

  2. Make sure Makefile has proper shader model (e.g., -arch=sm_32) for nvcc compiler.

  3. Run make USE_DOUBLE=0 or make USE_DOUBLE=1 for building single precision or double precision SpMV.

  4. Run the generated executable file with an argument (filename of the benchmark matrix in the Matrix Market format). E.g., ./spmv /home/user/Downloads/matrices/filename.mtx.