Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence du fichier RunCommandEnumerate.h

Types et macros pour gérer les énumérations des entités sur les accélérateurs. Plus de détails...

#include "arcane/accelerator/RunCommand.h"
#include "arcane/accelerator/RunQueueInternal.h"
#include "arcane/utils/ArcaneCxx20.h"
#include "arcane/core/ItemTypes.h"
#include "arcane/core/ItemGroup.h"
#include "arcane/core/Concurrency.h"
#include <concepts>
+ Graphe des dépendances par inclusion de RunCommandEnumerate.h:
+ Ce graphe montre quels fichiers incluent directement ou indirectement ce fichier :

Aller au code source de ce fichier.

Classes

class  Arcane::IteratorWithIndexBase
 
class  Arcane::IteratorWithIndex< T >
 Classe de base pour un itérateur permettant de conserver l'index de l'itération. Plus de détails...
 
class  Arcane::impl::IterBuilderWithIndex< T >
 
class  Arcane::impl::IterBuilderNoIndex< T >
 
class  Arcane::Accelerator::impl::RunCommandItemEnumeratorSubTraitsT< T >
 Template pour connaitre le type d'entité associé à T. Plus de détails...
 
class  Arcane::Accelerator::impl::RunCommandItemEnumeratorSubTraitsT< ItemLocalIdT< T > >
 Spécialisation pour ItemLocalIdT. Plus de détails...
 
class  Arcane::Accelerator::impl::RunCommandItemEnumeratorSubTraitsT< IteratorWithIndex< T > >
 Spécialisation pour IteratorWithIndex<T> Plus de détails...
 
class  Arcane::Accelerator::impl::RunCommandItemContainer< ItemType >
 Conteneur pour RunCommandEnumerate. Plus de détails...
 
class  Arcane::Accelerator::impl::RunCommandItemEnumeratorTraitsT< IteratorValueType_ >
 Caractéristiques d'un énumérateur d'une commande sur les entités. Plus de détails...
 
class  Arcane::Accelerator::impl::ItemRunCommandArgs< TraitsType, ReducerArgs >
 
class  Arcane::Accelerator::ItemRunCommand< TraitsType, ReducerArgs >
 

Espaces de nommage

namespace  Arcane
 -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
 
namespace  Arcane::Accelerator
 Espace de nom pour l'utilisation des accélérateurs.
 

Concepts

concept  Arcane::Accelerator::impl::RunCommandEnumerateIteratorConcept
 Concept pour contraintre les valeurs dans RUNCOMMAND_ENUMERATE.
 

Macros

#define RUNCOMMAND_ENUMERATE(ItemTypeName, iter_name, item_group, ...)
 Macro pour itérer sur accélérateur sur un groupe d'entités.
 
#define RUNCOMMAND_ENUMERATE_EX(ItemTypeName, iter_name, item_group, ...)    RUNCOMMAND_ENUMERATE (ItemTypeName, iter_name, item_group, __VA_ARGS__)
 

Fonctions

template<typename TraitsType , typename ContainerType , typename Lambda , typename... ReducerArgs>
void Arcane::Accelerator::impl::_doItemsLambda (Int32 base_index, ContainerType sub_items, const Lambda &func, ReducerArgs... reducer_args)
 
template<typename TraitsType , typename Lambda , typename... ReducerArgs>
void Arcane::Accelerator::impl::_applyItems (RunCommand &command, typename TraitsType::ContainerType items, const Lambda &func, const ReducerArgs &... reducer_args)
 Applique l'enumération func sur la liste d'entité items.
 
template<typename TraitsType , typename Lambda >
void Arcane::Accelerator::run (RunCommand &command, const TraitsType &traits, const Lambda &func)
 
template<typename ItemType >
auto Arcane::Accelerator::operator<< (RunCommand &command, const impl::RunCommandItemEnumeratorTraitsT< ItemType > &traits)
 
template<typename ItemType >
auto Arcane::Accelerator::operator<< (RunCommand &command, const ItemVectorViewT< ItemType > &items)
 
