Isorropia: Partitioning, Load Balancing and more
Public Member Functions | List of all members
Isorropia::Partitioner2D Class Referenceabstract

Interface (abstract base class) for computing a new 2D partitioning and describing the layout of elements in the new partitions. More...

#include <Isorropia_Partitioner2D.hpp>

Inheritance diagram for Isorropia::Partitioner2D:
Inheritance graph
[legend]
Collaboration diagram for Isorropia::Partitioner2D:
Collaboration graph
[legend]

Public Member Functions

virtual ~Partitioner2D ()
 Destructor. More...
 
virtual void partition (bool force_repartitioning=false)=0
 Method which does the work of computing a new partitioning. More...
 
virtual int numElemsInPart (int part) const =0
 Return the number of LOCAL elements in a given part. More...
 
virtual void elemsInPart (int part, int *elementList, int len) const =0
 Fill user-allocated list (of length len) with the local element ids to be located in the given part. More...
 
virtual int extractPartsView (int &size, const int *&array) const
 Give access of the part assignments array that is owned by the current processor. More...
 
virtual int extractPartsCopy (int len, int &size, int *array) const
 Copy a part of the part assignment array. More...
 
virtual void setParameters (const Teuchos::ParameterList &paramlist)=0
 Set parameters for the Operator instance. More...
 
virtual void compute (bool forceRecomputing=false)=0
 Method which does the work of computing a new partitioning/coloring/ordering, depending on the child class used. More...
 
virtual bool alreadyComputed () const =0
 Query whether the computation has already been called. More...
 
virtual int numProperties () const =0
 Return the number of different values used for "properties". More...
 
virtual int numLocalProperties () const =0
 Return the number of different values used for "properties" for this process only. More...
 
virtual const int & operator[] (int myElem) const =0
 Return the "property" for a given element that resided locally. More...
 
virtual int numElemsWithProperty (int property) const =0
 Return the number of LOCAL elements with the given property. More...
 
virtual void elemsWithProperty (int property, int *elementList, int len) const =0
 Fill user-allocated list (of length len) with the local element ids of the LOCAL elements with the given property. More...
 
virtual int extractPropertiesView (int &size, const int *&array) const =0
 Give access of the property array that is owned by the current processor. More...
 
virtual int extractPropertiesCopy (int len, int &size, int *array) const =0
 Copy a part of the property array. More...
 

Detailed Description

Interface (abstract base class) for computing a new 2D partitioning and describing the layout of elements in the new partitions.

If the methods which describe the new partitioning (e.g., newPartitionNumber(), etc.) are called before compute_partitioning() has been called, behavior is not well defined. Implementations will either return empty/erroneous data, or throw an exception. In most cases, implementations will probably call compute_partitioning() internally in a constructor or factory method, so this won't usually be an issue.

Constructor & Destructor Documentation

virtual Isorropia::Partitioner2D::~Partitioner2D ( )
inlinevirtual

Destructor.

Reimplemented in Isorropia::Epetra::Partitioner2D.

Member Function Documentation

virtual void Isorropia::Partitioner2D::partition ( bool  force_repartitioning = false)
pure virtual

Method which does the work of computing a new partitioning.

Implementations of this interface will typically be constructed with an object or information describing the existing ('old') partitioning. This method computes a 'new' rebalanced partitioning for that input data.

Parameters
force_repartitioningOptional argument defaults to false. Depending on the implementation, compute_partitioning() should only perform a repartitioning the first time it is called, and subsequent repeated calls are no-ops. If the user's intent is to re-compute the partitioning (e.g., if parameters or other inputs have been changed), then setting this flag to true will force a new partitioning to be computed.

Implements Isorropia::Partitioner.

Implemented in Isorropia::Epetra::Partitioner2D.

virtual int Isorropia::Partitioner2D::numElemsInPart ( int  part) const
pure virtual

Return the number of LOCAL elements in a given part.

Parameters
[in]partthe part ID we want to know the number of local elements.
Returns
number of local elements that belongs to the given part.
See Also
Isorropia::Operator::numElemsWithProperty()

Implements Isorropia::Partitioner.

Implemented in Isorropia::Epetra::Partitioner2D.

virtual void Isorropia::Partitioner2D::elemsInPart ( int  part,
int *  elementList,
int  len 
) const
pure virtual

Fill user-allocated list (of length len) with the local element ids to be located in the given part.

Parameters
[in]partthe part ID we consider
[out]elementListarray of elements that belongs to this part ID, must be allocated by user with size at least len
[in]lenmaximum number of elements we can put in the array. Usually, may be the result of Isorropia::Partitioner::numElemsInPart(). .
See Also
Isorropia::Operator::elemsWithProperty()

Implements Isorropia::Partitioner.

Implemented in Isorropia::Epetra::Partitioner2D.

virtual int Isorropia::Partitioner::extractPartsView ( int &  size,
const int *&  array 
) const
inlinevirtualinherited

Give access of the part assignments array that is owned by the current processor.

