Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::MetisMeshPartitioner

Partitioneur de maillage utilisant la bibliothèque PARMetis. Plus de détails...

+ Graphe d'héritage de Arcane::MetisMeshPartitioner:
+ Graphe de collaboration de Arcane::MetisMeshPartitioner:

Fonctions membres publiques

 MetisMeshPartitioner (const ServiceBuildInfo &sbi)
 
void build () override
 Construction de niveau build du service.
 
void partitionMesh (bool initial_partition) override
 
void partitionMesh (bool initial_partition, Int32 nb_part) override
 
- Fonctions membres publiques hérités de Arcane::ArcaneMetisMeshPartitionerObject
 ArcaneMetisMeshPartitionerObject (const Arcane::ServiceBuildInfo &sbi)
 Constructeur.
 
virtual ~ArcaneMetisMeshPartitionerObject ()
 Destructeur.
 
CaseOptionsMetisMeshPartitioneroptions () const
 Options du jeu de données du service.
 
- Fonctions membres publiques hérités de Arcane::MeshPartitionerBase
 MeshPartitionerBase (const ServiceBuildInfo &sbi)
 
ISubDomainsubDomain () const
 
IMeshmesh () const
 Maillage associé au partitionneur.
 
void setMaximumComputationTime (Real v) override
 Positionne la proportion du temps de calcul.
 
virtual Real maximumComputationTime () const
 
virtual void setImbalance (Real v)
 Positionne le déséquilibre de temps de calcul.
 
virtual Real imbalance () const
 Déséquilibre de temps de calcul.
 
virtual void setMaxImbalance (Real v)
 Positionne le déséquilibre maximal autorisé
 
virtual Real maxImbalance () const
 Déséquilibre maximal autorisé
 
virtual void setComputationTimes (RealConstArrayView v)
 Temps de calcul de se sous-domaine. Le premier élément indique le temps de calcul du sous-domaine correspondante aux calcul dont le cout est proportionnel aux mailles. Les suivants doivent être associées à une variable (à faire).
 
virtual RealConstArrayView computationTimes () const
 
virtual void setCellsWeight (ArrayView< float > weights, Integer nb_weight)
 Permet de définir les poids des objets à partitionner : on doit utiliser le ILoadBalanceMng maintenant.
 
virtual ArrayView< floatcellsWeight () const
 
virtual Integer nbCellWeight () const
 
virtual void setILoadBalanceMng (ILoadBalanceMng *mng)
 Change le ILoadBalanceMng à utiliser.
 
virtual ILoadBalanceMngloadBalanceMng () const
 
virtual void notifyEndPartition ()
 Notification lors de la fin d'un repartionnement (après échange des entités)
 
virtual void changeOwnersFromCells ()
 Positionne les nouveaux propriétaires des noeuds, arêtes et faces à partir des mailles.
 
virtual void initConstraints (bool uidref=true)
 
virtual void freeConstraints ()
 
virtual Int32 nbOwnCellsWithConstraints () const
 
virtual Real getNeighbourCellsUidWithConstraints (Cell cell, Int64Array &neighbourcells, Array< float > *commWeights=NULL, bool noCellContrib=false)
 
virtual Integer nbNeighbourCellsWithConstraints (Cell cell)
 
virtual void getNeighbourNodesUidWithConstraints (Cell cell, Int64UniqueArray neighbournodes)
 
virtual Int32 localIdWithConstraints (Cell cell)
 
virtual Int32 localIdWithConstraints (Int32 cell_lid)
 
virtual void invertArrayLid2LidCompacted ()
 
virtual SharedArray< floatcellsWeightsWithConstraints (Int32 max_nb_weight=0, bool ask_lb_cells=false)
 
virtual SharedArray< floatcellsSizeWithConstraints ()
 
virtual bool cellUsedWithConstraints (Cell cell)
 
virtual bool cellUsedWithWeakConstraints (std::pair< Int64, Int64 > &paired_item)
 
