Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IParallelSort.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* IParallelSort.h (C) 2000-2024 */
9/* */
10/* Interface d'un algorithme de tri parallèle. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13#ifndef ARCANE_CORE_IPARALLELSORT_H
14#define ARCANE_CORE_IPARALLELSORT_H
15/*---------------------------------------------------------------------------*/
16/*---------------------------------------------------------------------------*/
17
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane::Parallel
24{
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28/*!
29 * \brief Interface d'un algorithme de tri parallèle
30 *
31 * Le type de la clé doit être comparable,et posséder l'opérateur operator<.
32 *
33 * Pour l'instant, cette interface est implémentée pour les types suivants:
34 * Int32, Int64 et Real.
35 *
36 * La méthode sort() procède au tri. Après le tri, il est possible
37 * de récupérer pour chaque clé le rang et l'indice de son origine,
38 * via keyRanks() et keyIndexes(). Les clés triées sont accessible
39 * via keys().
40 */
41template <typename KeyType>
43{
44 public:
45
46 virtual ~IParallelSort() = default;
47
48 public:
49
50 /*!
51 * \brief Tri en parallèle les clés \a keys.
52 *
53 * Cette méthode est collective.
54 * Le tri est global, chaque rang donnant sa liste de clés \a keys.
55 */
57
58 //! Tableau des clés
59 virtual ConstArrayView<KeyType> keys() const = 0;
60
61 //! Tableau des rangs du processeur d'origine contenant la clé
62 virtual Int32ConstArrayView keyRanks() const = 0;
63
64 //! Tableau des indices de la clé dans le processeur d'origine.
65 virtual Int32ConstArrayView keyIndexes() const = 0;
66};
67
68/*---------------------------------------------------------------------------*/
69/*---------------------------------------------------------------------------*/
70
71} // namespace Arcane::Parallel
72
73/*---------------------------------------------------------------------------*/
74/*---------------------------------------------------------------------------*/
75
76#endif
Fichier de configuration d'Arcane.
Interface d'un algorithme de tri parallèle.
virtual ConstArrayView< KeyType > keys() const =0
Tableau des clés.
virtual Int32ConstArrayView keyIndexes() const =0
Tableau des indices de la clé dans le processeur d'origine.
virtual Int32ConstArrayView keyRanks() const =0
Tableau des rangs du processeur d'origine contenant la clé
virtual void sort(ConstArrayView< KeyType > keys)=0
Tri en parallèle les clés keys.
Vue constante d'un tableau de type T.
Implémentation de la concurrence.