Arcane  v3.15.0.0
Documentation utilisateur
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

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

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 >
__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 >
__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.


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