Driver program for PZGSSVX3D 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 PZDRIVE3D1.
This example illustrates how to use PZGSSVX3D 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 PZGSSVX3D,
and reuse the following data structures in the subsequent call to
PZGSSVX3D:
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
pzdrive3d1 -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, ...)