Arcane  v3.14.11.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Référence du modèle de la classe Arcane::Parallel::BitonicSort< KeyType, KeyTypeTraits >

Algorithme de tri bitonique parallèle. Plus de détails...

#include <arcane/core/parallel/BitonicSort.h>

+ Graphe d'héritage de Arcane::Parallel::BitonicSort< KeyType, KeyTypeTraits >:
+ Graphe de collaboration de Arcane::Parallel::BitonicSort< KeyType, KeyTypeTraits >:

Fonctions membres publiques

 BitonicSort (IParallelMng *parallel_mng)
 
void sort (ConstArrayView< KeyType > keys) override
 Trie en parallèle les éléments de keys sur tous les rangs.
 
ConstArrayView< KeyType > keys () const override
 Après un tri, retourne la liste des éléments de ce rang.
 
Int32ConstArrayView keyRanks () const override
 Après un tri, retourne le tableau des rangs d'origine des éléments de keys().
 
Int32ConstArrayView keyIndexes () const override
 Après un tri, retourne le tableau des indices dans la liste d'origine des éléments de keys().
 
void setNeedIndexAndRank (bool want_index_and_rank)
 
- 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
 

Membres hérités additionnels

- Fonctions membres protégées hérités de Arccore::TraceAccessor
void _setLocalVerboseLevel (Int32 v)
 
Int32 _localVerboseLevel () const
 

Description détaillée

template<typename KeyType, typename KeyTypeTraits = BitonicSortDefaultTraits<KeyType>>
class Arcane::Parallel::BitonicSort< KeyType, KeyTypeTraits >

Algorithme de tri bitonique parallèle.

Le type de la clé peut être quelconque, mais il doit posséder un opérateur de comparaison. Les caractéristiques nécessaires sont données par la classe KeyTypeTraints. . L'implémentation fournit les opérations pour les type Int32, Int64 et Real via la classe BitonicSortDefaultTraits. Pour les autres types, il est nécessaire de spécialiser cette classe.

La méthode sort() procède au tri. Après appel à cette méthode, il est possible de récupérer la liste des clés via keys() et les rangs et indices dans la liste d'origine de chaque élément de la clé via les méthodes keyRangs() et keyIndexes(). Si ces informations ne sont pas utiles, il est possible d'appeler setNeedIndexAndRank() pour les désactiver ce qui permet d'accéler quelque peu le tri.

Le tri se fait de telle sorte que les éléments sont triés dans l'ordre croissant en commençant par le processeur de rang 0, puis de rang 1 et ainsi de suite jusqu'à la fin. Par exemple, pour une liste de 5000 éléments répartis sur 4 rangs, le processeur de rang 0 possédera à la fin du tri les 1250 éléments les plus petits, le processeur de rang 1 les 1250 éléments suivantes et ainsi de suite.

Pour accélérer l'algorithme, il est préférable que tous les processeurs aient environ le même nombre d'éléments dans leur liste au départ. A la fin du tri, il est possible que tous les processeurs n'aient pas le même nombre d'éléments dans la liste et notamment les processeurs de rang les plus élevés peuvent ne pas avoir d'éléments.

Définition à la ligne 99 du fichier BitonicSort.h.

Documentation des constructeurs et destructeur

◆ BitonicSort()

template<typename KeyType , typename KeyTypeTraits >
Arcane::Parallel::BitonicSort< KeyType, KeyTypeTraits >::BitonicSort ( IParallelMng parallel_mng)
explicit

Définition à la ligne 29 du fichier BitonicSortT.H.

Documentation des fonctions membres

◆ keyIndexes()

template<typename KeyType , typename KeyTypeTraits = BitonicSortDefaultTraits<KeyType>>
Int32ConstArrayView Arcane::Parallel::BitonicSort< KeyType, KeyTypeTraits >::keyIndexes ( ) const
inlineoverridevirtual

Après un tri, retourne le tableau des indices dans la liste d'origine des éléments de keys().

Implémente Arcane::Parallel::IParallelSort< KeyType >.

Définition à la ligne 123 du fichier BitonicSort.h.

◆ keyRanks()

template<typename KeyType , typename KeyTypeTraits = BitonicSortDefaultTraits<KeyType>>
Int32ConstArrayView Arcane::Parallel::BitonicSort< KeyType, KeyTypeTraits >::keyRanks ( ) const
inlineoverridevirtual

Après un tri, retourne le tableau des rangs d'origine des éléments de keys().

Implémente Arcane::Parallel::IParallelSort< KeyType >.

Définition à la ligne 120 du fichier BitonicSort.h.

◆ keys()

template<typename KeyType , typename KeyTypeTraits = BitonicSortDefaultTraits<KeyType>>
ConstArrayView< KeyType > Arcane::Parallel::BitonicSort< KeyType, KeyTypeTraits >::keys ( ) const
inlineoverridevirtual

Après un tri, retourne la liste des éléments de ce rang.

Implémente Arcane::Parallel::IParallelSort< KeyType >.

Définition à la ligne 117 du fichier BitonicSort.h.

◆ setNeedIndexAndRank()

template<typename KeyType , typename KeyTypeTraits = BitonicSortDefaultTraits<KeyType>>
void Arcane::Parallel::BitonicSort< KeyType, KeyTypeTraits >::setNeedIndexAndRank ( bool  want_index_and_rank)
inline

Définition à la ligne 127 du fichier BitonicSort.h.

◆ sort()

template<typename KeyType , typename KeyTypeTraits >
void Arcane::Parallel::BitonicSort< KeyType, KeyTypeTraits >::sort ( ConstArrayView< KeyType >  keys)
overridevirtual

Trie en parallèle les éléments de keys sur tous les rangs.

Tri bitonique de la variable m_key.

Cette opération est collective.

En sortie de l'appel, la variable key est entièrement classée par ordre croissant : les premiers éléments sont situés par ordre croissant sur le processeur 0, les suivants sur le processeur 1, etc... Le rangement se fait 'en place', de sorte que la taille des tableaux sur les différents processeurs n'est pas modifiée.

Implémente Arcane::Parallel::IParallelSort< KeyType >.

Définition à la ligne 86 du fichier BitonicSortT.H.


La documentation de cette classe a été générée à partir des fichiers suivants :