ColPack
ColPack::BipartiteGraphPartialColoringInterface Class Reference

class BipartiteGraphPartialColoringInterface in group21. More...

#include <BipartiteGraphPartialColoringInterface.h>

Inheritance diagram for ColPack::BipartiteGraphPartialColoringInterface:
Collaboration diagram for ColPack::BipartiteGraphPartialColoringInterface:

List of all members.

Public Member Functions

 BipartiteGraphPartialColoringInterface (int i_type,...)
 Build a BipartiteGraphPartialColoringInterface object and create the bipartite graph based on the graph structure specified by the input source.
int PartialDistanceTwoColoring (string s_OrderingVariant="NATURAL", string s_ColoringVariant="COLUMN_PARTIAL_DISTANCE_TWO")
 (Partial-Distance-Two) Color the bipartite graph based on the requested s_ColoringVariant and s_OrderingVariant
void GenerateSeedJacobian (double ***dp3_seed, int *ip1_SeedRowCount, int *ip1_SeedColumnCount, string s_OrderingVariant="NATURAL", string s_ColoringVariant="COLUMN_PARTIAL_DISTANCE_TWO")
 Generate and return the seed matrix (OpenMP enabled)
void GenerateSeedJacobian_unmanaged (double ***dp3_seed, int *ip1_SeedRowCount, int *ip1_SeedColumnCount, string s_OrderingVariant="NATURAL", string s_ColoringVariant="COLUMN_PARTIAL_DISTANCE_TWO")
 Same as GenerateSeedJacobian(), except that this Seed matrix is NOT managed by ColPack (OpenMP enabled)
double ** GetSeedMatrix (int *ip1_SeedRowCount, int *ip1_SeedColumnCount)
 Based on m_s_VertexColoringVariant, either GetLeftSeedMatrix() or GetRightSeedMatrix() will be called.
void GetOrderedVertices (vector< int > &output)
 ~BipartiteGraphPartialColoringInterface ()
void Clear ()
void Reset ()

Private Attributes

Timer m_T_Timer

Detailed Description

class BipartiteGraphPartialColoringInterface in group21.

To be completed. Note that for each object, only one type of Coloring (either Row or Column) should be used. The reason is because both of RowColoring and ColumnColoring will update (share) the value of m_i_VertexColorCount. If RowColoring is run and then ColumnColoring is run, both PrintColumnPartialColoringMetrics() and PrintRowPartialColoringMetrics() will display the result of the later run (ColumnColoring) only.

Definition at line 37 of file BipartiteGraphPartialColoringInterface.h.


Constructor & Destructor Documentation

Build a BipartiteGraphPartialColoringInterface object and create the bipartite graph based on the graph structure specified by the input source.

This function will:

Structure of this variadic function's parameters: BipartiteGraphPartialColoringInterface(int i_type, [2 or more parameters for input source depending on the value of i_type]). Here are some examples:

