Skip to content

Commit 473cd97

Browse files
committed
doc: finalized gpu doc
1 parent 02ba45b commit 473cd97

File tree

1 file changed

+59
-11
lines changed

1 file changed

+59
-11
lines changed

docs/source/gpu.rst

Lines changed: 59 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,35 @@ proprietary technology like NVLink that might be available in their infrastructu
3838

3939
Set environment variable ``NCCL_PYLOPS_MPI=0`` to explicitly force PyLops-MPI to ignore the ``NCCL`` backend.
4040
However, this is optional as users may opt-out for NCCL by skip passing `cupy.cuda.nccl.NcclCommunicator` to
41-
the :class:`pylops_mpi.DistributedArray`
41+
the :class:`pylops_mpi.DistributedArray`.
42+
43+
In summary:
44+
45+
.. list-table::
46+
:widths: 50 25 25
47+
:header-rows: 1
48+
49+
* - Operation model
50+
- Enabled with
51+
- Disabled with
52+
* - NumPy + MPI
53+
- Default
54+
- Cannot be disabled
55+
* - CuPy + MPI
56+
- ``PYLOPS_MPI_CUDA_AWARE=0``
57+
- ``PYLOPS_MPI_CUDA_AWARE=1`` (default)
58+
* - CuPy + CUDA-Aware MPI
59+
- ``PYLOPS_MPI_CUDA_AWARE=1`` (default)
60+
- ``PYLOPS_MPI_CUDA_AWARE=0``
61+
* - CuPy + NCCL
62+
- ``NCCL_PYLOPS_MPI=1`` (default)
63+
- ``NCCL_PYLOPS_MPI=0``
4264

4365
Example
4466
-------
4567

4668
Finally, let's briefly look at an example. First we write a code snippet using
47-
``numpy`` arrays which PyLops-mpi will run on your CPU:
69+
``numpy`` arrays which PyLops-MPI will run on your CPU:
4870

4971
.. code-block:: python
5072
@@ -128,41 +150,67 @@ one MPI process. In fact, minor communications like those dealing with array-rel
128150
The CuPy and NCCL backend is in active development, with many examples not yet in the docs.
129151
You can find many `other examples <https://github.com/PyLops/pylops_notebooks/tree/master/developement-mpi/Cupy_MPI>`_ from the `PyLops Notebooks repository <https://github.com/PyLops/pylops_notebooks>`_.
130152

153+
131154
Supports for NCCL Backend
132155
----------------------------
133-
In the following, we provide a list of modules (i.e., operators and solvers) where we plan to support NCCL and the current status:
156+
In the following, we provide a list of modules (i.e., operators and solvers)
157+
and their current status in terms of support for the 3 different communication
158+
backends:
134159

135160
.. list-table::
136-
:widths: 50 25
161+
:widths: 50 25 25 25
137162
:header-rows: 1
138163

139-
* - modules
140-
- NCCL supported
164+
* - Operator/method
165+
- CPU
166+
- GPU with MPI
167+
- GPU with NCCL
141168
* - :class:`pylops_mpi.DistributedArray`
142169
- ✅
143-
* - :class:`pylops_mpi.basicoperators.MPIVStack`
144170
- ✅
171+
- ✅
172+
* - :class:`pylops_mpi.basicoperators.MPIMatrixMult`
173+
- ✅
174+
- 🔴
175+
- 🔴
145176
* - :class:`pylops_mpi.basicoperators.MPIVStack`
146177
- ✅
178+
- ✅
179+
- ✅
147180
* - :class:`pylops_mpi.basicoperators.MPIHStack`
148181
- ✅
182+
- ✅
183+
- ✅
149184
* - :class:`pylops_mpi.basicoperators.MPIBlockDiag`
150185
- ✅
186+
- ✅
187+
- ✅
151188
* - :class:`pylops_mpi.basicoperators.MPIGradient`
152189
- ✅
190+
- ✅
191+
- ✅
153192
* - :class:`pylops_mpi.basicoperators.MPIFirstDerivative`
154193
- ✅
194+
- ✅
195+
- ✅
155196
* - :class:`pylops_mpi.basicoperators.MPISecondDerivative`
156197
- ✅
198+
- ✅
199+
- ✅
157200
* - :class:`pylops_mpi.basicoperators.MPILaplacian`
158201
- ✅
202+
- ✅
203+
- ✅
204+
* - :class:`pylops_mpi.signalprocessing.Fredhoml1`
205+
- ✅
206+
- ✅
207+
- ✅
159208
* - :class:`pylops_mpi.optimization.basic.cg`
160209
- ✅
210+
- ✅
211+
- ✅
161212
* - :class:`pylops_mpi.optimization.basic.cgls`
162213
- ✅
163-
* - :class:`pylops_mpi.signalprocessing.Fredhoml1`
164214
- ✅
165-
* - Complex Numeric Data Type for NCCL
166215
- ✅
167-
* - ISTA Solver
168-
- Planned ⏳
216+

0 commit comments

Comments
 (0)