Arcane  v3.16.0.0
Documentation développeur
Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Amis Macros Groupes Pages Concepts
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/KernelLauncher.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.
 

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 :
1 A_FUNCINFO << ::Arcane::Accelerator::impl::makeExtendedItemEnumeratorLoop<ItemTypeName>(item_group __VA_OPT__(, __VA_ARGS__)) \
2 << [=] ARCCORE_HOST_DEVICE(::Arcane::Accelerator::impl::RunCommandItemEnumeratorTraitsT<ItemTypeName>::ValueType iter_name \
3 __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:

1for( ItemTypeName iter_name : item_group ){
2 ...
3}

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 461 du fichier RunCommandEnumerate.h.

Référencé par ArcaneTest::CartesianMeshTestUtils::_testDirCellAccelerator().

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 )

Applique l'enumération func sur la liste d'entité items.

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

Références ARCANE_FATAL, Arcane::arcaneParallelForeach(), Arcane::Accelerator::impl::RunCommandLaunchInfo::beginExecute(), Arcane::Accelerator::CUDA, Arcane::Accelerator::impl::RunCommandLaunchInfo::endExecute(), Arcane::Accelerator::HIP, Arcane::Accelerator::impl::RunCommandLaunchInfo::loopRunInfo(), Arcane::Accelerator::Sequential, Arcane::Accelerator::SYCL, et Arcane::Accelerator::Thread.

+ Voici le graphe d'appel pour cette fonction :

◆ _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 428 du fichier RunCommandEnumerate.h.