All Projects → dftbplus → mpifx

dftbplus / mpifx

Licence: BSD-2-Clause License
Modern Fortran wrappers around MPI routines

Programming Languages

fortran
972 projects
CMake
9771 projects
python
139335 projects - #7 most used programming language
Meson
512 projects
shell
77523 projects

Projects that are alternatives of or similar to mpifx

sdk-go
Tools to work with the Injective Chain, Injective EVM and EIP712.
Stars: ✭ 29 (+16%)
Mutual labels:  wrappers
PartitionedArrays.jl
Vectors and sparse matrices partitioned into pieces for parallel distributed-memory computations.
Stars: ✭ 45 (+80%)
Mutual labels:  mpi
pypar
Efficient and scalable parallelism using the message passing interface (MPI) to handle big data and highly computational problems.
Stars: ✭ 66 (+164%)
Mutual labels:  mpi
research-computing-with-cpp
UCL-RITS *C++ for Research* engineering course
Stars: ✭ 16 (-36%)
Mutual labels:  mpi
fuzzball
Ongoing development of the Fuzzball MUCK server software and associated functionality.
Stars: ✭ 38 (+52%)
Mutual labels:  mpi
wxparaver
wxParaver is a trace-based visualization and analysis tool designed to study quantitative detailed metrics and obtain qualitative knowledge of the performance of applications, libraries, processors and whole architectures.
Stars: ✭ 23 (-8%)
Mutual labels:  mpi
pystella
A code generator for grid-based PDE solving on CPUs and GPUs
Stars: ✭ 18 (-28%)
Mutual labels:  mpi
cram
Tool to run many small MPI jobs inside of one large MPI job.
Stars: ✭ 23 (-8%)
Mutual labels:  mpi
dbcsr
DBCSR: Distributed Block Compressed Sparse Row matrix library
Stars: ✭ 65 (+160%)
Mutual labels:  mpi
lapack
Wrappers for LAPACK (Fortran)
Stars: ✭ 63 (+152%)
Mutual labels:  wrappers
analisis-numerico-computo-cientifico
Análisis numérico y cómputo científico
Stars: ✭ 42 (+68%)
Mutual labels:  mpi
PencilArrays.jl
Distributed Julia arrays using the MPI protocol
Stars: ✭ 40 (+60%)
Mutual labels:  mpi
blas
Wrappers for BLAS (Fortran)
Stars: ✭ 58 (+132%)
Mutual labels:  wrappers
ImplicitGlobalGrid.jl
Almost trivial distributed parallelization of stencil-based GPU and CPU applications on a regular staggered grid
Stars: ✭ 88 (+252%)
Mutual labels:  mpi
PencilFFTs.jl
Fast Fourier transforms of MPI-distributed Julia arrays
Stars: ✭ 48 (+92%)
Mutual labels:  mpi
axisem
AxiSEM is a parallel spectral-element method to solve 3D wave propagation in a sphere with axisymmetric or spherically symmetric visco-elastic, acoustic, anisotropic structures.
Stars: ✭ 34 (+36%)
Mutual labels:  mpi
EFDCPlus
www.eemodelingsystem.com
Stars: ✭ 9 (-64%)
Mutual labels:  mpi
neworder
A dynamic microsimulation framework for python
Stars: ✭ 15 (-40%)
Mutual labels:  mpi
gpubootcamp
This repository consists for gpu bootcamp material for HPC and AI
Stars: ✭ 227 (+808%)
Mutual labels:  mpi
tbslas
A parallel, fast solver for the scalar advection-diffusion and the incompressible Navier-Stokes equations based on semi-Lagrangian/Volume-Integral method.
Stars: ✭ 21 (-16%)
Mutual labels:  mpi

MpiFx - Modern Fortran Interface for MPI

The open source library MpiFx provides modern Fortran (Fortran 2003) wrappers around routines of the MPI library to make their use as simple as possible. Currently several data distribution routines are covered.

The documentation is included inside the repository, but is also available at dftbplus.github.io.

Installation

Prerequisites

  • CMake (version >= 3.16)
  • Fortran 2003 compatible Fortran compiler
  • MPI-library and wrappers for your compiler
  • Fypp preprocessor

Building and installing the library

The library can be built and installed with the usual CMake-workflow:

FC=gfortran cmake -B _build -DCMAKE_INSTALL_PREFIX=$HOME/opt/mpifx
cmake --build _build
cmake --install _build

You can influence the configuration via CMake-variables, which are listed in config.cmake. You can either modify the values directly there or pass them as command line options at the configuration phase, e.g.:

FC=ifort cmake -B _build -DBUILD_LIBRARY_ONLY=True

Testing

A few tests / usage examples can be found in the test/ subdirectory. The compiled test programs will be in the test/ subfolder of your build directory.

Using the library

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 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)
    

Pkg-config build

  • Make sure to add the lib/pkgconfig folder of the installed library to the PKG_CONFIG_PATH environment variable.

  • Query the include and library options needed for the build with the usual pkg-config commands:

    mpifort $(pkg-config --cflags mpifx) test_mpifx.f90 $(pkg-config --libs mpifx)
    

    Note, that neither -cflags or --libs return any options related to your MPI-framework nor is the MPI-framework specified as dependency in the pkg-config file. Use the MPI-wrapper of your compiler to compile and link your executable or pass the additional include and library options by hand.

License

MpiFx is licensed under the 2-Clause BSD License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].