Skip to content

Commit

Permalink
Merge branch 'release'
Browse files Browse the repository at this point in the history
  • Loading branch information
aradi committed May 2, 2024
2 parents 505b874 + e6dbe2c commit 78dd4ee
Show file tree
Hide file tree
Showing 7 changed files with 53 additions and 11 deletions.
16 changes: 16 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,22 @@ Change Log

Notable project changes in various releases.


1.5
===

Added
-----

* mpifx_win allows allocations with 64 bit allocation size parameter


Changed
-------

* mpifx_win is fully standard conforming now (using the F08 MPI-interface)


1.4
===

Expand Down
38 changes: 30 additions & 8 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ MpiFx - Modern Fortran Interface for MPI
****************************************

The open source library `MpiFx <https://github.com/dftbplus/mpifx>`_ provides
modern Fortran (Fortran 2003) wrappers around routines of the MPI library to
modern Fortran (Fortran 2008) wrappers around routines of the MPI library to
make their use as simple as possible. Currently several data distribution
routines are covered.

Expand All @@ -14,14 +14,36 @@ The documentation is included inside the repository, but is also available at
Installation
============

The preferred way of obtaining MpiFx is to install it via the Conda package
management framework using `Miniconda
<https://docs.conda.io/en/latest/miniconda.html>`_ or `Anaconda
<https://www.anaconda.com/products/individual>`_. Make sure to add/enable the
``conda-forge`` channel in order to be able to access MpiFx, and ensure that the
``conda-forge`` channel is the first repository to be searched for packages.

We provide both, OpenMPI and MPICH based build variants, choose the one suiting
your needs. For example, issue ::

conda install 'mpifx=*=mpi_mpich_*'

or ::

conda install 'mpifx=*=mpi_openmpi_*'

to get the last stable release of MpiFx for the respective MPI framework.


Building from source
====================

Prerequisites
-------------

* CMake (version >= 3.16)

* Fortran 2003 compatible Fortran compiler
* Fortran 2008 compatible Fortran compiler

* MPI-library and wrappers for your compiler
* MPI-library and wrappers for your compiler supporting the `mpi_f08` interface

* `Fypp preprocessor <https://github.com/aradi/fypp>`_

Expand All @@ -40,7 +62,7 @@ You can influence the configuration via CMake-variables, which are listed in
or pass them as command line options at the configuration phase, e.g.::

FC=ifort cmake -B _build -DBUILD_TESTING=NO .


Testing
-------
Expand All @@ -61,15 +83,15 @@ CMake build
* Make sure to add the root folder of the installed library to the
``CMAKE_PREFIX_PATH`` environment variable.

* Use ``find_package()`` in `CMakeLists.txt` to locate the library and link
* Use ``find_package()`` in `CMakeLists.txt` to locate the library and link
``MpiFx::MpiFx`` to every target which relies directly on the library ::

cmake_minimum_required(VERSION 3.16)

project(TestMpiFx LANGUAGES Fortran)

find_package(MpiFx REQUIRED)

add_executable(test_mpifx test_mpifx.f90)
target_link_libraries(test_mpifx MpiFx::MpiFx)

Expand Down
1 change: 1 addition & 0 deletions lib/mpifx_constants.fpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ module mpifx_constants_module
!> Exit code for failed assertions
integer, parameter :: MPIFX_ASSERT_FAILED = 2

!> Native integer for MPI addresses
integer, parameter :: MPIFX_SIZE_T = MPI_ADDRESS_KIND

end module mpifx_constants_module
Expand Down
1 change: 1 addition & 0 deletions lib/mpifx_get_processor_name.fpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
!> Contains the extended MPI communicator.
module mpifx_get_processor_name_module
use mpi
use mpifx_helper_module, only : handle_errorflag
implicit none
private

Expand Down
2 changes: 1 addition & 1 deletion lib/mpifx_recv.fpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
module mpifx_recv_module
use mpi
use mpifx_comm_module, only : mpifx_comm
use mpifx_helper_module, only : dp, sp
use mpifx_helper_module, only : dp, sp, getoptarg, handle_errorflag, setoptarg
implicit none
private

Expand Down
2 changes: 1 addition & 1 deletion lib/mpifx_send.fpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
module mpifx_send_module
use mpi
use mpifx_comm_module, only : mpifx_comm
use mpifx_helper_module, only : default_tag, dp, sp
use mpifx_helper_module, only : default_tag, dp, sp, getoptarg, handle_errorflag
implicit none
private

Expand Down
4 changes: 3 additions & 1 deletion lib/mpifx_win.fpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@

!> Contains routined for MPI shared memory windows.
module mpifx_win_module
use mpi_f08
use mpi_f08, only : MPI_ADDRESS_KIND, mpi_barrier, mpi_comm, MPI_INFO_NULL, MPI_MODE_NOCHECK,&
& mpi_win, mpi_win_allocate_shared, mpi_win_fence, mpi_win_free, mpi_win_lock_all,&
& mpi_win_shared_query, mpi_win_sync, mpi_win_unlock
use mpifx_helper_module, only : handle_errorflag, sp, dp
use mpifx_comm_module, only : mpifx_comm
use mpifx_constants_module, only : MPIFX_SIZE_T
Expand Down

0 comments on commit 78dd4ee

Please sign in to comment.