Classe pour gérer la conservation d'une lambda dans un itérateur. Plus de détails...
#include <arcane/accelerator/CommonUtils.h>
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) |
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:
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.
|
inline |
Définition à la ligne 76 du fichier CommonUtils.h.
|
inline |
Convertie la classe en la lambda.
Définition à la ligne 81 du fichier CommonUtils.h.
|
private |
Définition à la ligne 85 du fichier CommonUtils.h.
|
staticconstexprprivate |
Définition à la ligne 71 du fichier CommonUtils.h.