virtual void changeCellOwner (Item cell, VariableItemInt32 &cells_new_owner, Int32 new_owner)
 
virtual bool haveConstraints ()
 
virtual bool haveWeakConstraints ()
 
- Fonctions membres publiques hérités de Arcane::AbstractService
virtual ~AbstractService ()
 Destructeur.
 
virtual IServiceInfoserviceInfo () const
 Accès aux informations du service.
 
virtual IBaseserviceParent () const
 Accès à l'interface de base des principaux objets Arcane.
 
virtual IServiceserviceInterface ()
 Retourne l'interface bas niveau IService du service.
 
- Fonctions membres publiques hérités de Arccore::TraceAccessor
 TraceAccessor (ITraceMng *m)
 Construit un accesseur via le gestionnaire de trace m.
 
 TraceAccessor (const TraceAccessor &rhs)
 Constructeur par recopie.
 
TraceAccessoroperator= (const TraceAccessor &rhs)
 Opérateur de recopie.
 
virtual ~TraceAccessor ()
 Libère les ressources.
 
ITraceMngtraceMng () const
 Gestionnaire de trace.
 
TraceMessage info () const
 Flot pour un message d'information.
 
TraceMessage pinfo () const
 Flot pour un message d'information en parallèle.
 
TraceMessage info (char category) const
 Flot pour un message d'information d'une catégorie donnée.
 
TraceMessage pinfo (char category) const
 Flot pour un message d'information parallèle d'une catégorie donnée.
 
TraceMessage info (bool v) const
 Flot pour un message d'information.
 
TraceMessage warning () const
 Flot pour un message d'avertissement.
 
TraceMessage pwarning () const
 
TraceMessage error () const
 Flot pour un message d'erreur.
 
TraceMessage perror () const
 
TraceMessage log () const
 Flot pour un message de log.
 
TraceMessage plog () const
 Flot pour un message de log.
 
TraceMessage logdate () const
 Flot pour un message de log précédé de la date.
 
TraceMessage fatal () const
 Flot pour un message d'erreur fatale.
 
TraceMessage pfatal () const
 Flot pour un message d'erreur fatale en parallèle.
 
TraceMessageDbg debug (Trace::eDebugLevel=Trace::Medium) const
 Flot pour un message de debug.
 
Trace::eDebugLevel configDbgLevel () const
 Niveau debug du fichier de configuration.
 
TraceMessage info (Int32 verbose_level) const
 Flot pour un message d'information d'un niveau donné
 
TraceMessage linfo () const
 Flot pour un message d'information avec le niveau d'information local à cette instance.
 
TraceMessage linfo (Int32 relative_level) const
 Flot pour un message d'information avec le niveau d'information local à cette instance.
 
void fatalMessage (const StandaloneTraceMessage &o) const
 
- Fonctions membres publiques hérités de Arcane::IService
virtual ~IService ()
 Libère les ressources.
 
- Fonctions membres publiques hérités de Arcane::IMeshPartitioner
virtual ~IMeshPartitioner ()
 Libère les ressources.
 
virtual IPrimaryMeshprimaryMesh () override
 Maillage associé
 
- Fonctions membres publiques hérités de Arcane::IMeshPartitionerBase
virtual ~IMeshPartitionerBase ()=default
 Libère les ressources.
 

Fonctions membres privées

void _partitionMesh (bool initial_partition, Int32 nb_part)
 
void _removeEmptyPartsV1 (const Int32 nb_part, const Int32 nb_own_cell, ArrayView< idxtype > metis_part)
 Comble les partitions vides (version 1).
 
void _removeEmptyPartsV2 (Int32 nb_part, ArrayView< idxtype > metis_part)
 Comble les partitions vides (version 2).
 
Int32 _removeEmptyPartsV2Helper (Int32 nb_part, ArrayView< idxtype > metis_part, Int32 algo_iteration)
 Applique une itération de l'algorithme de suppression des partitions vides.
 
