Isorropia::Epetra::ZoltanLib::QueryObject Class Reference

QueryObject is a class that contains the query functions required by the Zoltan library. More...

#include <QueryObject.hpp>

List of all members.

Public Member Functions

 QueryObject (Teuchos::RCP< const Epetra_CrsGraph > graph, Teuchos::RCP< const Isorropia::Epetra::CostDescriber > costs, bool isHypergraph)
 Constructor.
 QueryObject (Teuchos::RCP< const Epetra_RowMatrix > matrix, Teuchos::RCP< const Isorropia::Epetra::CostDescriber > costs, bool isHypergraph)
 Constructor.
virtual ~QueryObject ()
 Destructor.
const Epetra_BlockMap & RowMap (void)
 to do
bool haveVertexWeights ()
 Return true if any of the processes in the application have defined vertex weights.
bool haveGraphEdgeWeights ()
 Return true if any of the processes in the application have defined graph edge weights.
bool haveHypergraphEdgeWeights ()
 Return true if any of the processes in the application have defined hypergraph edge weights.

Static Public Member Functions

static int Number_Objects (void *data, int *ierr)
 to do
static void Object_List (void *data, int num_gid_entries, int num_lid_entries, ZOLTAN_ID_PTR global_ids, ZOLTAN_ID_PTR local_ids, int weight_dim, float *object_weights, int *ierr)
 to do
static void Number_Edges_Multi (void *data, int num_gid_entries, int num_lid_entries, int num_obj, ZOLTAN_ID_PTR global_ids, ZOLTAN_ID_PTR local_ids, int *num_edges, int *ierr)
 to do
static void Edge_List_Multi (void *data, int num_gid_entries, int num_lid_entries, int num_obj, ZOLTAN_ID_PTR global_ids, ZOLTAN_ID_PTR local_ids, int *num_edges, ZOLTAN_ID_PTR neighbor_global_ids, int *neighbor_procs, int weight_dim, float *edge_weights, int *ierr)
 to do
static void HG_Size_CS (void *data, int *num_lists, int *num_pins, int *format, int *ierr)
 to do
static void HG_CS (void *data, int num_gid_entries, int num_row_or_col, int num_pins, int format, ZOLTAN_ID_PTR vtxedge_GID, int *vtxedge_ptr, ZOLTAN_ID_PTR pin_GID, int *ierr)
 to do
static void HG_Size_Edge_Weights (void *data, int *num_edges, int *ierr)
 to do
static void HG_Edge_Weights (void *data, int num_gid_entries, int num_lid_entries, int num_edges, int edge_weight_dim, ZOLTAN_ID_PTR edge_GID, ZOLTAN_ID_PTR edge_LID, float *edge_weights, int *ierr)
 to do

Private Member Functions

void fill_procmap ()
int My_Number_Objects (int *ierr)
 My_Number_Objects() returns the number of rows currently assigned to this process.
void My_Object_List (int num_gid_entries, int num_lid_entries, ZOLTAN_ID_PTR global_ids, ZOLTAN_ID_PTR local_ids, int weight_dim, float *object_weights, int *ierr)
 My_ObjectList() returns to Zoltan the global ID and weight of the rows currently assigned to this process.
void My_Number_Edges_Multi (int num_gid_entries, int num_lid_entries, int num_obj, ZOLTAN_ID_PTR global_ids, ZOLTAN_ID_PTR local_ids, int *num_edges, int *ierr)
 My_Number_Edges_Multi() is a query function used for graph partitioning only.
void My_Edge_List_Multi (int num_gid_entries, int num_lid_entries, int num_obj, ZOLTAN_ID_PTR global_ids, ZOLTAN_ID_PTR local_ids, int *num_edges, ZOLTAN_ID_PTR neighbor_global_ids, int *neighbor_procs, int weight_dim, float *edge_weights, int *ierr)
 My_Edge_List_Multi() is a query function used for graph partitioning only.
void My_HG_Size_CS (int *num_lists, int *num_pins, int *format, int *ierr)
 to do
void My_HG_CS (int num_gid_entries, int num_row_or_col, int num_pins, int format, ZOLTAN_ID_PTR vtxedge_GID, int *vtxedge_ptr, ZOLTAN_ID_PTR pin_GID, int *ierr)
 to do
void My_HG_Size_Edge_Weights (int *num_edges, int *ierr)
 to do
void My_HG_Edge_Weights (int num_gid_entries, int num_lid_entries, int num_edges, int edge_weight_dim, ZOLTAN_ID_PTR edge_GID, ZOLTAN_ID_PTR edge_LID, float *edge_weights, int *ierr)
 to do

