Driver program for PDGSSVX3D example.
Copyright (c) 2003, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from U.S. Dept. of Energy)
All rights reserved.
The source code is distributed under BSD license, see the file License.txt at the top-level directory.
-- Distributed SuperLU routine (version 7.0) --
Lawrence Berkeley National Lab, Georgia Institute of Technology,
Oak Ridge National Lab
September 10, 2021
*/
/*!
Purpose
=======
The driver program PDDRIVE3D1.
This example illustrates how to use PDGSSVX3D to sovle the systems
with the same A but different right-hand side, possibly with
different number of right-hand sides.
In this case, we factorize A only once in the first call to PDGSSVX3D,
and reuse the following data structures in the subsequent call to
PDGSSVX3D:
ScalePermstruct : DiagScale, R, C, perm_r, perm_c
LUstruct : Glu_persist, Llu
SOLVEstruct : communication metadata for SpTRSV, SpMV, and
3D<->2D gather/scatter of {A,B} stored in A3d.
The program may be run by typing:
mpiexec -np
pddrive3d1 -r <proc rows> -c <proc columns> \
-d <proc Z-dimension> <input_file>
NOTE: total number of processes p = r * c * d
(d must be a power-of-two, e.g., 1, 2, 4, ...)