packages feed

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