Parameters
[out]sizeNumber of elements in the array.
[out]arrayPointer to the the part assignements array inside the object.
Remarks
This pointer is only significant if the object still exists. Otherwise, you must use
See Also
Isorropia::Operator::extractPartsCopy()
Isorropia::Operator::extractPropertiesView()
virtual int Isorropia::Partitioner::extractPartsCopy ( int  len,
int &  size,
int *  array 
) const
inlinevirtualinherited

Copy a part of the part assignment array.

Parameters
[in]lenof the array given by the user.
[out]sizeNumber of elements in the array.
[out]arrayArray of part assignments. Allocated by the user with a size of at least len elements.
Remarks
Memory space which is not useful in the array is not initialized or used in this method.
See Also
Isorropia::Operator::extractPropertiesCopy()
virtual void Isorropia::Operator::setParameters ( const Teuchos::ParameterList &  paramlist)
pure virtualinherited

Set parameters for the Operator instance.

The contents of the input paramlist object are copied into an internal ParameterList attribute. Instances of this interface should not retain a reference to the input ParameterList after this method returns.

Parameters
[in]paramlistList of parameters that the user wants to use.

Implemented in Isorropia::Epetra::Operator.

virtual void Isorropia::Operator::compute ( bool  forceRecomputing = false)
pure virtualinherited

Method which does the work of computing a new partitioning/coloring/ordering, depending on the child class used.

Parameters
forceRecomputingOptional argument defaults to false. Depending on the implementation, compute() should only perform a computation the first time it is called, and subsequent repeated calls are no-ops. If the user's intent is to re-compute the results (e.g., if parameters or other inputs have been changed), then setting this flag to true will force a new result to be computed.

Implemented in Isorropia::Epetra::Operator, Isorropia::Epetra::Partitioner, Isorropia::Epetra::Colorer, Isorropia::Epetra::Partitioner2D, Isorropia::Epetra::Orderer, and Isorropia::Epetra::LevelScheduler.

virtual bool Isorropia::Operator::alreadyComputed ( ) const
pure virtualinherited

Query whether the computation has already been called.

Returns
True if the computation has already been done, False otherwise.

Implemented in Isorropia::Epetra::Operator.

virtual int Isorropia::Operator::numProperties ( ) const
pure virtualinherited

Return the number of different values used for "properties".

For example, the number of colors or the number of parts used for the overall graph/matrix.

Returns
Global number of values for properties
Remarks
Infact, it returns the upper bound of the interval of taken values. For example, for the colors "1,2,4" , it will return "4"

Implemented in Isorropia::Epetra::Operator.

virtual int Isorropia::Operator::numLocalProperties ( ) const
pure virtualinherited

Return the number of different values used for "properties" for this process only.

Returns
Local number of values for properties

Implemented in Isorropia::Epetra::Operator.

virtual const int& Isorropia::Operator::operator[] ( int  myElem) const
pure virtualinherited

Return the "property" for a given element that resided locally.

Parameters
[in]myElemthe local ID of the element we want to know the property.
Returns
property associated to the local element.

Implemented in Isorropia::Epetra::Operator.

virtual int Isorropia::Operator::numElemsWithProperty ( int  property) const
pure virtualinherited

Return the number of LOCAL elements with the given property.

Parameters
[in]propertyValue of the property to consider.
Returns
Number of local elems which have this property.

Implemented in Isorropia::Epetra::Operator.

virtual void Isorropia::Operator::elemsWithProperty ( int  property,
int *  elementList,
int  len 
) const
pure virtualinherited

Fill user-allocated list (of length len) with the local element ids of the LOCAL elements with the given property.

Parameters
[in]propertyValue of the property to consider.
[out]elementListUser allocated array (of size at least len) of local ID that have the asked property.
[in]lenMaximum lenght for the array. If len is greater than the result of numElemsWithProperty() for property, only the first and relevant elements are filled.
Remarks
Memory space which is not useful in the array is not initialized or used in this method.

Implemented in Isorropia::Epetra::Operator.

virtual int Isorropia::Operator::extractPropertiesView ( int &  size,
const int *&  array 
) const
pure virtualinherited

Give access of the property array that is owned by the current processor.

Parameters
[out]sizeNumber of elements in the array.
[out]arrayPointer to the the properties array inside the object.
Remarks
This pointer is only significant if the object still exists. Otherwise, you must use
See Also
Isorropia::Operator::extractPropertiesCopy().
Isorropia::Operator::extractPropertiesCopy()

Implemented in Isorropia::Epetra::Operator.

virtual int Isorropia::Operator::extractPropertiesCopy ( int  len,
int &  size,
int *  array 
) const
pure virtualinherited

Copy a part of the property array.

Parameters
[in]lenof the array given by the user.
[out]sizeNumber of elements in the array.
[out]arrayArray of properties. Allocated by the user with a size of at least len elements.
Remarks
Memory space which is not useful in the array is not initialized or used in this method.
See Also
Isorropia::Operator::extractPropertiesView()

Implemented in Isorropia::Epetra::Operator.


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