Zoltan2 Version of the Day
Public Types | Public Member Functions | Protected Attributes
Zoltan2::PartitioningProblem< Adapter > Class Template Reference

PartitioningProblem sets up partitioning problems for the user. More...

#include <Zoltan2_PartitioningProblem.hpp>

Inheritance diagram for Zoltan2::PartitioningProblem< Adapter >:
Inheritance graph
[legend]
Collaboration diagram for Zoltan2::PartitioningProblem< Adapter >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef Adapter::scalar_t scalar_t
typedef Adapter::gid_t gid_t
typedef Adapter::gno_t gno_t
typedef Adapter::lno_t lno_t
typedef Adapter::user_t user_t
typedef Adapter::base_adapter_t base_adapter_t

Public Member Functions

 ~PartitioningProblem ()
 Destructor.
 PartitioningProblem (Adapter *A, Teuchos::ParameterList *p)
 Constructor where communicator is the Teuchos default.
void solve (bool updateInputData=true)
 Direct the problem to create a solution.
const PartitioningSolution
< Adapter > & 
getSolution ()
 Get the solution to the problem.
const scalar_t getImbalance (int dim=0) const
 Returns the imbalance of the solution.
ArrayRCP< const MetricValues
< scalar_t > > 
getMetrics () const
 Get the array of metrics Metrics were only computed if user requested metrics with a parameter.
void printMetrics (ostream &os) const
 Print the array of metrics.
void setPartSizes (int len, partId_t *partIds, scalar_t *partSizes, bool makeCopy=true)
 Set or reset relative sizes for the partitions that Zoltan2 will create.
void setPartSizesForCritiera (int criteria, int len, partId_t *partIds, scalar_t *partSizes, bool makeCopy=true)
 Set or reset the relative sizes (per weight) for the partitions that Zoltan2 will create.
void resetParameters (ParameterList *params)
 Reset the list of parameters.
const RCP< const Environment > & getEnvironment () const
 Get the current Environment. Useful for testing.
void printTimers () const
 If timer data was collected, print out global data.

Protected Attributes

Adapter * inputAdapter_
base_adapter_tbaseInputAdapter_
RCP< GraphModel< base_adapter_t > > graphModel_
RCP< IdentifierModel
< base_adapter_t > > 
identifierModel_
RCP< CoordinateModel
< base_adapter_t > > 
coordinateModel_
RCP< const Model
< base_adapter_t > > 
baseModel_
RCP< ParameterList > params_
RCP< const Comm< int > > comm_
RCP< Environmentenv_
RCP< const EnvironmentenvConst_

Detailed Description

template<typename Adapter>
class Zoltan2::PartitioningProblem< Adapter >

PartitioningProblem sets up partitioning problems for the user.

The PartitioningProblem is the core of the Zoltan2 partitioning API. Based on the the user's input and parameters, the PartitioningProblem sets up a computational Model, and a Solution object. When the user calls the solve() method, the PartitioningProblem runs the algorithm, after which the Solution object may be obtained by the user.

Todo:

include pointers to examples

repartition given an initial solution

follow partitioning with global or local ordering

allow unsetting of part sizes by passing in null pointers

add a parameter by which user tells us there are no self edges to be removed.

The template parameter is the InputAdapter containing the data that is to be partitioned.

Todo:
hierarchical partitioning
Examples:

block.cpp, and rcb_C.cpp.

Definition at line 87 of file Zoltan2_PartitioningProblem.hpp.


Member Typedef Documentation

template<typename Adapter>
typedef Adapter::scalar_t Zoltan2::PartitioningProblem< Adapter >::scalar_t

Definition at line 91 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
typedef Adapter::gid_t Zoltan2::PartitioningProblem< Adapter >::gid_t

Definition at line 92 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
typedef Adapter::gno_t Zoltan2::PartitioningProblem< Adapter >::gno_t

Definition at line 93 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
typedef Adapter::lno_t Zoltan2::PartitioningProblem< Adapter >::lno_t

Definition at line 94 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
typedef Adapter::user_t Zoltan2::PartitioningProblem< Adapter >::user_t