int _writeGraph (IParallelMng *pm, Span< const idxtype > metis_vtkdist, Span< const idxtype > metis_xadj, Span< const idxtype > metis_adjncy, Span< const idxtype > metis_vwgt, Span< const idxtype > metis_ewgt, const String &Name) const
 

Attributs privés

IParallelMngm_parallel_mng = nullptr
 
Integer m_nb_refine
 
Integer m_random_seed
 
bool m_disable_floatingexception
 

Membres hérités additionnels

- Types publics hérités de Arcane::MeshPartitionerBase
enum  eMarkCellWithConstraint {
  eCellClassical , eCellReference , eCellGrouped , eCellGhost ,
  eCellInAConstraint
}
 
- Fonctions membres publiques statiques hérités de Arcane::ArcaneMetisMeshPartitionerObject
template<typename ServiceClassType >
static void fillServiceInfo (Arcane::ServiceInfo *si)
 
- Fonctions membres protégées hérités de Arcane::MeshPartitionerBase
virtual void dumpObject (String filename="toto")
 Dump les informations de repartitionnement sur le disque.
 
virtual voidgetCommunicator () const
 
virtual Parallel::Communicator communicator () const
 
virtual bool cellComm ()
 
virtual void _initArrayCellsWithConstraints ()
 
virtual void _initFilterLidCells ()
 
virtual void _initUidRef ()
 
virtual void _initUidRef (VariableCellInteger &cell_renum_uid)
 
virtual void _initLid2LidCompacted ()
 
virtual void _initNbCellsWithConstraints ()
 
virtual void _clearCellWgt ()
 
- Fonctions membres protégées hérités de Arcane::AbstractService
 AbstractService (const ServiceBuildInfo &)
 Constructeur à partir d'un ServiceBuildInfo.
 
- Fonctions membres protégées hérités de Arccore::TraceAccessor
void _setLocalVerboseLevel (Int32 v)
 
Int32 _localVerboseLevel () const
 
- Fonctions membres protégées hérités de Arcane::IService
 IService ()
 Constructeur.
 
- Attributs protégés hérités de Arcane::MeshPartitionerBase
IItemFamilym_cell_family = nullptr
 

Description détaillée

Partitioneur de maillage utilisant la bibliothèque PARMetis.

Définition à la ligne 73 du fichier MetisMeshPartitioner.cc.

Documentation des constructeurs et destructeur

◆ MetisMeshPartitioner()

Arcane::MetisMeshPartitioner::MetisMeshPartitioner ( const ServiceBuildInfo sbi)
explicit

Définition à la ligne 112 du fichier MetisMeshPartitioner.cc.

Documentation des fonctions membres

◆ _partitionMesh()

◆ _removeEmptyPartsV1()

void Arcane::MetisMeshPartitioner::_removeEmptyPartsV1 ( const Int32  nb_part,
const Int32  nb_own_cell,
ArrayView< idxtype >  metis_part 
)
private

Comble les partitions vides (version 1).

Cette version est la seule disponible dans les versions 2.18 (février 2020) et antérieure de Arcane. Le sous-domaine qui a le plus de mailles en donne une pour chaque partition vide. Cela ne fonctionne pas s'il y a plus de partititions vide que de mailles dans le sous-domaine le plus remplit. Pour éviter ce problème, la version 2 de l'algorithme applique itérativement celui-ci.

Définition à la ligne 687 du fichier MetisMeshPartitioner.cc.

Références Arcane::IParallelMng::commRank(), Arcane::IParallelMng::computeMinMaxSum(), Arccore::TraceAccessor::info(), et Arcane::CheckedConvert::toInteger().

Référencé par _partitionMesh().

◆ _removeEmptyPartsV2()

void Arcane::MetisMeshPartitioner::_removeEmptyPartsV2 ( Int32  nb_part,
ArrayView< idxtype >  metis_part 
)
private

Comble les partitions vides (version 2).

Cette version applique la version 1 de manière itérative pour garantir qu'on ne laisse pas de partitions vide.

