# 4.8.6. MPI functionality

The following are command line options to set the default for various MPI API behaviors that can be used with `configure`:

- `--with-mpi-param-check[=VALUE]`: Whether or not to check MPI function parameters for errors at runtime. The following `VALUE`s are permitted:

  - `always`: MPI function parameters are always checked for errors

  - `never`: MPI function parameters are never checked for errors

  - `runtime`: Whether MPI function parameters are checked depends on the value of the MCA parameter `mpi_param_check` (default: yes).

  - `yes`: Synonym for “always” (same as `--with-mpi-param-check`).

  - `no`: Synonym for “never” (same as `--without-mpi-param-check`).

  If `--with-mpi-param` is not specified, `runtime` is the default.

- `--disable-mpi-thread-multiple`: Disable the MPI thread level `MPI_THREAD_MULTIPLE` (it is enabled by default).

- `--disable-ft`: Disable the User-Level Fault Mitigation (ULFM) support in Open MPI (it is enabled by default).

  See the ULFM section for more information.

- `--enable-mpi-java`: Enable building of an EXPERIMENTAL Java MPI interface (disabled by default). You may also need to specify `--with-jdk-dir`, `--with-jdk-bindir`, and/or `--with-jdk-headers`.

  Warning

  Note that this Java interface is INCOMPLETE (meaning: it does not support all MPI functionality) and LIKELY TO CHANGE. The Open MPI developers would very much like to hear your feedback about this interface.

  See the Java section for many more details.

- `--enable-mpi-fortran[=VALUE]`: By default, Open MPI will attempt to build all 3 Fortran bindings: `mpif.h`, the `mpi` module, and the `mpi_f08` module. The following `VALUE`s are permitted:

  - `all`: Synonym for `yes`.

  - `yes`: Attempt to build all 3 Fortran bindings; skip any binding that cannot be built (same as `--enable-mpi-fortran`).

  - `mpifh`: Only build `mpif.h` support.

  - `usempi`: Only build `mpif.h` and `mpi` module support.

  - `usempif08`: Build `mpif.h`, `mpi` module, and `mpi_f08` module support.

  - `none`: Synonym for `no`.

  - `no`: Do not build any MPI Fortran support (same as `--disable-mpi-fortran`). This is mutually exclusive with building the OpenSHMEM Fortran interface.

- `--enable-mpi-ext[=LIST]`: Enable Open MPI’s non-portable API extensions. `LIST` is a comma-delmited list of extensions. If no `LIST` is specified, all of the extensions are enabled.

  See the “Open MPI API Extensions” section for more details.

- `--disable-mpi-io`: Disable built-in support for MPI-2 I/O, likely because an externally-provided MPI I/O package will be used. Default is to use the internal framework system that uses the ompio component and a specially modified version of ROMIO that fits inside the romio component

- `--disable-io-romio`: Disable the ROMIO MPI-IO component from being compiled. This is a deprecated mechanism; it is effectively the same as adding `io-romio341` to the list of items passed to `--enable-mca-no-build`.

- `--with-io-romio-flags=FLAGS`: Pass `FLAGS` to the ROMIO distribution configuration script. This option is usually only necessary to pass parallel-filesystem-specific preprocessor/compiler/linker flags back to the ROMIO system.

- `--disable-io-ompio`: Disable the ompio MPI-IO component

- `--enable-sparse-groups`: Enable the usage of sparse groups. This would save memory significantly especially if you are creating large communicators. (Disabled by default)