File kokkos_internal.h
FileList > code_source > templat > include > TempLat > parallel > devices > kokkos > kokkos_internal.h
Go to the source code of this file
#include "TempLat/parallel/devices/kokkos/kokkos.h"
Namespaces
| Type | Name |
|---|---|
| namespace | TempLat |
| namespace | device_kokkos |
Classes
| Type | Name |
|---|---|
| struct | GetKokkosNDStarType <NDim, typename T> |
| struct | GetKokkosNDStarType< 1, T > <typename T> |
| struct | KokkosNDLambdaWrapper <NDim, typename FUN> This is a functor which wraps a lambda. Basically, this is necessary when one wants to call a variadic lambda on an NVIDIA GPU. CUDA seems to be unable to expand the variadic arguments - in contrast, a direct approach does indeed work for openMP or serial compilation. To get around this limitation, the KokkosNDLambdaWrapper packs the indices into an array. If you wonder, whether there's a difference when using tie and tuples:https://godbolt.org/z/M3bG39rsM No. Therefore, we spare the ourselves the hassle and simply use an array. |
| struct | KokkosNDLambdaWrapperInnerLoop <NDim, typename FUN> The CPU dispatch: a functor which wraps a lambda and walks the contiguous last dimension itself. |
| struct | KokkosNDLambdaWrapperReduction <NDim, typename FUN> This is a functor which wraps a lambda for reduction. Basically, this is necessary when one wants to call a variadic lambda on an NVIDIA GPU. CUDA seems to be unable to expand the variadic arguments - in contrast, a direct approach does indeed work for openMP or serial compilation. To get around this limitation, the KokkosNDLambdaWrapperReduction packs the indices into an array. If you wonder, whether there's a difference when using tie and tuples:https://godbolt.org/z/M3bG39rsM No. Therefore, we spare the ourselves the hassle and simply use an array. |
The documentation for this class was generated from the following file cosmolatticeweb/tmp/code_source/templat/include/TempLat/parallel/devices/kokkos/kokkos_internal.h