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"
19#include "arcane/utils/UniqueArray.h"
21#include "arcane/core/IParallelSort.h"
22#include "arcane/core/IParallelMng.h"
36template <
typename KeyType>
47 return pm->send(values, rank,
false);
51 return pm->recv(values, rank,
false);
57 return std::numeric_limits<KeyType>::max();
60 static bool isValid(
const KeyType&
k)
99template <
typename KeyType,
typename KeyTypeTraits = BitonicSortDefaultTraits<KeyType>>
101:
public TraceAccessor
135 void _mergeLevels(Int32 begin, Int32 size);
136 void _mergeProcessors(Int32
proc1, Int32
proc2);
137 void _separator(Int32 begin, Int32 size);
138 void _localHeapSort();
151 Int64 m_init_size = 0;
156 bool m_want_index_and_rank =
true;
159 Integer m_nb_merge = 0;
Interface du gestionnaire de parallélisme pour un sous-domaine.
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().
ConstArrayView< KeyType > keys() const override
Après un tri, retourne la liste des éléments de ce rang.
void sort(ConstArrayView< KeyType > keys) override
Trie en parallèle les éléments de keys sur tous les rangs.
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.
Référence à une instance.
Implémentation de la concurrence.