[MITgcm-support] Single reduction CG solver
Christopher L. Wolfe
clwolfe at ucsd.edu
Wed Nov 18 19:45:28 EST 2009
Hi all,
I've written an implementation of d'Azevedo, Eijkhout, and Romine's
(1999) single reduction CG solver for the MITgcm. This method uses a
rearrangement of the standard conjugate gradient method so that the
required scalars can be determined by a single call to MPI_Allreduce.
For problems running on a large number of processors, the decreased
MPI overhead can significantly increase the efficiency of the
conjugate gradient solver.
The attached figure shows the scaling of the 2D CG solver for a fixed
problem size of 1024x1024 as the number of processors increase on the
Cray XT4 "Franklin." For less than 2^6 processors, the original cg2d
solver is slightly more efficient than the single reduction solver
since the latter requires slightly more matrix-vector multiplications.
However, for processor counts over 2^7, the single reduction solver's
performance is significantly better than the original cg2d.
I've attached a tarball of the new CG routine cg2d_sr plus the
modified files CG2D.h, ini_cg2d.F, and solve_for_pressure.F. To use
the single reduce solver, simply drop these files into an experiment
directory and compile with "ALLOW_CG2D_SR" defined. I've also included
at benchmarking suite, which can also be compiled like a standard
MITgcm experiment.
I've only implemented the single reduce solver for the 2D case since I
just use the hydrostatic model, but the 3D implementation should be
straightforward. A paper deriving the single reduction method can be
found at http://www.netlib.org/lapack/lawnspdf/lawn56.pdf
Feel free to contact me with any questions or comments.
Cheers,
Christopher
-----------------------------------------------------------
Dr. Christopher L. Wolfe 858-534-4560
Climate, Atmospheric Science, and Physical Oceanography
Scripps Institution of Oceanography, UCSD clwolfe at ucsd.edu
-----------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mitgcm.org/pipermail/mitgcm-support/attachments/20091118/cc6855e8/attachment-0004.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: strong.eps
Type: application/postscript
Size: 10178 bytes
Desc: not available
URL: <http://mitgcm.org/pipermail/mitgcm-support/attachments/20091118/cc6855e8/attachment-0001.eps>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mitgcm.org/pipermail/mitgcm-support/attachments/20091118/cc6855e8/attachment-0005.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cg2d_sr.tar.gz
Type: application/x-gzip
Size: 9499 bytes
Desc: not available
URL: <http://mitgcm.org/pipermail/mitgcm-support/attachments/20091118/cc6855e8/attachment-0002.gz>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mitgcm.org/pipermail/mitgcm-support/attachments/20091118/cc6855e8/attachment-0006.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cg2d_sr_bench.tar.gz
Type: application/x-gzip
Size: 15608 bytes
Desc: not available
URL: <http://mitgcm.org/pipermail/mitgcm-support/attachments/20091118/cc6855e8/attachment-0003.gz>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mitgcm.org/pipermail/mitgcm-support/attachments/20091118/cc6855e8/attachment-0007.htm>
More information about the MITgcm-support
mailing list