name: mpi-hs version: '0.5.2.0' github: "eschnett/mpi-hs" license: Apache-2.0 author: "Erik Schnetter " maintainer: "Erik Schnetter " 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. flags: openmpi-debian: description: Use OpenMPI on Debian manual: true default: true openmpi-macports: description: Use OpenMPI on MacPorts manual: true default: true openmpi-ubuntu: description: Use OpenMPI on Ubuntu manual: true default: true mpich-macports: description: Use MPICH on MacPorts manual: true default: false mpich-ubuntu: description: Use MPICH on Ubuntu manual: true default: false 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 - binary - bytestring - cereal - monad-loops - store build-tools: - c2hs source-dirs: lib c-sources: - c/src/mpihs.c include-dirs: - c/include when: - condition: flag(openmpi-debian) include-dirs: - /usr/lib/x86_64-linux-gnu/openmpi/include extra-lib-dirs: - /usr/lib/x86_64-linux-gnu/openmpi/lib extra-libraries: - mpi - condition: flag(openmpi-macports) include-dirs: - /opt/local/include/openmpi-mp extra-lib-dirs: - /opt/local/lib/openmpi-mp extra-libraries: - mpi - condition: flag(openmpi-ubuntu) include-dirs: - /usr/lib/openmpi/include extra-lib-dirs: - /usr/lib/openmpi/lib extra-libraries: - mpi - condition: flag(mpich-macports) include-dirs: - /opt/local/include/mpich-gcc9 extra-lib-dirs: - /opt/local/lib/mpich-gcc9 extra-libraries: - mpi - condition: flag(mpich-ubuntu) include-dirs: - /usr/lib/mpich/include extra-lib-dirs: - /usr/lib/mpich/lib extra-libraries: - mpich executables: example: source-dirs: src main: Main.hs dependencies: - base - binary - 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-test: source-dirs: tests/mpi main: Main.hs dependencies: - base - monad-loops - mpi-hs # - tasty # - tasty-hunit # - tasty-hspec # - unix ghc-options: - -rtsopts - -threaded - -with-rtsopts=-N mpi-test-binary: source-dirs: tests/binary main: Main.hs dependencies: - base - mpi-hs # - tasty # - tasty-hunit # - tasty-hspec # - unix ghc-options: - -rtsopts - -threaded - -with-rtsopts=-N mpi-test-serialize: source-dirs: tests/serialize main: Main.hs dependencies: - base - mpi-hs # - tasty # - tasty-hunit # - tasty-hspec # - unix ghc-options: - -rtsopts - -threaded - -with-rtsopts=-N mpi-test-storable: source-dirs: tests/storable main: Main.hs dependencies: - base - mpi-hs # - tasty # - tasty-hunit # - tasty-hspec # - unix ghc-options: - -rtsopts - -threaded - -with-rtsopts=-N mpi-test-store: source-dirs: tests/store main: Main.hs dependencies: - base - mpi-hs # - tasty # - tasty-hunit # - tasty-hspec # - unix ghc-options: - -rtsopts - -threaded - -with-rtsopts=-N