Arcane  v3.15.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::Accelerator::impl::MultiThreadAlgo

Algorithmes avancée en mode multi-thread. Plus de détails...

#include <arcane/accelerator/MultiThreadAlgo.h>

+ Graphe de collaboration de Arcane::Accelerator::impl::MultiThreadAlgo:

Fonctions membres publiques

template<bool IsExclusive, typename DataType , typename Operator , typename InputIterator , typename OutputIterator >
void doScan (ForLoopRunInfo run_info, Int32 nb_value, InputIterator input, OutputIterator output, DataType init_value, Operator op)
 Algorithme de scan multi-thread.
 
template<bool InPlace, typename InputIterator , typename OutputIterator , typename SelectLambda >
Int32 doFilter (ForLoopRunInfo run_info, Int32 nb_value, InputIterator input, OutputIterator output, SelectLambda select_lambda)
 

Fonctions membres privées statiques

template<typename SizeType >
static void _subInterval (SizeType size, SizeType interval_index, SizeType nb_interval, SizeType *out_begin_index, SizeType *out_interval_size)
 

Description détaillée

Algorithmes avancée en mode multi-thread.

Pour l'instant seule l'opération de Scan est implémentée.

Définition à la ligne 36 du fichier MultiThreadAlgo.h.

Documentation des fonctions membres

◆ _subInterval()

template<typename SizeType >
static void Arcane::Accelerator::impl::MultiThreadAlgo::_subInterval ( SizeType  size,
SizeType  interval_index,
SizeType  nb_interval,
SizeType *  out_begin_index,
SizeType *  out_interval_size 
)
inlinestaticprivate

Définition à la ligne 231 du fichier MultiThreadAlgo.h.

◆ doFilter()

Int32 Arcane::Accelerator::impl::MultiThreadAlgo::doFilter ( ForLoopRunInfo  run_info,
Int32  nb_value,
InputIterator  input,
OutputIterator  output,
SelectLambda  select_lambda 
)
inline

Définition à la ligne 134 du fichier MultiThreadAlgo.h.

◆ doScan()

template<bool IsExclusive, typename DataType , typename Operator , typename InputIterator , typename OutputIterator >
void Arcane::Accelerator::impl::MultiThreadAlgo::doScan ( ForLoopRunInfo  run_info,
Int32  nb_value,
InputIterator  input,
OutputIterator  output,
DataType  init_value,
Operator  op 
)
inline

Algorithme de scan multi-thread.

Note
Cette classe est interne à Arcane. La version de l'API publique est accessible via la classe GenericScanner.

Cet algorithme basique utilise deux passes pour le calcul. L'interval d'itération est divisé en N blocs. On prend N = 2*nb_thread.

  • la première passe calcule en parallèle le résultat du scan pour tous les éléments d'un bloc.
  • la deuxième passe calcule la valeurs finale.

Le calcul donne toujours la même valeur pour un nombre de bloc donné.

TODO: Utilise du padding pour conserver les valeurs partielles par bloc. TODO: Faire des versions spécialisées si DataType est un type de base tel que 'Int32', 'Int64', 'float' ou 'double'.

Définition à la ligne 60 du fichier MultiThreadAlgo.h.

Références Arcane::arcaneParallelFor().


La documentation de cette classe a été générée à partir du fichier suivant :