name: mpi-hs-store
version: '0.1.0.0'
github: "eschnett/mpi-hs-store"
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 Passinag Interface](https://www.mpi-forum.org)) 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](https://github.com/bjpop/haskell-mpi),
[Boost.MPI](https://www.boost.org/doc/libs/1_64_0/doc/html/mpi.html)
for C++, 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 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](http://hackage.haskell.org) will currently always fail
since no system 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
- stack.yaml.lock
ghc-options:
- -Wall
library:
dependencies:
- base >=4 && <5 # tested with 4.11, 4.12, 4.13
- store
- bytestring
- monad-loops
- mpi-hs >=0.7.0.0
source-dirs: lib
executables:
version:
source-dirs: src
main: version.hs
dependencies:
- base
- mpi-hs
ghc-options:
- -rtsopts
- -threaded
- -with-rtsopts=-N
example1:
source-dirs: src
main: example1.hs
dependencies:
- base
- mpi-hs
ghc-options:
- -rtsopts
- -threaded
- -with-rtsopts=-N
example2:
source-dirs: src
main: example2.hs
dependencies:
- base
- mpi-hs-store
ghc-options:
- -rtsopts
- -threaded
- -with-rtsopts=-N
tests:
mpi-test-store:
source-dirs: tests/store
main: Main.hs
dependencies:
- base
- mpi-hs-store
# - tasty
# - tasty-hunit
# - tasty-hspec
# - unix
ghc-options:
- -rtsopts
- -threaded
- -with-rtsopts=-N