Optimization by runtime specialization for sparse matrix-vector multiplication

Sam Kamin, María Jesús Garzarán, Bariş Aktemur, Danqing Xu, Buse Yilmaz, Zhongbo Chen

Research output: Contribution to journalArticlepeer-review


Runtime specialization optimizes programs based on partial information available only at run time. It is applicable when some input data is used repeatedly while other input data varies. This technique has the potential of generating highly efficient codes. In this paper, we explore the potential for obtaining speedups for sparse matrix-dense vector multiplication using runtime specialization, in the case where a single matrix is to be multiplied by many vectors. We experiment with five methods involving runtime specialization, comparing them to methods that do not (including Intel's MKL library). For this work, our focus is the evaluation of the speedups that can be obtained with runtime specialization without considering the overheads of the code generation. Our experiments use 23 matrices from the Matrix Market and Florida collections, and run on five different machines. In 94 of those 115 cases, the specialized code runs faster than any version without specialization. If we only use specialization, the average speedup with respect to Intel's MKL library ranges from 1.44x to 1.77x, depending on the machine. We have also found that the best method depends on the matrix and machine; no method is best for all matrices and machines.

Original languageEnglish (US)
Pages (from-to)93-102
Number of pages10
JournalACM SIGPLAN Notices
Issue number3
StatePublished - 2015


  • Performance evaluation
  • Program specialization
  • Sparse matrix-vector multiplication

ASJC Scopus subject areas

  • Computer Science(all)


Dive into the research topics of 'Optimization by runtime specialization for sparse matrix-vector multiplication'. Together they form a unique fingerprint.

Cite this