Definition at line 95 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
typedef Adapter::base_adapter_t Zoltan2::PartitioningProblem< Adapter >::base_adapter_t

Reimplemented from Zoltan2::Problem< Adapter >.

Definition at line 96 of file Zoltan2_PartitioningProblem.hpp.


Constructor & Destructor Documentation

template<typename Adapter>
Zoltan2::PartitioningProblem< Adapter >::~PartitioningProblem ( ) [inline]

Destructor.

Definition at line 104 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
Zoltan2::PartitioningProblem< Adapter >::PartitioningProblem ( Adapter *  A,
Teuchos::ParameterList *  p 
)

Constructor where communicator is the Teuchos default.

Definition at line 354 of file Zoltan2_PartitioningProblem.hpp.


Member Function Documentation

template<typename Adapter >
void Zoltan2::PartitioningProblem< Adapter >::solve ( bool  updateInputData = true) [virtual]

Direct the problem to create a solution.

Implements Zoltan2::Problem< Adapter >.

Definition at line 472 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
const PartitioningSolution<Adapter>& Zoltan2::PartitioningProblem< Adapter >::getSolution ( ) [inline]

Get the solution to the problem.

Definition at line 140 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
const scalar_t Zoltan2::PartitioningProblem< Adapter >::getImbalance ( int  dim = 0) const [inline]

Returns the imbalance of the solution.

Parameters:
dimIf there are multiple weights per object, specify the dimension for which the imbalance is desired, ranging from zero to one less then number of weights per object. Imbalance was only computed if user requested metrics with a parameter.

Definition at line 152 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
ArrayRCP<const MetricValues<scalar_t> > Zoltan2::PartitioningProblem< Adapter >::getMetrics ( ) const [inline]

Get the array of metrics Metrics were only computed if user requested metrics with a parameter.

Definition at line 164 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
void Zoltan2::PartitioningProblem< Adapter >::printMetrics ( ostream &  os) const [inline]

Print the array of metrics.

Parameters:
osthe output stream for the report. Metrics were only computed if user requested metrics with a parameter.

Definition at line 178 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
void Zoltan2::PartitioningProblem< Adapter >::setPartSizes ( int  len,
partId_t partIds,
scalar_t partSizes,
bool  makeCopy = true 
) [inline]

Set or reset relative sizes for the partitions that Zoltan2 will create.

Parameters:
lenThe size of the partIds and partSizes lists
partIdsA list of len partition identifiers. Partition identifiers range from zero to one less than the global number of identifiers.
partSizesA list of len relative sizes corresponding to the partIds.
makeCopyIf true, Zoltan2 will make a copy of the ids and sizes that are provided in this call. If false, Zoltan2 will just save the pointers to to the caller's lists. If the pointers will remain remain valid throughout the lifetime of the PartitioningProblem, and memory use is an issue, then set makeCopy to false. By default, Zoltan2 will copy the caller's list of ids and sizes.

A given partid should only be provided once across the application. Duplicate partIds will generate a std::runtime_error exception when the PartitioningSolution is created. Part ids that are omitted will be assigned the average of the sizes that have been specified.

Subsequent calls to setPartSizes will replace the list of part ids and part sizes provided previously.

If the application has set multiple weights per object, then the part sizes supplied in this method are applied to the first weight.

Zoltan2 assumes that uniform partition sizes are desired by the caller, unless specified otherwise in a call to setPartSizes or setPartSizesForCritiera.

Todo:
A user should be able to give us one set of part sizes that applies to all weight dimensions. Right now for each weight dimension that does not have uniform part sizes, the user has to give us the part sizes once for each.

Definition at line 223 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter >
void Zoltan2::PartitioningProblem< Adapter >::setPartSizesForCritiera ( int  criteria,
int  len,
partId_t partIds,
scalar_t partSizes,
bool  makeCopy = true 
)

Set or reset the relative sizes (per weight) for the partitions that Zoltan2 will create.

