#include "superlu_ddefs.h"
Defines | |
#define | METISOPTIONS 8 |
Functions/Subroutines | |
void | get_metis (int_t n, int_t bnz, int_t *b_colptr, int_t *b_rowind, int_t *perm_c) |
void | getata_dist (const int_t m, const int_t n, const int_t nz, int_t *colptr, int_t *rowind, int_t *atanz, int_t **ata_colptr, int_t **ata_rowind) |
void | at_plus_a_dist (const int_t n, const int_t nz, int_t *colptr, int_t *rowind, int_t *bnz, int_t **b_colptr, int_t **b_rowind) |
void | get_perm_c_dist (int_t pnum, int_t ispec, SuperMatrix *A, int_t *perm_c) |
-- Distributed SuperLU routine (version 2.1) -- Lawrence Berkeley National Lab, Univ. of California Berkeley, November 1, 2007 Feburary 20, 2008
#define METISOPTIONS 8 |
void at_plus_a_dist | ( | const int_t | n, | |
const int_t | nz, | |||
int_t * | colptr, | |||
int_t * | rowind, | |||
int_t * | bnz, | |||
int_t ** | b_colptr, | |||
int_t ** | b_rowind | |||
) |
Purpose =======
Form the structure of A'+A. A is an n-by-n matrix in column oriented format represented by (colptr, rowind). The output A'+A is in column oriented format (symmetrically, also row oriented), represented by (b_colptr, b_rowind).
void get_perm_c_dist | ( | int_t | pnum, | |
int_t | ispec, | |||
SuperMatrix * | A, | |||
int_t * | perm_c | |||
) |
Purpose =======
GET_PERM_C_DIST obtains a permutation matrix Pc, by applying the multiple minimum degree ordering code by Joseph Liu to matrix A'*A or A+A', or using approximate minimum degree column ordering by Davis et. al. The LU factorization of A*Pc tends to have less fill than the LU factorization of A.
Arguments =========
ispec (input) colperm_t Specifies what type of column permutation to use to reduce fill. = NATURAL: natural ordering (i.e., Pc = I) = MMD_AT_PLUS_A: minimum degree ordering on structure of A'+A = MMD_ATA: minimum degree ordering on structure of A'*A = METIS_AT_PLUS_A: MeTis on A'+A
A (input) SuperMatrix* Matrix A in A*X=B, of dimension (A->nrow, A->ncol). The number of the linear equations is A->nrow. Currently, the type of A can be: Stype = SLU_NC; Dtype = SLU_D; Mtype = SLU_GE. In the future, more general A can be handled.
perm_c (output) int* Column permutation vector of size A->ncol, which defines the permutation matrix Pc; perm_c[i] = j means column i of A is in position j in A*Pc.
void getata_dist | ( | const int_t | m, | |
const int_t | n, | |||
const int_t | nz, | |||
int_t * | colptr, | |||
int_t * | rowind, | |||
int_t * | atanz, | |||
int_t ** | ata_colptr, | |||
int_t ** | ata_rowind | |||
) |
Purpose =======
Form the structure of A'*A. A is an m-by-n matrix in column oriented format represented by (colptr, rowind). The output A'*A is in column oriented format (symmetrically, also row oriented), represented by (ata_colptr, ata_rowind).
This routine is modified from GETATA routine by Tim Davis. The complexity of this algorithm is: SUM_{i=1,m} r(i)^2, i.e., the sum of the square of the row counts.
Questions ========= o Do I need to withhold the *dense* rows? o How do I know the number of nonzeros in A'*A?