What is ParSol

ParSol is a library for semi-automatic parallelisation of data-parallel (especially linear algebra) algorithms. It is written in C++, using such C++ features as OOP, template metaprogramming, operatror overloading and others, so that the usage of the library is simple and intuitive, and the library itself is easily expanded.

The library presents user with the set of linear algebra objects (multidimentional arrays, vectors, sparse and dense matrices, among others). The functionality of arrays and vectors is similar to those of such libraries as Blitz++, FreePOOMA, and Boost.MultiArray. Using the library, the programmer creates sequential version of the code (no MPI needed), and debugs it. Once done, the parallel version of the algorithm is created by substituting some header files (to switch from sequential to parallel version), some class names, and adding several lines of code (initialization, topology specification and data exchange). The parallel version should be recompiled using MPI implementation (at least MPI-1.1 support required).

The parallelization is done the same way as in HPF. In fact, the library brings to C++ parallelization functionality similar to the one HPF brings to Fortran. However, differently from HPF, ParSol is a library, not a new compiler, with all the pros and cons. Also, in ParSol, the programmer must explicitely specify the computational stencil in order to ensure the optimal data exchange. From the one hand, this was a necessity, because it is hard for the library to analyse arbitrary user code. From the other hand, however, this allows for easy communication costs fine-tuning - the area where HPF failed to meet the expectations.

Apart from parallelization, the library objects are fine-tuned for high performance. For example, ParSol arrays performs similar to native C/C++ arrays. Also, the library uses only standard C++ features and MPI-1.1 for parallel version, which makes it highly portable. A comprehensive test suite is also available as a part of library.

ParSol compared to other libraries

Among the similar scientific libraries that ParSol may be compared to, FreePOOMA and PETSc should be mentioned. Both are more mature projects that ParSol, and it's great if they provide all the necessary functionality.

FreePOOMA went a much longer way towards implementing Fortran features in C++. And it works, but ... C++ is not a Fortran. What in Fortran is buried in specification and works by default, in C++ should be explicitely specified. For example, it is possible (and necessary in FreePOOMA, if you want it to be parallelized) to write A(I) = B(I+1) + C(I-1) in FreePooma, but code like that may require a bunch of FreePOOMA-specific objects initializations before. Is it clearer and simpler than writing a simple for-loop?

But the bigger problem of FreePOOMA is the absense of matrices, especially the sparse ones. This renders the library unusable for the large class of computational problems. In this case, ParSol library may be used.

PETSc does not have the matrix shortcomings of FreePOOMA. It has various types of matrices and linear equation solvers. However, PETSc primary interface if in C, and hence is functional and not as simple as ParSol's or FreePOOMA. Another problem with PETSc is its usage of global memory parallel programming model. This model allows for solution of more general problems, but at the cost of worse performance. Also, PETSc uses more explicit parallel programming, so if you need a clean implementation of linear algebra problem, both sequential and parallel (with high parallelization efficiency) at minimal cost, ParSol may be the valuable alternative.

ParSol links

Here're the ParSol library related links:

Related publications

The ParSol library was used in several scientific projects, and therefore is mentioned is several publications. The list is provided here:

  1. R. Čiegis, A. Jakušev, V. Starikovičius. Parallel tool for solution of multiphase flow problems. Lecture Notes in Computer Science, 6-th International Conference, PPAM-2005, Poznan, Poland, September 11–14, 2005. Revised Selected Papers, Vol. 3911, 2006, p. 312–319. ISSN 0302-9743.
  2. R. Čiegis. Parallel LOD Scheme for 3D Parabolic Problem with Nonlocal Boundary Condition. Lecture notes in computer science, International conference EurPar2006. Dresden, Germany, September 1–5, 2006. Revised Papers. Springer. Vol. 4128, 2006, p. 679–688.
  3. A. Jakušev, V. Starikovičius. Application of Parallel Arrays for Parallelisation of Data Parallel Algorithms. Computer Aided Methods in Optimal Design and Operations, Series on Computers and Operations research, Vol. 7, 2006, p. 109–118. ISBN 981-256-909-X.
  4. V. Starikovičius, R. Čiegis, A. Jakušev. Analysis of upwind and high-resolution schemes for solving convection dominated problems in porous media. Mathematical modelling and analysis, 11(4), 2006, p. 451–474. ISSN 1392-6292. Available online.
  5. R. Čiegis, A. Jakušev, A. Krylovas and O. Suboč. Parallel algorithms for solution of nonlinear diffusion problems in image smoothing. Mathematical Modelling and Analysis, 10(2), 2005, p. 155–172. ISSN 1392-6292. Available online.
  6. Raim. Čiegis, Rem. Čiegis, A. Jakušev, G. Šaltenienė. Parallel Variational Iterative Linear Solvers. Mathematical Modelling and Analysis, 12(1), 2007, p. 1–16. ISSN 1392-6292. Available online.
  7. A. Jakušev. Application of Template Metaprogramming Technologies to Improve the Efficiency of Parallel Arrays. Mathematical Modelling and Analysis, 12(1), 2007, p. 71–79. ISSN 1392-6292. Available online.
  8. R. Čiegis. Parallel numerical algorithms for 3D parabolic problem with nonlocal boundary condition. Informatica, 17(3), 2006, p. 309–324.
  9. R. Čiegis, A. Jakušev. Lygiagretieji algoritmai vaizdų filtravime. Lietuvos matematikos rinkinys, 45, spec. nr., 2005, p. 411–416. ISSN 0132-2818. (in Lithuanian)
  10. A. Jakušev, V. Starikovičius and R. Čiegis. Application of parallel arrays for semiautomatic parallelization of flow in porous media problem solver. Proceedings of the 10th International Conference MMA2005 & CMAM2, Trakai, Lithuania, 2005, p. 171–177. ISSN 1392-6292.
  11. R. Čiegis, A. Jakušev and O. Suboč. Nonlinear diffusion problems in image smoothing. Proceedings of the 10th International Conference MMA2005 & CMAM2, Trakai, Lithuania, 2005, p. 381–388. ISSN 1392-6292.
  12. A. Jakušev. Išraiškų šablonų naudojimas C++ masyvų efektyvumo didinimui. 9-osios Lietuvos jaunųjų mokslininkų konferencijos ``Lietuva be mokslo — Lietuva be ateities'' medžiaga, 1278, 2006, p. 94–101. ISBN 9986-05-997-6. (in Lithuanian)

Valid HTML 4.01 Strict