Private Attributes

Teuchos::RCP< const Epetra_CrsGraph > graph_
Teuchos::RCP< const Epetra_RowMatrix > matrix_
const Epetra_BlockMap * rowMap_
const Epetra_BlockMap * colMap_
Teuchos::RCP< const Isorropia::Epetra::CostDescribercosts_
std::map< int, int > procmap_
std::set< int > graph_self_edges_
const bool isHypergraph_
const bool haveGraph_
int myProc_
int base_


Detailed Description

QueryObject is a class that contains the query functions required by the Zoltan library.

These fuctions (actually QueryObject methods), when called by Zoltan, provide the objects to be balanced (the row IDs), the graph or hypergraph edges, and object and edge weights.

These methods are not part of the Isorropia API (except to Zoltan). They are called by Isorropia itself and by Zoltan.


Constructor & Destructor Documentation

Isorropia::Epetra::ZoltanLib::QueryObject::QueryObject ( Teuchos::RCP< const Epetra_CrsGraph >  graph,
Teuchos::RCP< const Isorropia::Epetra::CostDescriber costs,
bool  isHypergraph 
)

Constructor.

Isorropia::Epetra::ZoltanLib::QueryObject::QueryObject ( Teuchos::RCP< const Epetra_RowMatrix >  matrix,
Teuchos::RCP< const Isorropia::Epetra::CostDescriber costs,
bool  isHypergraph 
)

Constructor.

virtual Isorropia::Epetra::ZoltanLib::QueryObject::~QueryObject (  )  [virtual]

Destructor.


Member Function Documentation

void Isorropia::Epetra::ZoltanLib::QueryObject::fill_procmap (  )  [private]

int Isorropia::Epetra::ZoltanLib::QueryObject::My_Number_Objects ( int *  ierr  )  [private]

My_Number_Objects() returns the number of rows currently assigned to this process.

(The rows are interpreted as graph vertices for Graph partitioning, and as hypergraph vertices for hypergraph partitioning.)

void Isorropia::Epetra::ZoltanLib::QueryObject::My_Object_List ( int  num_gid_entries,
int  num_lid_entries,
ZOLTAN_ID_PTR  global_ids,
ZOLTAN_ID_PTR  local_ids,
int  weight_dim,
float *  object_weights,
int *  ierr 
) [private]

My_ObjectList() returns to Zoltan the global ID and weight of the rows currently assigned to this process.

void Isorropia::Epetra::ZoltanLib::QueryObject::My_Number_Edges_Multi ( int  num_gid_entries,
int  num_lid_entries,
int  num_obj,
ZOLTAN_ID_PTR  global_ids,
ZOLTAN_ID_PTR  local_ids,
int *  num_edges,
int *  ierr 
) [private]

My_Number_Edges_Multi() is a query function used for graph partitioning only.

It returns to Zoltan the number of edges (non-zeroes) that each vertex (row) has.

void Isorropia::Epetra::ZoltanLib::QueryObject::My_Edge_List_Multi ( int  num_gid_entries,
int  num_lid_entries,
int  num_obj,
ZOLTAN_ID_PTR  global_ids,
ZOLTAN_ID_PTR  local_ids,
int *  num_edges,
ZOLTAN_ID_PTR  neighbor_global_ids,
int *  neighbor_procs,
int  weight_dim,
float *  edge_weights,
int *  ierr 
) [private]

My_Edge_List_Multi() is a query function used for graph partitioning only.

For each vertex (row), it returns a list of the global ID of each neighbor (non-zero) and the process owning that neighbor (that row).

void Isorropia::Epetra::ZoltanLib::QueryObject::My_HG_Size_CS ( int *  num_lists,
int *  num_pins,
int *  format,
int *  ierr 
) [private]

to do

void Isorropia::Epetra::ZoltanLib::QueryObject::My_HG_CS ( int  num_gid_entries,
int  num_row_or_col,
int  num_pins,
int  format,
ZOLTAN_ID_PTR  vtxedge_GID,
int *  vtxedge_ptr,
ZOLTAN_ID_PTR  pin_GID,
int *  ierr 
) [private]

to do

void Isorropia::Epetra::ZoltanLib::QueryObject::My_HG_Size_Edge_Weights ( int *  num_edges,
int *  ierr 
) [private]

to do

void Isorropia::Epetra::ZoltanLib::QueryObject::My_HG_Edge_Weights ( int  num_gid_entries,
int  num_lid_entries,
int  num_edges,
int  edge_weight_dim,
ZOLTAN_ID_PTR  edge_GID,
ZOLTAN_ID_PTR  edge_LID,
float *  edge_weights,
int *  ierr 
) [private]

to do

const Epetra_BlockMap& Isorropia::Epetra::ZoltanLib::QueryObject::RowMap ( void   )  [inline]

to do

bool Isorropia::Epetra::ZoltanLib::QueryObject::haveVertexWeights (  ) 

Return true if any of the processes in the application have defined vertex weights.

bool Isorropia::Epetra::ZoltanLib::QueryObject::haveGraphEdgeWeights (  ) 

Return true if any of the processes in the application have defined graph edge weights.

bool Isorropia::Epetra::ZoltanLib::QueryObject::haveHypergraphEdgeWeights (  ) 

Return true if any of the processes in the application have defined hypergraph edge weights.

static int Isorropia::Epetra::ZoltanLib::QueryObject::Number_Objects ( void *  data,
int *  ierr 
) [static]

to do

static void Isorropia::Epetra::ZoltanLib::QueryObject::Object_List ( void *  data,
int  num_gid_entries,
int  num_lid_entries,
ZOLTAN_ID_PTR  global_ids,
ZOLTAN_ID_PTR  local_ids,
int  weight_dim,
float *  object_weights,
int *  ierr 
) [static]

to do

static void Isorropia::Epetra::ZoltanLib::QueryObject::Number_Edges_Multi ( void *  data,
int  num_gid_entries,
int  num_lid_entries,
int  num_obj,
ZOLTAN_ID_PTR  global_ids,
ZOLTAN_ID_PTR  local_ids,
int *  num_edges,
int *  ierr 
) [static]

to do

static void Isorropia::Epetra::ZoltanLib::QueryObject::Edge_List_Multi ( void *  data,
int  num_gid_entries,
int  num_lid_entries,
int  num_obj,
ZOLTAN_ID_PTR  global_ids,
ZOLTAN_ID_PTR  local_ids,
int *  num_edges,
ZOLTAN_ID_PTR  neighbor_global_ids,
int *  neighbor_procs,
int  weight_dim,
float *  edge_weights,
int *  ierr 
) [static]

to do

static void Isorropia::Epetra::ZoltanLib::QueryObject::HG_Size_CS ( void *  data,
int *  num_lists,
int *  num_pins,
int *  format,
int *  ierr 
) [static]

to do

static void Isorropia::Epetra::ZoltanLib::QueryObject::HG_CS ( void *  data,
int  num_gid_entries,
int  num_row_or_col,
int  num_pins,
int  format,
ZOLTAN_ID_PTR  vtxedge_GID,
int *  vtxedge_ptr,
ZOLTAN_ID_PTR  pin_GID,
int *  ierr 
) [static]

to do

static void Isorropia::Epetra::ZoltanLib::QueryObject::HG_Size_Edge_Weights ( void *  data,
int *  num_edges,
int *  ierr 
) [static]

to do

static void Isorropia::Epetra::ZoltanLib::QueryObject::HG_Edge_Weights ( void *  data,
int  num_gid_entries,
int  num_lid_entries,
int  num_edges,
int  edge_weight_dim,
ZOLTAN_ID_PTR  edge_GID,
ZOLTAN_ID_PTR  edge_LID,
float *  edge_weights,
int *  ierr 
) [static]

to do


Member Data Documentation

Teuchos::RCP<const Epetra_CrsGraph> Isorropia::Epetra::ZoltanLib::QueryObject::graph_ [private]

Teuchos::RCP<const Epetra_RowMatrix> Isorropia::Epetra::ZoltanLib::QueryObject::matrix_ [private]

const Epetra_BlockMap* Isorropia::Epetra::ZoltanLib::QueryObject::rowMap_ [private]

const Epetra_BlockMap* Isorropia::Epetra::ZoltanLib::QueryObject::colMap_ [private]

Teuchos::RCP<const Isorropia::Epetra::CostDescriber> Isorropia::Epetra::ZoltanLib::QueryObject::costs_ [private]

std::map<int,int> Isorropia::Epetra::ZoltanLib::QueryObject::procmap_ [private]

std::set<int> Isorropia::Epetra::ZoltanLib::QueryObject::graph_self_edges_ [private]

const bool Isorropia::Epetra::ZoltanLib::QueryObject::isHypergraph_ [private]

const bool Isorropia::Epetra::ZoltanLib::QueryObject::haveGraph_ [private]

int Isorropia::Epetra::ZoltanLib::QueryObject::myProc_ [private]

int Isorropia::Epetra::ZoltanLib::QueryObject::base_ [private]


The documentation for this class was generated from the following file: