The finite element method is a widespread tool for solving boundary value problems approximately. These problems often arise in physics, for example in electrodynamics and mechanics. To get accurate approximations to the true solution, fine discretizations are needed leading to large systems of linear equations. To accelerate solution of these systems, the algorithms are parallelized by the use of multiprocessors. In particular, graphics adapters are employed for parallel processing and are investigated for their potential within the finite element method.
This work makes use of the Open Computing Language, in short OpenCL, which is a platform independent framework for programming multiprocessor computing architectures, including an application programming interface and a programming language definition. Graphics adapters are programmed by using the OpenCL framework. Different types of sparse matrix storage schemes, which can be used for finite element solving, are presented.
Matrix-vector multiplications of these implementations are benchmarked.
Theoretical algorithm and memory requirement complexities are discussed and implementations using OpenCL are presented. ViennaCL, a C++ Basic Linear Algebra Subprograms (BLAS) implementation, which makes heavy use of OpenCL, is presented. A mathematical introduction to boundary value problems and the finite element method is given. Finite element implementations are proposed and benchmarked. The benchmark results are presented and discussed.