Simple tools: EMM2DMM, text2bin, tabularise.


Algebraic Programming (ALP)

IRs, communication layers, domain-specific languages, libraries and everything in-between for realising Algebraic Programming (ALP). Apache 2.0 licensed, free and open source available at:

A separate webpage describes the overall vision that drives Algebraic Programming.

Notable sub-projects:

This is open research: feel free to use, comment, discuss, create issues, or submit pull requests!

High-performance BSP

A package of high-performance BSP proto-apps distributed under GPL. The first release contains See the corresponding paper for further details. Additions and further improvements may be forthcoming. Note that the code depends on the MulticoreBSP for C and the Sparse Library software.


A Bulk Synchronous Parallel (BSP) library specifically targeting shared-memory computing. Its interface updates that of the BSPlib standard, and adds two new high-performance primitives. For more information and access to the freely available software, see the project homepage:

Sparse Library:

update to v1.6.0 since November 19th, 2014
This Sparse Library aims to provide simple means to perform basic sparse matrix computations using a wide range of storage formats for sparse matrices, in a research-oriented setting. Currently it supports the following storage and multiplication schemes: Since version 1.5 the Sparse Library also supports parallel schemes. The currently supported schemes are: Matrix-market input format is supported. Binary load/save operations are supported via the TS scheme. Methods in the library support the following operations: Some strategies are implemented as utilities using the Sparse Library and make use of the sequential schemes in the Sparse Library. These are:
Warning for when using the parallel schemes:
Most strategies read the file in its current directory to get the number of threads to use. If this file does not exist, this number will be one by default. E.g., to use four threads, execute echo 4 > prior to starting your experiment.

R-tree library:

The R-tree datastructure family is a tree-like datastructure particularly fit for handling spatial data. The R-tree library aims for implementing many R-tree variants in a generic fashion. See the SourceForge homepage for more details.

Cache Simulator:

The Cache Simulator is currently used as a tool for researching effect of given sparse matrix reorderings with respect to cache efficiency. The library supplies one with tools necessary for run-time cache simulation, according to an idealised cache model detailed in the documentation. Thus, no exact cache simulation is implied (see for this end, for example, the valgrind tool cachegrind, or have a look at PAPI).

Audio and picture compression in MATLAB:

This is software illustrating the use of the Fast Fourier Transform (FFT) in audio (for example MP3) and picture (JPG) compression by use of the MATLAB software package. The audio part was originally used in a lecture, part of a short 2-day course for high-school students. The picture part was used in a hands-on computer session by the same high-school students. A manual (in Dutch) directed to those students is also available.
The main functions of the package are sound_demo, basic_compression and jpg. See their respective .m files for their detailed use and usage. Any comments or additions are most welcome.

jpg.m was coded by Arno Swart.


Utility to convert a single Extended Matrix-Market file containing a distributed matrix, to the three-file distributed Matrix-Market format. Example use is ./emm2dmm test.emm which will produce test.emm.mtx, test.emm.v and test.emm.u.


Utility to convert a text-file containing an array of line-seperated integers to a binary file. Integers are assumed unsigned and representable in (less than) 32-bits (otherwise overflowing) and are written in binary as fixed-size 32-bits unsigned integers. Both decimal and hexadecimal text representations are readable.


Utility to convert lines read from stdin to a LaTeX tabular line; that is, intermediate spaces are truncated and replaced with a single & character. Parameters to the executable can be used to specify prefixes and postfixes for each line, as well as a character to put column values in between (for example to transform the numerical input '4' to '$4$'). Program exits by sending an interrupt (ctrl+c).