12#ifndef ARCANE_CORE_PARALLEL_BITONICSORT_H
13#define ARCANE_CORE_PARALLEL_BITONICSORT_H
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/Limits.h"
20#include "arcane/core/IParallelSort.h"
21#include "arcane/core/IParallelMng.h"
35template <
typename KeyType>
46 return pm->send(values, rank,
false);
50 return pm->
recv(values, rank,
false);
56 return std::numeric_limits<KeyType>::max();
59 static bool isValid(
const KeyType&
k)
98template <
typename KeyType,
typename KeyTypeTraits = BitonicSortDefaultTraits<KeyType>>
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual void recv(ArrayView< char > values, Int32 rank)=0
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Fournit les opérations nécessaires pour le tri via la classe BitonicSort.
static KeyType maxValue()
Valeur max possible pour la clé.
Algorithme de tri bitonique parallèle.
Int32ConstArrayView keyIndexes() const override
Après un tri, retourne le tableau des indices dans la liste d'origine des éléments de keys().
void _mergeProcessors(Int32 proc1, Int32 proc2)
Fusion des listes de deux processeurs .
Integer m_nb_merge
Statistiques sur le nombre de niveaux de messages.
ConstArrayView< KeyType > keys() const override
Après un tri, retourne la liste des éléments de ce rang.
void _separator(Int32 begin, Int32 size)
Etage séparateur de l'algorithme de tri bitonique.
bool m_want_index_and_rank
Indique si on souhaite les infos sur les rangs et index.
void sort(ConstArrayView< KeyType > keys) override
Trie en parallèle les éléments de keys sur tous les rangs.
Int64 m_size
Nombre d'éléments locaux pour le tri bitonique.
UniqueArray< Int32 > m_key_ranks
Tableau contenant le rang du processeur où se trouve la clé
UniqueArray< Int32 > m_key_indexes
Tableau contenant l'indice de la clé dans le processeur.
Int64 m_init_size
Nombre d'éléments locaux.
UniqueArray< KeyType > m_keys
Variable contenant la cle du tri.
IParallelMng * m_parallel_mng
Gestionnaire du parallèlisme.
void _localHeapSort()
Tri par tas en local de la variable m_key.
void _mergeLevels(Int32 begin, Int32 size)
Tri bitonique de la variable key.
Int32ConstArrayView keyRanks() const override
Après un tri, retourne le tableau des rangs d'origine des éléments de keys().
Interface d'un algorithme de tri parallèle.
Vue constante d'un tableau de type T.
Classe d'accès aux traces.
Implémentation de la concurrence.