## 1 Introduction  
Sparse Linear algebra is vital to scientific computations and various fields of engineering and thus has been included among the seven dwarfs [1] by the Berkeley researchers. Among the sparse numerical techniques, iterative solutions of sparse linear equation systems can be considered as of prime importance due to its application in various important areas such as solving finite differences of partial differential equations (PDEs) [2; 3; 4], high accuracy surface modelling [5], finding steady-state and transient solutions of Markov chains [6; 7; 8], probabilistic model checking [9; 10; 11], solving the time-fractional Schrodinger equation [12], web ranking [13; 14; 15], inventory control and manufacturing systems [16], queuing systems [17; 18; 19; 20; 21; 22; 23], fault modelling, weather forecasting, stochastic automata networks [24; 25], communication systems and networks [26; 27; 28; 29; 30; 31], reliability analysis [32], wireless and sensor networks [33; 34; 35; 36; 37], computational biology [38], healthcare [27; 39; 40], transportation [41; 42], natural language processing [43], operations research [23], reliability analysis [44; 45], big data [46; 47], and smart cities [48; 49]. Sparse Matrix-Vector (SpMV) multiplication is the key operation of iterative methods for solving linear equation systems [50]. Iterative solvers such as Jacobi and Gauss-Seidel mainly consist of multiple iterations of Sparse Matrix-Vector computations, whereas a single iteration in Krylov solvers includes several SpMV operations. Sparse Matrix-Vector (SpMV) Multiplication is a Level-2 Basic Linear Algebra Subprograms (BLAS) operation between a sparse matrix and a dense vector and can be represented mathematically as \(y=A\times x+b\)[51]. Other sparse computations such as eigenvalue problems (\(Ax=\lambda x\)) also require a large number of SpMV operations. Implementation of parallel iterative solvers on different kinds of graphics processing units (GPUs) has numerous issues. Specialized storage structures are used to improve the performance of SpMV. These structures have design issues for translating it to GPUs. The major issues include coalesced memory access to both the sparse matrix \(A\) and the vector \(y\), load balance among array threads and warps, thread divergence among a warp of threads, performance variance based on the structure of the sparse matrices, and the amount of memory access required for computations. These issues are due to the irregular sparsity structure of the matrix, which results in poor performance. Researchers have suggested several storage formats to improve SpMV on GPUs (see Section 3). Leading sparse libraries such as CUSP [52] and cuSPARSE [53] provide a number of sparse storage techniques including Coordinate (COO), Compressed Sparse Rows (CSR), ELLPACK (ELL), Hybrid (HYB), and Diagonal (DIA), and associated BLAS operations. However, the performance depends upon the sparsity structure and, due to the diversity in the sparsity pattern, they do not perform efficiently for all matrices. The burden of using an appropriate format for a given matrix usually lies with the user. Nevertheless, SpMV computations deliver low throughput due to the reasons mentioned above. In this article, we propose SURAA (an Arabic word meaning speed), a novel method for SpMV computations on GPUs that addresses the major challenges of SpMV computations on GPUs, i.e., load balanced execution, coalesced memory access, and redundant computations. The novelty lies in the way we group matrix rows into different segments, and the way we dynamically schedule various segments to different types of kernels. The sparse matrix data structure is created by sorting the rows of the matrix on the basis of the nonzero elements per row (\(npr\)) and forming segments of equal size (containing approximately an equal number of nonzero elements per row) using the Freedman-Diaconis rule [54; 55].