Student Research Projects

GPU Saturation for Multiple Matrix-Vector Multiplications

Student Tyler Chang, '16
Faculty Mentor(s)
Department Computer Science
Course Computer Science 489: Research in Computer Science


Graphics Processing Units (GPUs) are massive systems of parallel processors designed for rapid 3D rendering. In recent years, GPUs have seen increasing use in general-purpose scientific computing. Their parallel nature makes them ideal for problems that require numerous independent
strings of computations, such as matrix multiplication. When multiplying an m×n matrix by an n element vector, we must calculate each of the terms in the m element output vector independently. When performing such a series of calculation with large matrices and vectors on a serial CPU, this process could take an extremely long time. It has been shown that calculating all output elements in parallel on separate nodes of a GPU can increase computational speed by orders of magnitude. However, when the matrices are not large enough to saturate the nodes of the GPU, some computational power is still lost. The goal of this project is to investigate the GPU assisted multiplication of multiple pairs of matrices and vectors, when none of them individually saturate the GPU. First, an existing algorithm was coded and profiled to establish base performance levels.
Next, a new algorithm was developed to perform multiple matrix multiplication problems in parallel. Finally, this solution was profiled and compared to the performance of the original algorithm.
The resulting code incorporates parallel processing on both the CPU and GPU. This solution was able to calculate the output vectors in approximately 1/4th the original time.