About input parameters:

  • int i_type: specified the input source. i_type can be either:
    • -1 (SRC_WAIT): only step 0 will be done.
    • 0 (SRC_FILE): The graph structure will be read from file. The next 2 parameters are:
      • fileName: name of the input file. If the full path is not given, the file is assumed to be in the current directory
      • fileType can be either:
        • "AUTO_DETECTED" or "". ColPack will decide the format of the file based on the file extension:
          • ".mtx": MatrixMarket format
          • ".hb", or any combination of ".<r, c, p><s, u, h, x, r><a, e>": HarwellBoeing format
          • ".graph": MeTiS format
          • ".gen": Generic Matrix format
          • ".gens": Generic Square Matrix format
          • If the above extensions are not found, MatrixMarket format will be assumed.
        • "MM" for MatrixMarket format (http://math.nist.gov/MatrixMarket/formats.html#MMformat). Notes:
          • ColPack only accepts MatrixMarket coordinate format (NO array format)
          • List of arithmetic fields accepted by ColPack: real, pattern or integer
          • List of symmetry structures accepted by ColPack: general or symmetric
          • The first line of the input file should be similar to this: "%%MatrixMarket matrix coordinate real general"
        • "HB" for HarwellBoeing format (http://math.nist.gov/MatrixMarket/formats.html#hb)
        • "MeTiS" for MeTiS format (http://people.sc.fsu.edu/~burkardt/data/metis_graph/metis_graph.html)
        • "GEN" for Generic Matrix format
        • "GENS" for Generic Square Matrix format
    • 1 (SRC_MEM_ADOLC): The graph structure will be read from Row Compressed Structure (used by ADOLC). The next 3 parameters are:
      • unsigned int **uip2_SparsityPattern: The pattern of Jacobian matrix stored in Row Compressed Format
      • int i_rowCount: number of rows in the Jacobian matrix. Number of rows in uip2_SparsityPattern.
      • int i_ColumnCount: number of columns in the Jacobian matrix. Number of columns in uip2_SparsityPattern.
    • 2 (SRC_MEM_ADIC): The graph structure will be read from the sparsity structure generated by ADIC. The next 2 parameters are:
      • std::list<std::set<int> >* lsi_SparsityPattern: The pattern of Jacobian matrix. This structure has a list of rows and the positions of the nonzeros in a row is hold in a set.
      • int i_ColumnCount: number of columns in the Jacobian matrix.
    • 3 (SRC_MEM_SSF) or 4 (SRC_MEM_CSR): The graph structure will be read from zero-based indexing, 3-array variation CSR format http://software.intel.com/sites/products/documentation/hpc/mkl/webhelp/appendices/mkl_appA_SMSF.html#table_79228E147DA0413086BEFF4EFA0D3F04 The next 3 parameters are:
      • int* ip_RowIndex: Element j of the array gives the index of the element in the ip_ColumnIndex array that is first non-zero element in a row j. Size of vector (*ip_RowIndex) = i_rowCount + 1.
      • int i_RowCount: number of rows in the Jacobian matrix.
      • int i_ColumnCount: number of columns in the Jacobian matrix.
      • int* ip_ColumnIndex: Element I of the array is the number of the column that contains the I-th non-zero element in the matrix. Size of vector (*ip_ColumnIndex) = ip_RowIndex[i_rowCount]

Definition at line 115 of file BipartiteGraphPartialColoringInterface.cpp.

References SRC_FILE, SRC_MEM_ADIC, SRC_MEM_ADOLC, SRC_MEM_CSR, SRC_MEM_SSF, and SRC_WAIT.


Member Function Documentation

void ColPack::BipartiteGraphPartialColoringInterface::GenerateSeedJacobian ( double ***  dp3_seed,
int *  ip1_SeedRowCount,
int *  ip1_SeedColumnCount,
string  s_OrderingVariant = "NATURAL",
string  s_ColoringVariant = "COLUMN_PARTIAL_DISTANCE_TWO" 
)

Generate and return the seed matrix (OpenMP enabled)

This function will

  • 1. Color the graph by (Row or Column)-Partial-Distance-2-Coloring with the specified ordering
  • 2. Create and return the seed matrix (*dp3_seed) from the coloring information

About input parameters:

  • s_ColoringVariant:
  • s_OrderingVariant can be either
    • "NATURAL" (default)
    • "LARGEST_FIRST"
    • "SMALLEST_LAST"
    • "INCIDENCE_DEGREE"
    • "RANDOM"

Postcondition:

  • *dp3_seed: the size will be [*ip1_SeedRowCount] [*ip1_SeedColumnCount]
    • if (s_ColoringVariant == "COLUMN_PARTIAL_DISTANCE_TWO"): [num of columns of the original matrix == i_ColumnCount] [ColorCount]
    • if (s_ColoringVariant == "ROW_PARTIAL_DISTANCE_TWO"): [ColorCount] [num of rows of the original matrix == i_RowCount]

Definition at line 54 of file BipartiteGraphPartialColoringInterface.cpp.

void ColPack::BipartiteGraphPartialColoringInterface::GenerateSeedJacobian_unmanaged ( double ***  dp3_seed,
int *  ip1_SeedRowCount,
int *  ip1_SeedColumnCount,
string  s_OrderingVariant = "NATURAL",
string  s_ColoringVariant = "COLUMN_PARTIAL_DISTANCE_TWO" 
)

Same as GenerateSeedJacobian(), except that this Seed matrix is NOT managed by ColPack (OpenMP enabled)

Notes:

  • This Seed matrix is NOT managed by ColPack. Therefore, the user should free the Seed matrix manually when the matrix is no longer needed.

Definition at line 70 of file BipartiteGraphPartialColoringInterface.cpp.

double ** ColPack::BipartiteGraphPartialColoringInterface::GetSeedMatrix ( int *  ip1_SeedRowCount,
int *  ip1_SeedColumnCount 
)

Based on m_s_VertexColoringVariant, either GetLeftSeedMatrix() or GetRightSeedMatrix() will be called.

Reimplemented from ColPack::BipartiteGraphPartialColoring.

Definition at line 230 of file BipartiteGraphPartialColoringInterface.cpp.

Referenced by main().

Here is the caller graph for this function:

int ColPack::BipartiteGraphPartialColoringInterface::PartialDistanceTwoColoring ( string  s_OrderingVariant = "NATURAL",
string  s_ColoringVariant = "COLUMN_PARTIAL_DISTANCE_TWO" 
)

(Partial-Distance-Two) Color the bipartite graph based on the requested s_ColoringVariant and s_OrderingVariant

This function will

  • 1. Order the vertices based on the requested Ordering variant (s_OrderingVariant)
  • 2. Bicolor the graph based on the requested Coloring variant (s_ColoringVariant)
  • Ordering Time and Coloring Time will be recorded.

About input parameters:

  • s_OrderingVariant can be either
    • "NATURAL" (default)
    • "LARGEST_FIRST"
    • "SMALLEST_LAST"
    • "INCIDENCE_DEGREE"
    • "RANDOM"
  • s_ColoringVariant can be either
    • "COLUMN_PARTIAL_DISTANCE_TWO" (default)
    • "ROW_PARTIAL_DISTANCE_TWO"

Postcondition:

  • The Bipartite Graph is (Partial-Distance-Two) colored, i.e., either m_vi_LeftVertexColors or m_vi_RightVertexColors will be populated.

Definition at line 79 of file BipartiteGraphPartialColoringInterface.cpp.

References _FALSE, _TRUE, and toUpper().

Referenced by main(), and toFileBiPC().

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines