Skip to content

docs: Minor updates to MPIX man pages #10916

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/features/extensions.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.. _ompi-features-extentions-label:

Open MPI extensions
===================

Expand Down
53 changes: 39 additions & 14 deletions docs/man-openmpi/man3/MPIX_Query_cuda_support.3.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ MPIX_Query_cuda_support

.. include_body

**MPIX_Query_cuda_support** - Returns 1 if there is CUDA aware support
**MPIX_Query_cuda_support** - Returns 1 if there is CUDA-aware support
and 0 if there is not.


Expand Down Expand Up @@ -40,33 +40,58 @@ There is no C++ binding for this function.
DESCRIPTION
-----------

This routine return 1 if MPI library is build with CUDA and runtime
supports CUDA buffers. This routine must be called after MPI is
initialized by a call to :ref:`MPI_Init` or :ref:`MPI_Init_thread`.
This function is part of an :ref:`Open MPI extension
<ompi-features-extentions-label>`; it is not part of standard MPI.

This routine returns 1 if both the MPI library was built with the
NVIDIA CUDA library and the runtime supports CUDA buffers. Otherwise,
it returns 0. This routine must be called after MPI is initialized,
e.g., by a call to :ref:`MPI_Init(3) <MPI_Init>` or
:ref:`MPI_Init_thread(3) <MPI_Init_thread>`.

Including the Open MPI-specific file ``<mpi-ext.h>`` will define the C
preprocessor macro ``OMPI_HAVE_MPI_EXT`` to ``1``. Otherwise, it will
be undefined. This macro can be used by applications as a sentinel to
know whether ``<mpi-ext.h>`` has been included or not.

The Open MPI CUDA extension is built by default (regardless of whether
or not Open MPI was built with CUDA support), but *could* have been
disabled by an administrative action. It is therefore safest for
applications to check that the preprocessor macro
``OMPI_HAVE_MPI_EXT_CUDA`` is defined and is set to 1 to know whether
the ``MPIX_Query_CUDA_support()`` function is available. Checking for
this macro also protects the use of this function when compiling the
application with older versions of Open MPI or other MPI
implementations that do not have this function.


Examples
^^^^^^^^

::

.. code-block:: c

#include <stdio.h>
#include "mpi.h"

#include "mpi-ext.h" /* Needed for CUDA-aware check */
#include <mpi.h>
#include <mpi-ext.h> /* Needed for CUDA-aware check */

int main(int argc, char *argv[])
{

MPI_Init(&argc, &argv);

if (MPIX_Query_cuda_support()) {
printf("This MPI library has CUDA-aware support.);
bool happy = false;
#if defined(OMPI_HAVE_MPI_EXT_CUDA) && OMPI_HAVE_MPI_EXT_CUDA
happy = (bool) MPIX_Query_cuda_support();
#endif

if (happy) {
printf("This Open MPI installation has CUDA-aware support.\n");
} else {
printf("This MPI library does not have CUDA-aware support.);
printf("This Open MPI installation does not have CUDA-aware support.\n");
}
MPI_Finalize();

MPI_Finalize();
return 0;
}

.. seealso::
:ref:`MPIX_Query_rocm_support`
53 changes: 39 additions & 14 deletions docs/man-openmpi/man3/MPIX_Query_rocm_support.3.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ MPIX_Query_rocm_support

.. include_body

**MPIX_Query_rocm_support** - Returns 1 if there is AMD ROCm aware support
**MPIX_Query_rocm_support** - Returns 1 if there is AMD ROCm-aware support
and 0 if there is not.


Expand Down Expand Up @@ -40,33 +40,58 @@ There is no C++ binding for this function.
DESCRIPTION
-----------

This routine return 1 if MPI library is build with ROCm and runtime
supports ROCm buffers. This routine must be called after MPI is
initialized by a call to :ref:`MPI_Init` or :ref:`MPI_Init_thread`.
This function is part of an :ref:`Open MPI extension
<ompi-features-extentions-label>`; it is not part of standard MPI.

This routine returns 1 if both the MPI library was built with the AMD
ROCm library and the runtime supports ROCm buffers. Otherwise, it
returns 0. This routine must be called after MPI is initialized,
e.g., by a call to :ref:`MPI_Init(3) <MPI_Init>` or
:ref:`MPI_Init_thread(3) <MPI_Init_thread>`.

Including the Open MPI-specific file ``<mpi-ext.h>`` will define the C
preprocessor macro ``OMPI_HAVE_MPI_EXT`` to ``1``. Otherwise, it will
be undefined. This macro can be used by applications as a sentinel to
know whether ``<mpi-ext.h>`` has been included or not.

The Open MPI ROCm extension is built by default (regardless of whether
or not Open MPI was built with ROCm support), but *could* have been
disabled by an administrative action. It is therefore safest for
applications to check that the preprocessor macro
``OMPI_HAVE_MPI_EXT_ROCM`` is defined and is set to 1 to know whether
the ``MPIX_Query_rocm_support()`` function is available. Checking for
this macro also protects the use of this function when compiling the
application with older versions of Open MPI or other MPI
implementations that do not have this function.


Examples
^^^^^^^^

::

.. code-block:: c

#include <stdio.h>
#include "mpi.h"

#include "mpi-ext.h" /* Needed for ROCm-aware check */
#include <mpi.h>
#include <mpi-ext.h> /* Needed for ROCm-aware check */

int main(int argc, char *argv[])
{

MPI_Init(&argc, &argv);

if (MPIX_Query_rocm_support()) {
printf("This MPI library has ROCm-aware support.);
bool happy = false;
#if defined(OMPI_HAVE_MPI_EXT_ROCM) && OMPI_HAVE_MPI_EXT_ROCM
happy = (bool) MPIX_Query_rocm_support();
#endif

if (happy) {
printf("This Open MPI installation has ROCm-aware support.\n");
} else {
printf("This MPI library does not have ROCm-aware support.);
printf("This Open MPI installation does not have ROCm-aware support.\n");
}
MPI_Finalize();

MPI_Finalize();
return 0;
}

.. seealso::
:ref:`MPIX_Query_cuda_support`