1#ifndef __MATH_CDTP_KERNEL_H__
2#define __MATH_CDTP_KERNEL_H__
46template<
typename T, const
int LX, const
int CHUNKS >
76 while(l < (
LX *
LX *
LX)) {
87 for (
int n = 0; n <
nchunks; n++) {
91 const int k =
jk /
LX;
97 for (
int l = 0; l <
LX; l++) {
108template<
typename T, const
int LX, const
int EB >
128 static_assert(
sizeof(
shdxt) +
134 "kstep block exceeds the LDS budget");
172 for (
int k = 0;
k <
LX; ++
k) {
178 for (
int l = 0; l <
LX; l++) {
186 for (
int l = 0; l <
LX; l++) {
217#if defined(__gfx90a__) || defined(__gfx942__)
219template<
typename T, const
int LX, const
int NWF >
240 "wavefronts per block must split evenly over the elements");
254 "mfma block exceeds the shared memory budget");
258 const int tid = wf * 64 +
lane;
261 const int eb = wf /
WPE;
285 const int gp = p +
ele;
286 const T wx =
x[
gp] *
w3[p];
297 mfma_contract_sel<T, LX, 0, false, true, WPE>::run(
shout +
sh,
shdxt,
300 mfma_contract_sel<T, LX, 1, false, true, WPE>::run(
shout +
sh,
shdyt,
303 mfma_contract_sel<T, LX, 2, false, true, WPE>::run(
shout +
sh,
shdzt,
324template<
typename T, const
int LX, const
int NWF >
327 const T *,
const T *,
const T *,
const T *,
331#if defined(__gfx90a__) || defined(__gfx942__)
334#define NEKO_CDTP_MFMA_DISPATCH(TYPE, LXV) \
335 template< const int NWF > \
336 struct cdtp_mfma_dispatch< TYPE, LXV, NWF > { \
337 __device__ static void run(TYPE * dtx, \
347 cdtp_mfma_elem< TYPE, LXV, NWF >(dtx, x, dr, ds, dt, dxt, dyt, dzt, \
379template<
typename T, const
int LX, const
int NWF >
392 cdtp_mfma_dispatch< T, LX, NWF >::run(
dtx,
x,
dr,
ds,
dt,
dxt,
dyt,
dzt,
__global__ void ale_add_kinematics_kernel(const int n, T *__restrict__ wx, T *__restrict__ wy, T *__restrict__ wz, const T *__restrict__ x_ref, const T *__restrict__ y_ref, const T *__restrict__ z_ref, const T *__restrict__ phi, const T *__restrict__ x, const T *__restrict__ y, const T *__restrict__ z, const kinematics_params_t kin_params)
__global__ void const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ dyt
__global__ void const T *__restrict__ const T *__restrict__ const T *__restrict__ ds
__shared__ T shdzt[LX *LX]
__global__ void const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ dzt
__global__ void const T *__restrict__ x
__global__ void const T *__restrict__ const T *__restrict__ dr
__shared__ T shtar[EB *LX *LX]
__global__ void const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const int nelv
__global__ void const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ dt
__shared__ T shtas[EB *LX *LX]
__global__ void cdtp_kernel_1d(T *__restrict__ dtx, const T *__restrict__ x, const T *__restrict__ dr, const T *__restrict__ ds, const T *__restrict__ dt, const T *__restrict__ dxt, const T *__restrict__ dyt, const T *__restrict__ dzt, const T *__restrict__ w3)
__shared__ T shdyt[LX *LX]
__global__ void const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ dxt
__global__ void const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ const T *__restrict__ w3
#define NEKO_EB_BOUNDS(NT)
__global__ void __launch_bounds__((LX *LX *EB), 3) cdtp_kernel_kstep(T *__restrict__ dtx
#define NEKO_MFMA_EB_N(NWF, LX)
static __device__ void run(T *, const T *, const T *, const T *, const T *, const T *, const T *, const T *, const T *, const int)