|
Mallard 0.8.0
Unstructured, GPU accelerated, high-order finite volume CFD solver
Mallard website |
All threads and vector lanes of a team (TeamPolicy(cells, T, V), T * V lanes) share the work of a cell. Scalar code runs on every lane with the same values; sums accumulate SUM_SHARES strided shares in index order and then the shares in order, so a team's results do not depend on its width. Needs scratch_bytes(T * V) of level-0 team scratch. More...
#include <lanes.h>
Public Member Functions | |
| KOKKOS_INLINE_FUNCTION | TeamLanes (const Member &m, const uint32_t L) |
| template<typename F > | |
| KOKKOS_INLINE_FUNCTION void | for_each (const uint32_t n, const F &f) const |
| KOKKOS_INLINE_FUNCTION void | sync () const |
| template<typename F > | |
| KOKKOS_INLINE_FUNCTION void | single (const F &f) const |
| template<typename F > | |
| KOKKOS_INLINE_FUNCTION double | sum (const uint32_t n, const F &f) const |
| template<typename F > | |
| KOKKOS_INLINE_FUNCTION double | argmax_abs (const uint32_t first, const uint32_t n, const F &f, uint32_t &index) const |
Static Public Member Functions | |
| static KOKKOS_INLINE_FUNCTION constexpr uint32_t | shares (const uint32_t L) |
| static constexpr size_t | scratch_bytes (const uint32_t L) |
Public Attributes | |
| const Member & | member |
| uint32_t | lanes |
| double * | partial |
| uint32_t * | where |
Static Public Attributes | |
| static constexpr bool | column_major = true |
| static constexpr bool | parallel = true |
| static constexpr uint32_t | SUM_SHARES = 32 |
All threads and vector lanes of a team (TeamPolicy(cells, T, V), T * V lanes) share the work of a cell. Scalar code runs on every lane with the same values; sums accumulate SUM_SHARES strided shares in index order and then the shares in order, so a team's results do not depend on its width. Needs scratch_bytes(T * V) of level-0 team scratch.
|
inline |
|
inline |
|
inline |
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
|
inline |
|
inline |
|
inline |
|
staticconstexpr |
| uint32_t chemistry::TeamLanes< Member >::lanes |
| const Member& chemistry::TeamLanes< Member >::member |
|
staticconstexpr |
| double* chemistry::TeamLanes< Member >::partial |
|
staticconstexpr |
| uint32_t* chemistry::TeamLanes< Member >::where |