Parameters:
criteriathe criteria (weight dimension) for which these part sizes apply. Criteria range from zero to one less than the number of weights per object specified in the caller's InputAdapter.
lenThe size of the partIds and partSizes lists
partIdsA list of len partition identifiers. Partition identifiers range from zero to one less than the global number of identifiers.
partSizesA list of len relative sizes corresponding to the partIds.
makeCopyIf true, Zoltan2 will make a copy of the ids and sizes that are provided in this call. If false, Zoltan2 will just save the pointers to to the caller's lists. If the pointers will remain remain valid throughout the lifetime of the PartitioningProblem, and memory use is an issue, then set makeCopy to false. By default, Zoltan2 will copy the caller's list of ids and sizes.

A given partid should only be provided once across the application. Duplicate partIds will generate a std::runtime_error exception when the PartitioningSolution is created. Part ids that are omitted will be assigned the average of the sizes that have been specified.

Subsequent calls to setPartSizes for the same criteria will replace the list of part ids and part sizes provided for that criteria previously.

Zoltan2 assumes that uniform partition sizes are desired by the caller, unless specified otherwise in a call to setPartSizes or setPartSizesForCritiera.

Definition at line 428 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
void Zoltan2::PartitioningProblem< Adapter >::resetParameters ( ParameterList *  params) [inline]

Reset the list of parameters.

Reimplemented from Zoltan2::Problem< Adapter >.

Definition at line 268 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter>
const RCP<const Environment>& Zoltan2::PartitioningProblem< Adapter >::getEnvironment ( ) const [inline]

Get the current Environment. Useful for testing.

Definition at line 279 of file Zoltan2_PartitioningProblem.hpp.

template<typename Adapter >
void Zoltan2::Problem< Adapter >::printTimers ( ) const [inline, inherited]

If timer data was collected, print out global data.

If the parameter "timer_output_stream" or "timer_output_file" was set, then timing statistics are available and will be printed out to the requested output stream with this call.

All processes in the application must call this, even if they were not all in the problem communicator. All timers are reset back to zero after this call.

Timer starts, stops and displays are ignored if Zoltan2 is compiled with Z2_OMIT_ALL_ERROR_CHECKING.

Definition at line 110 of file Zoltan2_Problem.hpp.


Member Data Documentation

template<typename Adapter >
Adapter* Zoltan2::Problem< Adapter >::inputAdapter_ [protected, inherited]

Definition at line 128 of file Zoltan2_Problem.hpp.

template<typename Adapter >
base_adapter_t* Zoltan2::Problem< Adapter >::baseInputAdapter_ [protected, inherited]

Definition at line 129 of file Zoltan2_Problem.hpp.

template<typename Adapter >
RCP<GraphModel<base_adapter_t> > Zoltan2::Problem< Adapter >::graphModel_ [protected, inherited]

Definition at line 131 of file Zoltan2_Problem.hpp.

template<typename Adapter >
RCP<IdentifierModel<base_adapter_t> > Zoltan2::Problem< Adapter >::identifierModel_ [protected, inherited]

Definition at line 132 of file Zoltan2_Problem.hpp.

template<typename Adapter >
RCP<CoordinateModel<base_adapter_t> > Zoltan2::Problem< Adapter >::coordinateModel_ [protected, inherited]

Definition at line 133 of file Zoltan2_Problem.hpp.

template<typename Adapter >
RCP<const Model<base_adapter_t> > Zoltan2::Problem< Adapter >::baseModel_ [protected, inherited]

Definition at line 139 of file Zoltan2_Problem.hpp.

template<typename Adapter >
RCP<ParameterList> Zoltan2::Problem< Adapter >::params_ [protected, inherited]

Definition at line 141 of file Zoltan2_Problem.hpp.

template<typename Adapter >
RCP<const Comm<int> > Zoltan2::Problem< Adapter >::comm_ [protected, inherited]

Definition at line 142 of file Zoltan2_Problem.hpp.

template<typename Adapter >
RCP<Environment> Zoltan2::Problem< Adapter >::env_ [protected, inherited]

Definition at line 148 of file Zoltan2_Problem.hpp.

template<typename Adapter >
RCP<const Environment> Zoltan2::Problem< Adapter >::envConst_ [protected, inherited]

Definition at line 153 of file Zoltan2_Problem.hpp.


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