Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
Loading...
Searching...
No Matches
math_ext_kernel.h
Go to the documentation of this file.
1
37#ifndef __NEKO_HIP_MATH_EXT_KERNELS__
38#define __NEKO_HIP_MATH_EXT_KERNELS__
39
43template <typename T>
45 T* __restrict__ a, const T c, const int size, int* __restrict__ mask,
46 const int mask_size) {
47
48 const int idx = blockIdx.x * blockDim.x + threadIdx.x;
49 const int str = blockDim.x * gridDim.x;
50
51 for (int i = idx; i < mask_size; i += str) { a[mask[i]] = a[mask[i]] + c; }
52}
53
57template <typename T>
59 T* __restrict__ a, const int size, int* __restrict__ mask,
60 const int mask_size) {
61
62 const int idx = blockIdx.x * blockDim.x + threadIdx.x;
63 const int str = blockDim.x * gridDim.x;
64
65 for (int i = idx; i < mask_size; i += str) {
66 a[mask[i]] = 1.0 / a[mask[i]];
67 }
68}
69
73template <typename T>
75 T* __restrict__ a, T* __restrict__ b, const int size,
76 int* __restrict__ mask, const int mask_size) {
77
78 const int idx = blockIdx.x * blockDim.x + threadIdx.x;
79 const int str = blockDim.x * gridDim.x;
80
81 for (int i = idx; i < mask_size; i += str) {
82 a[mask[i]] = a[mask[i]] * b[mask[i]];
83 }
84}
85
89template <typename T>
91 T* __restrict__ a, T* __restrict__ b, T* __restrict__ c, const int size,
92 int* __restrict__ mask, const int mask_size) {
93
94 const int idx = blockIdx.x * blockDim.x + threadIdx.x;
95 const int str = blockDim.x * gridDim.x;
96
97 for (int i = idx; i < mask_size; i += str) {
98 a[mask[i]] = b[mask[i]] * c[mask[i]];
99 }
100}
101
105template <typename T>
107 T* __restrict__ a, T* __restrict__ b, T* __restrict__ c, const int size,
108 int* __restrict__ mask, const int mask_size) {
109
110 const int idx = blockIdx.x * blockDim.x + threadIdx.x;
111 const int str = blockDim.x * gridDim.x;
112
113 for (int i = idx; i < mask_size; i += str) {
114 a[mask[i]] = b[mask[i]] - c[mask[i]];
115 }
116}
117
118#endif // __NEKO_CUDA_MATH_EXT_KERNELS__
__global__ void Borrvall_Petersson_mapping_apply_kernel(const T f_min, const T f_max, const T q, T *__restrict__ X_out_d, T *__restrict__ X_in_d, const int n)
__global__ void col3_mask_kernel(T *__restrict__ a, T *__restrict__ b, T *__restrict__ c, const int size, int *__restrict__ mask, const int mask_size)
__global__ void cadd_mask_kernel(T *__restrict__ a, const T c, const int size, int *__restrict__ mask, const int mask_size)
__global__ void sub3_mask_kernel(T *__restrict__ a, T *__restrict__ b, T *__restrict__ c, const int size, int *__restrict__ mask, const int mask_size)
__global__ void invcol1_mask_kernel(T *__restrict__ a, const int size, int *__restrict__ mask, const int mask_size)
__global__ void col2_mask_kernel(T *__restrict__ a, T *__restrict__ b, const int size, int *__restrict__ mask, const int mask_size)