Fpm MPI metapackage and mpi modules

I am in the process of writing some small tutorials for fpm-docs using MPI and I was surprised when I saw that fpm metapackages can only use mpif.h, which was deprecated in MPI-4.1.

Is there a benefit of using mpif.h as opposed to use mpi or even better the more modern use mpi_f08?
If not should fpm focus on supporting the modern module approaches? I would be interested to understand the complexities fpm searching for MPI modules instead.


I see now. I believe you are not seeing module support because the module capability is implemented on trunk, and has not been released to an official release yet, so if you’re using 0.9.0, it does not work.

The MPI metapackage is fully compatible with useing F90+ style modules, and I agree it’s the thing to do in your examples.

Some comments on the way it’s been designed:

  • mpi="*" literally means “use any default versions currently available”, why should restrict that to the newest versions only? I believe the choice to maximize platform and version compatibility is the reasonable one for the default case.
  • Semantic versioning was supposed to be coming up in fpm - that was(/is) the mechanism that should have made these restrictions possible
  • The native library of one of the 3 major platforms (Microsoft MPI on Windows) does not support Fortran modules, but only mpif.h
  • Little/no community feedback (maybe it’s not much used yet, or instead “no news good news”)

Bottomline comment, having mpif.h support is very useful to my use cases, as my customers use Engineering software that runs either on embarassingly old Unix clusters with ancient compilers, or on MS Windows machines.

Awesome, thanks. I completely forgot that there was no release. Should we make a new release or is there something else that needs merging?

1 Like

I think it would be nice to have a bugfix 0.9.1 release, there have been quite a few PRs since 0.9.0.

I would go v0.10.0 exactly because such cool features were added (and there are a few code changes).

1 Like

Ok then let’s draft it and try to get it deployed soon (like, next week?)