Multijob

As part of evolutionary algorithm (EA) research, it is often necessary to observe the behaviour of an EA over a range of parameters in order to find a suitable configuration or in order to compare different EAs. That is a massively parallel problem.

The corresponding academic paper presents a workflow to manage the distributed tasks with GNU Parallel. This workflow is also explained in the Multijob tutorial.

The Multijob software assists in this workflow with generating the necessary job definitions. It also contains libraries for Python, C++, and Go to decode the job definitions, which allows the EAs to be be implemented in any of these languages.

During this project, I familiarized myself with a Python toolchain (packaging, dependency management, testing, and documentation). This experience came in very handy when I took over maintenance of the gcovr project.