mpi-hs-0.3.0.0: package.yaml
name: mpi-hs
version: '0.3.0.0'
github: "eschnett/mpi-hs"
license: Apache-2.0
author: "Erik Schnetter <schnetter@gmail.com>"
maintainer: "Erik Schnetter <schnetter@gmail.com>"
category: Distributed Computing
synopsis: MPI bindings for Haskell
description: |
MPI (the [Message Passing Interface](https://www.mpi-forum.org)) is
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](https://github.com/bjpop/haskell-mpi),
[Boost.MPI](https://www.boost.org/doc/libs/1_64_0/doc/html/mpi.html),
and [MPI for Python](https://mpi4py.readthedocs.io/en/stable/).
@mpi-hs@ provides two API levels: A low-level API gives rather
direct access to the MPI API, apart from certain "reasonable"
mappings from C to Haskell (e.g. output arguments that are in C
stored to 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](http://hackage.haskell.org) will currently always fail
since no MPI library is present there. However, builds on
[Stackage](https://www.stackage.org) should succeed -- if not, there
is an error in this package.
extra-source-files:
- LICENSE
- README.md
- package.yaml
- stack.yaml
- c/include/mpihs.h
- c/src/mpihs.c
ghc-options:
- -Wall
library:
dependencies:
- base >=4 && <5 # tested with 4.11 and 4.12
- bytestring
- monad-loops
- store
build-tools:
- c2hs
source-dirs: lib
c-sources:
- c/src/mpihs.c
include-dirs:
- c/include
extra-libraries:
- mpi
executables:
example:
source-dirs: src
main: Main.hs
dependencies:
- base
- mpi-hs
ghc-options:
- -rtsopts
- -threaded
- -with-rtsopts=-N
benchmarks:
mpi-hs-benchmarks:
source-dirs: bench
main: Main.hs
dependencies:
- base
- mpi-hs
- criterion
ghc-options:
- -rtsopts
- -threaded
- -with-rtsopts=-N
tests:
mpi-tests:
source-dirs: test/mpi
main: Main.hs
dependencies:
- base
- monad-loops
- mpi-hs
# - tasty
# - tasty-hunit
# - tasty-hspec
# - unix
ghc-options:
- -rtsopts
- -threaded
- -with-rtsopts=-N
mpi-simple-tests:
source-dirs: test/simple
main: Main.hs
dependencies:
- base
- monad-loops
- mpi-hs
# - tasty
# - tasty-hunit
# - tasty-hspec
# - unix
ghc-options:
- -rtsopts
- -threaded
- -with-rtsopts=-N