mpi-hs-cereal: MPI bindings for Haskell

[ apache, distributed-computing, library, program ] [ Propose Tags ]

MPI (the Message Passinag Interface) is a widely used standard for distributed-memory programming on HPC (High Performance Computing) systems. MPI allows exchanging data (_messages_) between programs running in parallel. There are several high-quality open source MPI implementations (e.g. MPICH, MVAPICH, OpenMPI) as well as a variety of closed-source implementations. These libraries can typically make use of high-bandwidth low-latency communication hardware such as InfiniBand.

This library mpi-hs provides Haskell bindings for MPI. It is based on ideas taken from haskell-mpi, Boost.MPI for C++, and MPI for Python.

mpi-hs provides two API levels: A low-level API gives rather direct access to the actual MPI API, apart from certain "reasonable" mappings from C to Haskell (e.g. output arguments that are in C stored via a pointer are in Haskell regular return values). A high-level API simplifies exchanging arbitrary values that can be serialized.

Note that the automated builds on Hackage will currently always fail since no system MPI library is present there. However, builds on Stackage should succeed -- if not, there is an error in this package.

[Skip to Readme]




Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS]
Dependencies base (>=4 && <5), bytestring, cereal, monad-loops, mpi-hs (>=, mpi-hs-cereal [details]
License Apache-2.0
Author Erik Schnetter <>
Maintainer Erik Schnetter <>
Category Distributed Computing
Home page
Bug tracker
Source repo head: git clone
Uploaded by eschnett at 2020-04-18T22:04:52Z
Distributions LTSHaskell:, NixOS:, Stackage:
Executables version, example2, example1
Downloads 480 total (11 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for mpi-hs-cereal-

[back to package description]


MPI bindings for Haskell


This is a companion package to mpi-hs. Read the documentation there.

This package mpi-hs-cereal provides a high-level interface based on Data.Serialize in the cereal package. This is a separate package to reduce dependencies for mpi-hs. Note that mpi-hs has a similar high-level interface based on Data.Storable already built in.

Running the tests

There is one test case provided in tests:

stack build --test --no-run-tests
mpiexec -n 3 stack exec -- $(stack path --dist-dir)/build/mpi-test-cereal/mpi-test-cereal