template<typename ItemType >
auto Arcane::Accelerator::operator<< (RunCommand &command, const ItemGroupT< ItemType > &items)
 
template<typename TraitsType , typename Lambda >
void Arcane::Accelerator::operator<< (ItemRunCommand< TraitsType > &nr, const Lambda &f)
 
template<typename TraitsType , typename... ReducerArgs>
auto Arcane::Accelerator::operator<< (RunCommand &command, const impl::ItemRunCommandArgs< TraitsType, ReducerArgs... > &args)
 
template<typename TraitsType , typename Lambda , typename... ReducerArgs>
void Arcane::Accelerator::operator<< (ItemRunCommand< TraitsType, ReducerArgs... > &&nr, const Lambda &f)
 
template<typename ItemTypeName , typename ItemContainerType , typename... ReducerArgs>
auto Arcane::Accelerator::impl::makeExtendedItemEnumeratorLoop (const ItemContainerType &container_type, const ReducerArgs &... reducer_args)
 

Description détaillée

Types et macros pour gérer les énumérations des entités sur les accélérateurs.

Définition dans le fichier RunCommandEnumerate.h.

Documentation des macros

◆ RUNCOMMAND_ENUMERATE

#define RUNCOMMAND_ENUMERATE (   ItemTypeName,
  iter_name,
  item_group,
  ... 
)
Valeur :
A_FUNCINFO << ::Arcane::Accelerator::impl::makeExtendedItemEnumeratorLoop<ItemTypeName>(item_group __VA_OPT__(, __VA_ARGS__)) \
<< [=] ARCCORE_HOST_DEVICE(::Arcane::Accelerator::impl::RunCommandItemEnumeratorTraitsT<ItemTypeName>::ValueType iter_name \
__VA_OPT__(ARCANE_RUNCOMMAND_REDUCER_FOR_EACH(__VA_ARGS__)))

Macro pour itérer sur accélérateur sur un groupe d'entités.

Conceptuellement, cela est équivalent à la boucle suivante:

for( ItemTypeName iter_name : item_group ){
...
}

ItemTypeName doit être un type de numéro local (CellLocalId, NodeLocalId). L'utilisation du nom du type de l'entité (Cell, Node, ...) est possible mais est obsolète et il est équivalent à utiliser le type du numéro local (par exemple il faut remplacer Cell par CellLocalId). iter_name est le nom de la variable contenant la valeur courante de l'itérateur. item_group est le nom du ItemGroup ou ItemVectorView associé Les arguments supplémentaires servent à spécifier les réductions éventuelles

Définition à la ligne 462 du fichier RunCommandEnumerate.h.

◆ RUNCOMMAND_ENUMERATE_EX

#define RUNCOMMAND_ENUMERATE_EX (   ItemTypeName,
  iter_name,
  item_group,
  ... 
)     RUNCOMMAND_ENUMERATE (ItemTypeName, iter_name, item_group, __VA_ARGS__)
Obsolète:
Utiliser RUNCOMMAN_ENUMERATE à la place.

Définition à la ligne 470 du fichier RunCommandEnumerate.h.

Documentation des fonctions

◆ _applyItems()

template<typename TraitsType , typename Lambda , typename... ReducerArgs>
void Arcane::Accelerator::impl::_applyItems ( RunCommand command,
typename TraitsType::ContainerType  items,
const Lambda func,
const ReducerArgs &...  reducer_args 
)

◆ _doItemsLambda()

template<typename TraitsType , typename ContainerType , typename Lambda , typename... ReducerArgs>
void Arcane::Accelerator::impl::_doItemsLambda ( Int32  base_index,
ContainerType  sub_items,
const Lambda func,
ReducerArgs...  reducer_args 
)

Définition à la ligne 242 du fichier RunCommandEnumerate.h.

◆ makeExtendedItemEnumeratorLoop()

template<typename ItemTypeName , typename ItemContainerType , typename... ReducerArgs>
auto Arcane::Accelerator::impl::makeExtendedItemEnumeratorLoop ( const ItemContainerType container_type,
const ReducerArgs &...  reducer_args 
)

Définition à la ligne 429 du fichier RunCommandEnumerate.h.