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>
Aller au code source de ce fichier.
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) |
Types et macros pour gérer les énumérations des entités sur les accélérateurs.
Définition dans le fichier RunCommandEnumerate.h.
#define RUNCOMMAND_ENUMERATE | ( | ItemTypeName, | |
iter_name, | |||
item_group, | |||
... | |||
) |
Macro pour itérer sur accélérateur sur un groupe d'entités.
Conceptuellement, cela est équivalent à la boucle suivante:
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.
#define RUNCOMMAND_ENUMERATE_EX | ( | ItemTypeName, | |
iter_name, | |||
item_group, | |||
... | |||
) | RUNCOMMAND_ENUMERATE (ItemTypeName, iter_name, item_group, __VA_ARGS__) |
Définition à la ligne 470 du fichier RunCommandEnumerate.h.
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::Accelerator::impl::_applyItems(), ARCANE_FATAL, Arcane::arcaneParallelForeach(), Arcane::Accelerator::impl::RunCommandLaunchInfo::beginExecute(), Arcane::Accelerator::impl::RunCommandLaunchInfo::computeLoopRunInfo(), 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.
Référencé par Arcane::Accelerator::impl::_applyItems().
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.
auto Arcane::Accelerator::impl::makeExtendedItemEnumeratorLoop | ( | const ItemContainerType & | container_type, |
const ReducerArgs &... | reducer_args | ||
) |
Définition à la ligne 429 du fichier RunCommandEnumerate.h.