SuperLU Distributed 9.0.0
gpu3d
zssvx3dAux.c File Reference
#include <stdlib.h>
#include <mpi.h>
#include "superlu_zdefs.h"
Include dependency graph for zssvx3dAux.c:

Macros

#define LOG_FUNC_ENTER()   printf("\033[1;32mEntering function %s at %s:%d\033[0m\n", __func__, __FILE__, __LINE__)
 

Functions

void validateInput_pzgssvx3d (superlu_dist_options_t *options, SuperMatrix *A, int ldb, int nrhs, gridinfo3d_t *grid3d, int *info)
 Validates the input parameters for a given problem. More...
 
void zscaleRows (int_t m_loc, int_t fst_row, int_t *rowptr, doublecomplex *a, double *R)
 
void zscaleColumns (int_t m_loc, int_t *rowptr, int_t *colind, doublecomplex *a, double *C)
 
void zscaleBoth (int_t m_loc, int_t fst_row, int_t *rowptr, int_t *colind, doublecomplex *a, double *R, double *C)
 
void zscalePrecomputed (SuperMatrix *A, zScalePermstruct_t *ScalePermstruct)
 
void zscaleFromScratch (SuperMatrix *A, zScalePermstruct_t *ScalePermstruct, gridinfo_t *grid, int *rowequ, int *colequ, int *iinfo)
 
void zscaleMatrixDiagonally (fact_t Fact, zScalePermstruct_t *ScalePermstruct, SuperMatrix *A, SuperLUStat_t *stat, gridinfo_t *grid, int *rowequ, int *colequ, int *iinfo)
 
void zfindRowPerm_MC64 (gridinfo_t *grid, int_t job, int_t m, int_t n, int_t nnz, int_t *colptr, int_t *rowind, doublecomplex *a_GA, int_t Equil, int_t *perm_r, double *R1, double *C1, int *iinfo)
 
void zscale_distributed_matrix (int rowequ, int colequ, int_t m, int_t n, int_t m_loc, int_t *rowptr, int_t *colind, int_t fst_row, doublecomplex *a, double *R, double *C, double *R1, double *C1)
 
void zpermute_global_A (int_t m, int_t n, int_t *colptr, int_t *rowind, int_t *perm_r)
 
void zperform_LargeDiag_MC64 (superlu_dist_options_t *options, fact_t Fact, zScalePermstruct_t *ScalePermstruct, zLUstruct_t *LUstruct, int_t m, int_t n, gridinfo_t *grid, SuperMatrix *A, SuperMatrix *GA, SuperLUStat_t *stat, int_t job, int Equil, int *rowequ, int *colequ, int *iinfo)
 Performs a set of operations on distributed matrices including finding row permutations, scaling, and permutation of global A. The operations depend on job and iinfo parameters. More...
 
void zperform_row_permutation (superlu_dist_options_t *options, fact_t Fact, zScalePermstruct_t *ScalePermstruct, zLUstruct_t *LUstruct, int_t m, int_t n, gridinfo_t *grid, SuperMatrix *A, SuperMatrix *GA, SuperLUStat_t *stat, int job, int Equil, int *rowequ, int *colequ, int *iinfo)
 

Macro Definition Documentation

◆ LOG_FUNC_ENTER

#define LOG_FUNC_ENTER ( )    printf("\033[1;32mEntering function %s at %s:%d\033[0m\n", __func__, __FILE__, __LINE__)

Function Documentation

◆ validateInput_pzgssvx3d()

void validateInput_pzgssvx3d ( superlu_dist_options_t options,
SuperMatrix A,
int  ldb,
int  nrhs,
gridinfo3d_t grid3d,
int *  info 
)

Validates the input parameters for a given problem.

This function checks the input parameters for a given problem and sets the error code in the 'info' variable accordingly. If there is an error, it prints an error message and returns.

Parameters
[in]optionsPointer to the options structure containing Fact, RowPerm, ColPerm, and IterRefine values.
[in]APointer to the matrix A structure containing nrow, ncol, Stype, Dtype, and Mtype values.
[in]ldbThe leading dimension of the array B.
[in]nrhsThe number of right-hand sides.
[in]gridPointer to the grid structure.
[out]infoPointer to an integer variable that stores the error code.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zfindRowPerm_MC64()

void zfindRowPerm_MC64 ( gridinfo_t grid,
int_t  job,
int_t  m,
int_t  n,
int_t  nnz,
int_t colptr,
int_t rowind,
doublecomplex a_GA,
int_t  Equil,
int_t perm_r,
double *  R1,
double *  C1,
int *  iinfo 
)

Finds row permutations using the MC64 algorithm in a distributed manner.

Parameters
gridThe grid info object, which includes the current node's information and MPI communicator.
jobThe type of job to be done.
mThe number of rows in the sparse matrix.
nThe number of columns in the sparse matrix.
nnzThe number of non-zero elements in the sparse matrix.
colptrThe column pointer array of the sparse matrix (CSC format).
rowindThe row index array of the sparse matrix (CSC format).
a_GAThe non-zero values of the sparse matrix.
EquilThe equilibration flag.
perm_rThe output permutation array for the rows.
R1The output row scaling factors.
C1The output column scaling factors.
iinfoThe output status code.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zperform_LargeDiag_MC64()

