Available Software


Mondriaan software and papers. Latest version 4.2 (September 14, 2017).

GPU Software

Developed by Bas Fagginger Auer.


SAWdoubler software and papers. Latest version 1.0 (August 15, 2012).


BSPedupack is a library of numerical algorithms written in C according to the BSP model. It uses the BSPlib standard library. The "edu" in the name stands for educational. The programs are intended for teaching: they give examples of portable parallel numerical programs. The trade-off between clarity/brevity on the one hand, and efficiency on the other hand is in favour of clarity/brevity. There is also an MPI version which teaches how to program in bulk synchronous parallel style using the collective communications from MPI-1 and the one-sided communications from MPI-2. You guessed it, this package is called MPIedupack. Both packages accompany the book: Parallel Scientific Computation: A Structured Approach using BSP and MPI, by Rob H. Bisseling, Oxford University Press, March 2004. ISBN 978-0-19-852939-2.

Programs in BSPedupack: inner product "how to get started" with BSPlib; BSP benchmark; dense LU decomposition; Fast Fourier Transform; sparse matrix-vector multiplication.

Programs in MPiedupack: equivalents of all the programs in BSPedupack.

Official release: BSPedupack and MPIedupack version 1.0 (January 30, 2004).

This is freeware. Copyright reserved by the author, Rob Bisseling 2004, but otherwise freely available and distributable under the GNU General Public License .

To run the programs from BSPedupack you must have BSPlib installed. A good version is BSPonMPI, available from BSP worldwide BSP worldwide. To run the first four programs from MPIedupack you must have MPI-1 installed. The fifth program uses one-sided communications from MPI-2.

Detailed contents of BSPedupack

  • README. Explains all.
  • bspinprod/mpiinprod. A simple and small program which tells you how to get started with writing BSP or MPI programs. It computes an inner product. The BSP program shows the 12 most important BSPlib primitives (out of 20) in action, including the direct memory access ones. The MPI program shows the MPI setup and two collective communications (broadcast and allreduce).
  • bspbench/mpibench. A benchmarking program that gives you as the bottom line the p, r, g, l of your computer, measured for puts (in the BSP case) and for an all-to-all collective communication (in the MPI case).
  • bsplu/mpilu. An LU decomposition program using the 2D cyclic distribution.
  • bspfft/mpifft. An FFT program that starts and ends with the cyclic distribution and that performs a minimal number of communication supersteps, most likely only one.
  • bspmv/mpimv. A sparse matrix-vector multiplication program. Input uses Mondriaan partitioning. BSP program uses gets and sends. MPI program uses gets and accumulates from MPI-2.
  • bspedupack.h/mpiedupack.h. Header file for BSPedupack/MPIedupack.
  • bspedupack.c/mpiedupack.c. Matrix and vector allocations with error messages if no memory is available.
  • Makefile. Describes compilation.


    PartitionSums software Version 1.0 Released July 2, 2009 Software accompanying the paper "Efficient calculation of partition sums for DNA/RNA hybridization" by Matthijs G. A. van Dorp, Rob H. Bisseling, and Gerard Barkema, submitted June 27, 2009. See also "The many-state partition sum in DNA and RNA hybridization and its application to DNA microarrays ", by Matthijs van Dorp, M.Sc. Thesis, Mathematical Institute and Institute of Theoretical Physics, Utrecht University, July 2009, 70pp. Documentation is available, see the User Guide by Matthijs van Dorp. This software is released under the GNU LGPL license.


    MLIB is a library written in Pascal for the simulation of various scientific computations on a Bulk Synchronous Parallel (BSP) computer. For these simulations, it uses the uniform format of sparse matrix vector multiplication. For a detailed description, see R. H. Bisseling and W. F. McColl, Scientific Computing on Bulk Synchronous Parallel Architectures, Preprint 836, Department of Mathematics, Utrecht University, dec. 1993.

    MLIB contains the following types of programs:

    1. Programs that generate various sparse matrices: hyp.p, dense.p, random.p, md.p, mdr.p.
    2. A program that creates matrix-independent distributions: mkd.p.
    3. Programs that create matrix-dependent distributions: mkdmd.p, mkdhyp.p.
    4. A program that computes the BSP cost of a sparse matrix vector multiplication for a given sparse matrix with a given Cartesian distribution: mvst.p.
    Use them in this order: 1; 2 or 3; 4.

    For reasons of copyright we removed the random number generator that we used (ran1 from Numerical Recipes in Pascal). You have to plug in your favourite random number generator wherever ran1 is called. This occurs in random.p, md.p, mdr.p, mkd.p.

    The software has run successfully on SUN workstations. You may have to adapt the filehandling for your own system. MLIB is avaliable as a .

    Disclaimer: this software is copyrighted by R. H. Bisseling and W. F. McColl, 1993. You can use and modify it freely. Anything free, as usual, comes with no guarantee!

    Last updated September 3, 2018.