Developing object-oriented parallel iterative methods. (8th August 2005) - Ouarraui, Chakib; Kaeli, David
In this paper, we describe our work developing an object-oriented parallel toolkit on OO-MPI. We are developing a parallelised implementation of the multi-view tomography toolbox, an iterative solver for a range of tomography problems. The code is developed in object-oriented C++. The MVT toolbox is presently used by researchers in the field of tomography to solve linear and non-linear forward modelling problems. The performance of the toolbox is heavily dependent on the performance of a small number of classes present in the IML++ library. This paper describes our experience parallelising a sparse matrix algorithm provided in the IML++ object-oriented numerical library. This library comprises a number of iterative algorithms. In this work, we present a parallel version of BiCGSTAB algorithm and the block-ILU preconditioner. These two algorithms are implemented in C++ using OOMPI (object-oriented MPI), and run on a 32-node Beowulf cluster. These two routines are also fundamental to obtaining good performance when using the parallelised version of the MVT toolbox. We also demonstrate the importance of using threads to overlap communication and computation, as an effective path to obtain improved speedup.