void zperform_LargeDiag_MC64 ( superlu_dist_options_t options,
fact_t  Fact,
zScalePermstruct_t ScalePermstruct,
zLUstruct_t LUstruct,
int_t  m,
int_t  n,
gridinfo_t grid,
SuperMatrix A,
SuperMatrix GA,
SuperLUStat_t stat,
int_t  job,
int  Equil,
int *  rowequ,
int *  colequ,
int *  iinfo 
)

Performs a set of operations on distributed matrices including finding row permutations, scaling, and permutation of global A. The operations depend on job and iinfo parameters.

Parameters
[in]optionsSuperLU options.
[in]FactFactored form of the matrix.
[in,out]ScalePermstructScaling and Permutation structure.
[in,out]LUstructLU decomposition structure.
[in]mNumber of rows in the matrix.
[in]nNumber of columns in the matrix.
[in]gridGrid information for distributed computation.
[in,out]ASuperMatrix A to be operated upon.
[in,out]GASuperMatrix GA to be operated upon.
[out]statSuperLU statistics object to record factorization statistics.
[in]jobThe type of job to be done.
[in]EquilThe equilibration flag.
[in]rowequFlag indicating whether rows of the matrix should be equalized.
[in]colequFlag indicating whether columns of the matrix should be equalized.
[out]iinfoThe output status code.
Note
The functions zfindRowPerm_MC64, dscale_distributed_matrix and dpermute_global_A are called in this function.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zperform_row_permutation()

void zperform_row_permutation ( superlu_dist_options_t options,
fact_t  Fact,
zScalePermstruct_t ScalePermstruct,
zLUstruct_t LUstruct,
int_t  m,
int_t  n,
gridinfo_t grid,
SuperMatrix A,
SuperMatrix GA,
SuperLUStat_t stat,
int  job,
int  Equil,
int *  rowequ,
int *  colequ,
int *  iinfo 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zpermute_global_A()

void zpermute_global_A ( int_t  m,
int_t  n,
int_t colptr,
int_t rowind,
int_t perm_r 
)

Performs a permutation operation on the rows of a sparse matrix (CSC format).

Parameters
mThe number of rows in the sparse matrix.
nThe number of columns in the sparse matrix.
colptrThe column pointer array of the sparse matrix (CSC format).
rowindThe row index array of the sparse matrix (CSC format).
perm_rThe permutation array for the rows.
Here is the caller graph for this function:

◆ zscale_distributed_matrix()

void zscale_distributed_matrix ( int  rowequ,
int  colequ,
int_t  m,
int_t  n,
int_t  m_loc,
int_t rowptr,
int_t colind,
int_t  fst_row,
doublecomplex a,
double *  R,
double *  C,
double *  R1,
double *  C1 
)

This function scales a distributed matrix.

Parameters
[in]rowequA flag indicating whether row should be equalized.
[in]colequA flag indicating whether column should be equalized.
[in]mNumber of rows in the matrix.
[in]nNumber of columns in the matrix.
[in]m_locThe local row dimension.
[in]rowptrPointer to the array holding row pointers.
[in]colindPointer to the array holding column indices.
[in]fst_rowThe first row of the local block.
[in,out]aPointer to the array holding the values of the matrix.
[in,out]RPointer to the row scaling factors.
[in,out]CPointer to the column scaling factors.
[in,out]R1Pointer to the array holding the new row scaling factors.
[in,out]C1Pointer to the array holding the new column scaling factors.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zscaleBoth()

void zscaleBoth ( int_t  m_loc,
int_t  fst_row,
int_t rowptr,
int_t colind,
doublecomplex a,
double *  R,
double *  C 
)
Here is the caller graph for this function:

◆ zscaleColumns()

void zscaleColumns ( int_t  m_loc,
int_t rowptr,
int_t colind,
doublecomplex a,
double *  C 
)
Here is the caller graph for this function:

◆ zscaleFromScratch()

void zscaleFromScratch ( SuperMatrix A,
zScalePermstruct_t ScalePermstruct,
gridinfo_t grid,
int *  rowequ,
int *  colequ,
int *  iinfo 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zscaleMatrixDiagonally()

void zscaleMatrixDiagonally ( fact_t  Fact,
zScalePermstruct_t ScalePermstruct,
SuperMatrix A,
SuperLUStat_t stat,
gridinfo_t grid,
int *  rowequ,
int *  colequ,
int *  iinfo 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zscalePrecomputed()

void zscalePrecomputed ( SuperMatrix A,
zScalePermstruct_t ScalePermstruct 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zscaleRows()

void zscaleRows ( int_t  m_loc,
int_t  fst_row,
int_t rowptr,
doublecomplex a,
double *  R 
)
Here is the caller graph for this function: