#include <QueryObject.hpp>
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::CostDescriber > | costs_ |
| std::map< int, int > | procmap_ |
| std::set< int > | graph_self_edges_ |
| const bool | isHypergraph_ |
| const bool | haveGraph_ |
| int | myProc_ |
| int | base_ |
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.
| 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.
| 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
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] |