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 | |
__host__ __device__ | LambdaStorage (const LambdaType &v) |
__host__ __device__ | operator const LambdaType & () const |
Convertie la classe en la lambda. | |
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.