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>
41 static bool compareLess(
const KeyType& k1,
const KeyType& k2)
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>>
128 void setNeedIndexAndRank(
bool want_index_and_rank)
130 m_want_index_and_rank = want_index_and_rank;
136 void _mergeProcessors(
Int32 proc1,
Int32 proc2);
138 void _localHeapSort();
151 Int64 m_init_size = 0;
156 bool m_want_index_and_rank =
true;
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual void recv(ArrayView< char > values, Int32 rank)=0
Fournit les opérations nécessaires pour le tri via la classe BitonicSort.
static KeyType maxValue()
Valeur max possible pour la clé.
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.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Vecteur 1D de données avec sémantique par valeur (style STL).
Implémentation de la concurrence.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
std::int32_t Int32
Type entier signé sur 32 bits.