I would consider myself someone with basic knowledge of multigrid
methods. Since the only real solve("Ax=b") call occurs at the coarsest
mesh, I assume it could still be executed on a single node. However,
in a normal V cycle (e.g. in
pyamg.multilevel.multilevel_solver.__solve) one calculates
residual = b - Ax
coarse_b = R*residual
both of which can be handled by parallel matrix-vector multiply
routines (e.g. PDGEMV).
I would be interested in developing something along these lines
(distributing the prolongation and restriction matrices as well as the
operator matrix) if something like that does not already exist.
- Dylan
p.s. Thank you all for the great tool - running
scipy.sparse.linalg.solve: >30mins, with PyAMG < 10s!! Awesome work.
Hi Dylan,
We don't have any support for distributed memory systems in PyAMG now,
but it would definitely make a nice addition.
As you say, a distributed sparse matrix-vector multiplication method
immediately handles many of the solver operations. Other than that,
the main challenge would be implementing sparse matrix-matrix
multiplication (A*B where both A and B are sparse) and computing the
interpolation operators in parallel.
BTW, have you looked at the ML package in Trilinos [1]? I haven't
used it myself, I believe there is a Python interface to ML (via
PyTrilinos) that is compatible with SciPy.
[1] http://trilinos.sandia.gov/
> p.s. Thank you all for the great tool - running
> scipy.sparse.linalg.solve: >30mins, with PyAMG < 10s!! Awesome work.
Very cool!
--
Nathan Bell wnb...@gmail.com
http://www.wnbell.com/