Définition à la ligne 833 du fichier MetisMeshPartitioner.cc.

Références _removeEmptyPartsV2Helper(), Arccore::TraceAccessor::info(), et Arccore::TraceAccessor::pwarning().

Référencé par _partitionMesh().

◆ _removeEmptyPartsV2Helper()

Int32 Arcane::MetisMeshPartitioner::_removeEmptyPartsV2Helper ( Int32  nb_part,
ArrayView< idxtype >  metis_part,
Int32  algo_iteration 
)
private

Applique une itération de l'algorithme de suppression des partitions vides.

Il s'agit du même algorithme que _removeEmptyPartsLegacy() mais en garantissant qu'on ne laisse au moins une maille dans la partition qui donne ses mailles aux partitions vides.

Définition à la ligne 751 du fichier MetisMeshPartitioner.cc.

Références ARCANE_FATAL, Arcane::IParallelMng::commRank(), Arcane::IParallelMng::computeMinMaxSum(), et Arccore::TraceAccessor::info().

Référencé par _removeEmptyPartsV2().

◆ _writeGraph()

int Arcane::MetisMeshPartitioner::_writeGraph ( IParallelMng pm,
Span< const idxtype >  metis_vtkdist,
Span< const idxtype >  metis_xadj,
Span< const idxtype >  metis_adjncy,
Span< const idxtype >  metis_vwgt,
Span< const idxtype >  metis_ewgt,
const String name 
) const
private

◆ build()

void Arcane::MetisMeshPartitioner::build ( void  )
inlineoverridevirtual

Construction de niveau build du service.

L'appel à build est effectué au moment de sa construction, usuellement au niveau de sa lecture dans les options en phase1.

Réimplémentée à partir de Arcane::AbstractService.

Définition à la ligne 82 du fichier MetisMeshPartitioner.cc.

◆ partitionMesh() [1/2]

void Arcane::MetisMeshPartitioner::partitionMesh ( bool  initial_partition)
overridevirtual

Repartitionne le maillage mesh

Cette méthode change les propriétaires des entités et remplit la variable IItemFamily::itemsNewOwner() de chaque famille d'entité du maillage mesh avec le numéro du nouveau sous-domaine propriétaire.

Note
Cette méthode est réservée aux développeurs Arcane. Si un module souhaite effectuer un repartitionnement, il faut appeler la méthode IMeshUtilities::partitionAndExchangeMeshWithReplication() qui gère à la fois le partitionnement et l'échange des informations et supporte la réplication de domaine.

Réimplémentée à partir de Arcane::IMeshPartitioner.

Définition à la ligne 128 du fichier MetisMeshPartitioner.cc.

Références Arcane::IParallelMng::commSize(), et partitionMesh().

Référencé par partitionMesh().

◆ partitionMesh() [2/2]

void Arcane::MetisMeshPartitioner::partitionMesh ( bool  initial_partition,
Int32  nb_part 
)
overridevirtual

Implémente Arcane::IMeshPartitioner.

Définition à la ligne 138 du fichier MetisMeshPartitioner.cc.

Documentation des données membres

◆ m_disable_floatingexception

bool Arcane::MetisMeshPartitioner::m_disable_floatingexception
private

Définition à la ligne 95 du fichier MetisMeshPartitioner.cc.

◆ m_nb_refine

Integer Arcane::MetisMeshPartitioner::m_nb_refine
private

Définition à la ligne 93 du fichier MetisMeshPartitioner.cc.

◆ m_parallel_mng

IParallelMng* Arcane::MetisMeshPartitioner::m_parallel_mng = nullptr
private

Définition à la ligne 92 du fichier MetisMeshPartitioner.cc.

◆ m_random_seed

Integer Arcane::MetisMeshPartitioner::m_random_seed
private

Définition à la ligne 94 du fichier MetisMeshPartitioner.cc.


La documentation de cette classe a été générée à partir du fichier suivant :