Arcane  v3.15.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence du modèle de la classe Arcane::Accelerator::impl::LambdaStorage< LambdaType >

Classe pour gérer la conservation d'une lambda dans un itérateur. Plus de détails...

#include <arcane/accelerator/CommonUtils.h>

+ Graphe de collaboration de Arcane::Accelerator::impl::LambdaStorage< LambdaType >:

Fonctions membres publiques

ARCCORE_HOST_DEVICE LambdaStorage (const LambdaType &v)
 
ARCCORE_HOST_DEVICE operator const LambdaType & () const
 Convertie la classe en la lambda.
 

Attributs privés

char bytes [SizeofLambda]
 

Attributs privés statiques

static constexpr size_t SizeofLambda = sizeof(LambdaType)
 

Description détaillée

template<typename LambdaType>
class Arcane::Accelerator::impl::LambdaStorage< LambdaType >

Classe pour gérer la conservation d'une lambda dans un itérateur.

Actuellement (C++20), on ne peut pas conserver une lambda dans un itérateur car il manque deux choses: un constructeur par défaut et un opérateur de recopie. Cette classe permet de supporter cela à condition que les deux poins suivants soient respectés:

  • instances capturées par la lambda sont trivialement copiables et donc la lambda l'est.
  • les instances utilisant le constructeur par défaut ne sont pas utilisées (ce qui est le cas des itérateurs car ils ne sont pas valides s'ils sont construits avec le constructeur par défaut.

A noter que l'alignement de cette classe doit être au moins celui de la lambda associée.

Cette classe n'est indispensable que pour SYCL avec oneAPI car il est nécessite que les itérateurs aient le concept std::random_access_iterator. Cependant elle devrait aussi fonctionner avec CUDA et ROCM. A tester l'effet sur les performances.

Définition à la ligne 69 du fichier CommonUtils.h.

Documentation des constructeurs et destructeur

◆ LambdaStorage()

template<typename LambdaType >
ARCCORE_HOST_DEVICE Arcane::Accelerator::impl::LambdaStorage< LambdaType >::LambdaStorage ( const LambdaType v)
inline

Définition à la ligne 76 du fichier CommonUtils.h.

Documentation des fonctions membres

◆ operator const LambdaType &()

template<typename LambdaType >
ARCCORE_HOST_DEVICE Arcane::Accelerator::impl::LambdaStorage< LambdaType >::operator const LambdaType & ( ) const
inline

Convertie la classe en la lambda.

Définition à la ligne 81 du fichier CommonUtils.h.

Documentation des données membres

◆ bytes

template<typename LambdaType >
char Arcane::Accelerator::impl::LambdaStorage< LambdaType >::bytes[SizeofLambda]
private

Définition à la ligne 85 du fichier CommonUtils.h.

◆ SizeofLambda

template<typename LambdaType >
constexpr size_t Arcane::Accelerator::impl::LambdaStorage< LambdaType >::SizeofLambda = sizeof(LambdaType)
staticconstexprprivate

Définition à la ligne 71 du fichier CommonUtils.h.


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