1#ifndef __MATH_MATH_KERNEL_H__
2#define __MATH_MATH_KERNEL_H__
50 for (
int i = idx;
i < n;
i +=
str) {
94 const int ly,
const int lz) {
95 const int idx2 = idx - 1;
96 index[3] =
idx2 / (lx * ly * lz);
97 index[2] = (
idx2 - (lx * ly * lz) * index[3]) / (lx * ly);
98 index[1] = (
idx2 - (lx * ly * lz) * index[3] - (lx * ly) * index[2]) / lx;
99 index[0] = (
idx2 - (lx * ly * lz) * index[3] - (lx * ly) * index[2]) -
109 const int n1,
const int n2,
const int nf) {
110 return ((
i) + (n1) * (((
j) - 1) + (n2) * (((
k) - 1) + (
nf) * (((l) - 1))))) - 1;
116template<
typename T >
132 for (
int m = idx; m <
n_mask; m +=
str) {
133 const int f = facet[m + 1];
157template<
typename T >
175template<
typename T >
190#if __CUDA_ARCH__ < 600
198#define MASKED_ATOMIC_RED_BLOCK 256
203template<
typename T >
210#if __CUDA_ARCH__ >= 600
233 key =
mask[
i + 1] - 1;
243 if (
heads == 0xffffffff) {
251 const unsigned int next =
heads & ~((2u <<
lane) - 1u);
262 if (head && key >= 0) {
263 const int s = key -
kbase;
275 if (
sum != (
T) 0.0) {
282 assert(0 &&
"masked_atomic_reduction_kernel requires compute capability 6.0 or higher.");
289template<
typename T >
307template<
typename T >
330 const int mask_size) {
335 for (
int i = idx;
i < mask_size;
i +=
str) {
a[
mask[
i]] = c; }
341template<
typename T >
350 for (
int i = idx;
i < n;
i +=
str) {
358template<
typename T >
366 for (
int i = idx;
i < n;
i +=
str) {
374template<
typename T >
383 for (
int i = idx;
i < n;
i +=
str) {
391template<
typename T >
399 for (
int i = idx;
i < n;
i +=
str) {
407template<
typename T >
416 for (
int i = idx;
i < n;
i +=
str) {
424template<
typename T >
434 for (
int i = idx;
i < n;
i +=
str) {
442template<
typename T >
449 for (
int i = idx;
i < n;
i +=
str) {
457template<
typename T >
466 for (
int i = idx;
i < n;
i +=
str) {
474template<
typename T >
482 for (
int i = idx;
i < n;
i +=
str) {
490template<
typename T >
498 for (
int i = idx;
i < n;
i +=
str) {
506template<
typename T >
515 for (
int i = idx;
i < n;
i +=
str) {
523template<
typename T >
533 for (
int i = idx;
i < n;
i +=
str) {
534 a[
i] = b[
i] + c[
i] + d[
i];
541template<
typename T >
550 for (
int i = idx;
i < n;
i +=
str) {
558template<
typename T >
569 for (
int i = idx;
i < n;
i+=
str) {
572 tmp += p[
j][
i]*alpha[
j];
581template<
typename T >
590 for (
int i = idx;
i < n;
i +=
str) {
598template<
typename T >
607 for (
int i = idx;
i < n;
i +=
str) {
615template<
typename T >
626 for (
int i = idx;
i < n;
i +=
str) {
634template<
typename T >
647 for (
int i = idx;
i < n;
i +=
str) {
655template<
typename T >
670 for (
int i = idx;
i < n;
i +=
str) {
678template<
typename T >
686 for (
int i = idx;
i < n;
i +=
str) {
694template<
typename T >
702 for (
int i = idx;
i < n;
i +=
str) {
710template<
typename T >
719 for (
int i = idx;
i < n;
i +=
str) {
727template<
typename T >
735 for (
int i = idx;
i < n;
i +=
str) {
743template<
typename T >
752 for (
int i = idx;
i < n;
i +=
str) {
760template<
typename T >
769 for (
int i = idx;
i < n;
i +=
str) {
770 a[
i] =
a[
i] - b[
i] * c[
i];
777template<
typename T >
785 for (
int i = idx;
i < n;
i +=
str) {
793template<
typename T >
802 for (
int i = idx;
i < n;
i +=
str) {
810template<
typename T >
819 for (
int i = idx;
i < n;
i +=
str) {
820 a[
i] =
a[
i] + b[
i] * c[
i];
828template<
typename T >
838 for (
int i = idx;
i < n;
i +=
str) {
839 a[
i] =
a[
i] + b[
i] * c[
i] * d[
i];
847template<
typename T >
857 for (
int i = idx;
i < n;
i +=
str) {
858 a[
i] =
a[
i] + s * b[
i] * c[
i];
866template<
typename T >
879 for (
int i = idx;
i < n;
i +=
str) {
888template<
typename T >
903 for (
int i = idx;
i < n;
i +=
str) {
906 u3[
i] = v1[
i]*w2[
i] - v2[
i]*w1[
i];
954template<
typename T >
960 for (
int i = idx;
i<n ;
i +=
str)
985template<
typename T >
991 for (
int i = idx;
i<n ;
i +=
str)
1016template<
typename T >
1022 for (
int i = idx;
i<n ;
i +=
str)
1048template<
typename T_acc >
1059 for (
int i=idx ;
i<n ;
i+=step)
1083template<
typename T >
1098 for (
int i = idx;
i < n;
i+=
str) {
1118template<
typename T,
typename T_acc >
1133 for (
int i = idx;
i < n;
i+=
str) {
1153template<
typename T,
typename T_acc >
1168 for (
int i = idx;
i < n;
i+=
str) {
1194template<
typename T,
typename T_acc >
1208 for (
int i = idx;
i < n;
i+=
str) {
1229template<
typename T,
typename T_acc >
1243 for (
int i = idx;
i < n;
i+=
str) {
1264template<
typename T,
typename T_acc >
1277 for (
int i = idx;
i<n ;
i +=
str)
1299template<
typename T >
1313 for (
int i = idx;
i<n ;
i +=
str)
1336template<
typename T >
1349 for (
int i = idx;
i<n ;
i +=
str)
1371template<
typename T >
1385 for (
int i = idx;
i<n ;
i +=
str)
1407template<
typename T >
1414 for (
int i = idx;
i < n;
i +=
str) {
1426template <
typename T>
1440template <
typename T>
1455template <
typename T>
1468template <
typename T>
1475 for (
int i = idx;
i < n;
i +=
str)
a[
i] =
max(b[
i], c);
1482template <
typename T>
1496template <
typename T>
1511template <
typename T>
1524template <
typename T>
1531 for (
int i = idx;
i < n;
i +=
str)
a[
i] =
min(b[
i], c);
__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__ x
__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
__global__ void addcol4_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const T *__restrict__ d, const int n)
__global__ void cwrap_kernel(T *__restrict__ a, const T min_val, const T max_val, const int n)
__global__ void pwmin_vec3_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const int n)
__global__ void reduce_kernel(T *bufred, const int n)
__global__ void cdiv2_kernel(T *__restrict__ a, T *__restrict__ b, const T c, const int n)
__global__ void invcol2_kernel(T *__restrict__ a, const T *__restrict__ b, const int n)
__global__ void add2_kernel(T *__restrict__ a, const T *__restrict__ b, const int n)
__global__ void add4s3_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const T *__restrict__ d, const T c1, const T c2, const T c3, const int n)
__inline__ __device__ T reduce_warp(T val)
__global__ void masked_scatter_copy_aligned_kernel(T *__restrict__ a, T *__restrict__ b, int *__restrict__ mask, const int n, const int n_mask)
__global__ void masked_atomic_reduction_kernel(T *__restrict__ a, T *__restrict__ b, int *__restrict__ mask, const int n, const int m)
__global__ void pwmax_vec3_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const int n)
__global__ void glsc2_kernel(const T *a, const T *b, T_acc *buf_h, const int n)
__global__ void addcol3s2_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const T s, const int n)
__global__ void cfill_mask_kernel(T *__restrict__ a, const T c, const int size, int *__restrict__ mask, const int mask_size)
__global__ void cdiv_kernel(T *__restrict__ a, const T c, const int n)
__global__ void masked_copy_kernel_aligned(T *__restrict__ a, T *__restrict__ b, int *__restrict__ mask, const int n, const int n_mask)
__global__ void face_masked_gather_copy_kernel(T *__restrict__ a, const T *__restrict__ b, const int *__restrict__ mask, const int *__restrict__ facet, const int n1, const int n2, const int lx, const int ly, const int lz, const int n_mask)
__global__ void masked_gather_copy_aligned_kernel(T *__restrict__ a, T *__restrict__ b, int *__restrict__ mask, const int n, const int n_mask)
__global__ void pwmax_sca2_kernel(T *__restrict__ a, const T c, const int n)
__device__ __forceinline__ void face_gather_nonlinear_index(int *index, const int idx, const int lx, const int ly, const int lz)
__global__ void reduce_max_kernel(T *bufred, const T ninf, const int n)
__global__ void pwmin_vec2_kernel(T *__restrict__ a, const T *__restrict__ b, const int n)
__global__ void add3s2_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const T c1, const T c2, const int n)
__inline__ __device__ T reduce_max_warp(T val)
__global__ void glsum_kernel(const T *a, T_acc *buf_h, const int n)
__global__ void add2s1_kernel(T *__restrict__ a, const T *__restrict__ b, const T c1, const int n)
__device__ __forceinline__ int face_gather_idx(const int i, const int j, const int k, const int l, const int n1, const int n2, const int nf)
__global__ void add5s4_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const T *__restrict__ d, const T *__restrict__ e, const T c1, const T c2, const T c3, const T c4, const int n)
#define MASKED_ATOMIC_RED_BLOCK
__global__ void masked_gather_copy_kernel(T *__restrict__ a, T *__restrict__ b, int *__restrict__ mask, const int n, const int n_mask)
__global__ void add2s2_many_kernel(T *__restrict__ x, const T **p, const T *alpha, const int p_cur, const int n)
__global__ void glsc3_many_kernel(const T *a, const T **b, const T *c, T_acc *buf_h, const int j, const int n)
__global__ void pwmax_vec2_kernel(T *__restrict__ a, const T *__restrict__ b, const int n)
__global__ void cmult_kernel(T *__restrict__ a, const T c, const int n)
__global__ void addcol3_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const int n)
__global__ void pwmin_sca3_kernel(T *__restrict__ a, const T *__restrict b, const T c, const int n)
__global__ void pwmax_sca3_kernel(T *__restrict__ a, const T *__restrict b, const T c, const int n)
__global__ void power_kernel(T *__restrict__ ap, const T *__restrict__ a, const T p, const int n)
__global__ void col2_kernel(T *__restrict__ a, const T *__restrict__ b, const int n)
__global__ void masked_copy_kernel_0(T *__restrict__ a, T *__restrict__ b, int *__restrict__ mask, const int n, const int n_mask)
__global__ void sqrt_inplace_kernel(T *__restrict__ a, const int n)
__global__ void col3_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const int n)
__global__ void sub2_kernel(T *__restrict__ a, const T *__restrict__ b, const int n)
__global__ void glmin_kernel(const T *a, const T pinf, T *buf_h, const int n)
__global__ void cmult2_kernel(T *__restrict__ a, T *__restrict__ b, const T c, const int n)
__global__ void pwmin_sca2_kernel(T *__restrict__ a, const T c, const int n)
__global__ void sub3_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const int n)
__global__ void glsubnorm2_kernel(const T *a, const T *b, T_acc *buf_h, const int n)
__global__ void glsc3_reduce_kernel(T_acc *bufred, const int n, const int j)
__global__ void add2s2_kernel(T *__restrict__ a, const T *__restrict__ b, const T c1, const int n)
__global__ void vdot3_kernel(T *__restrict__ dot, const T *__restrict__ u1, const T *__restrict__ u2, const T *__restrict__ u3, const T *__restrict__ v1, const T *__restrict__ v2, const T *__restrict__ v3, const int n)
__global__ void invcol1_kernel(T *__restrict__ a, const int n)
__global__ void add3_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const int n)
__global__ void glmax_kernel(const T *a, const T ninf, T *buf_h, const int n)
__global__ void vlsc3_kernel(const T *a, const T *b, const T *c, T *buf_h, const int n)
__global__ void add4_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const T *__restrict__ d, const int n)
__global__ void cfill_kernel(T *__restrict__ a, const T c, const int n)
__global__ void masked_scatter_copy_kernel(T *__restrict__ a, T *__restrict__ b, int *__restrict__ mask, const int n, const int n_mask)
__global__ void glsc3_kernel(const T *a, const T *b, const T *c, T_acc *buf_h, const int n)
__global__ void reduce_min_kernel(T *bufred, const T pinf, const int n)
__global__ void vcross_kernel(T *__restrict__ u1, T *__restrict__ u2, T *__restrict__ u3, const T *__restrict__ v1, const T *__restrict__ v2, const T *__restrict__ v3, const T *__restrict__ w1, const T *__restrict__ w2, const T *__restrict__ w3, const int n)
__global__ void addsqr2s2_kernel(T *__restrict__ a, const T *__restrict__ b, const T c1, const int n)
__global__ void cadd2_kernel(T *__restrict__ a, T *__restrict__ b, const T c, const int n)
__global__ void absval_kernel(T *__restrict__ a, const int n)
__global__ void invcol3_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const int n)
__global__ void subcol3_kernel(T *__restrict__ a, const T *__restrict__ b, const T *__restrict__ c, const int n)
__global__ void cadd_kernel(T *__restrict__ a, const T c, const int n)
__global__ void glamax_kernel(const T *a, T *buf_h, const int n)
__inline__ __device__ T reduce_min_warp(T val)
Object for handling masks in Neko.