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 PZDRIVE3D3.
This example illustrates how to use PZGSSVX3D to sovle
the systems with the same sparsity pattern and similar numerical
values of matrix A.
In this case, the row and column permutation vectors and symbolic
factorization are computed only once. The following data structures
will be reused in the subsequent call to PZGSSVX3D:
ScalePermstruct : DiagScale, R, C, perm_r, perm_c
LUstruct : etree, Glu_persist, Llu
SOLVEstruct : communication metadata for SpTRSV, SpMV, and
3D<->2D gather/scatter of {A,B} stored in A3d.
NOTE:
The distributed nonzero structures of L and U remain the same,
although the numerical values are different. So 'Llu' is set up once
in the first call to PZGSSVX3D, and reused in the subsequent call.
The program may be run by typing:
mpiexec -np
pzdrive3d3 -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, ...)