Description

For the solution of a dense system of equation, LU-factorizations (aka. Gauss solver) are typically employed. However, a naive implementation of a Gauss-solver might fail for a large class of matrices and is rather sensitive to numerical noise.

A substantial improvement can be achieved by so-called pivoting. This is essentially nothing but a reordering of the equations. However, it ensures that the Gauss solver succeeds for all regular matrices and reduces the sensitivity with respect to numerical noise considerably. The challenge within this project is to implement a dense Gauss-solver with pivoting for massively parallel architectures such as GPUs using OpenCL.

Benefit for the Student

While LU factorizations are covered theoretically in basic numerics classes, the student will get practical experience within this project. A deep understanding for parallel algorithms will be obtained.

Benefit for the Project

The existing Gauss-solver without pivoting in ViennaCL will be replaced by a numerically much more robust implementation.

Requirements

The student should be familiar with basic linear algebra and LU factorizations. Background in OpenCL (or CUDA) is of advantage. Access to a machine with a mid- to high-range graphics adapter is beneficial, but not mandatory.

Mentors

Karl Rupp, Josef Weinbub