SRC/get_perm_c.c File Reference

Gets matrix permutation. More...

#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)


Detailed Description

 -- Distributed SuperLU routine (version 2.1) --
 Lawrence Berkeley National Lab, Univ. of California Berkeley,
 November 1, 2007
 Feburary 20, 2008
 

Last update: 7/27/2011 fix a bug with metis ordering on empty graph.


Define Documentation

#define METISOPTIONS   8


Function Documentation

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_metis ( int_t  n,
int_t  bnz,
int_t b_colptr,
int_t b_rowind,
int_t perm_c 
)

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?
 


Generated on Tue Aug 30 14:36:33 2011 for SuperLUDistributed by  doxygen 1.5.5