xref: /petsc/src/sys/objects/device/impls/cupm/kernels.hpp (revision 6d54fb1757adf78b86e78a0501614cf24239f668)
1*6d54fb17SJacob Faibussowitsch #ifndef PETSC_DEVICE_CUPM_KERNELS_HPP
2*6d54fb17SJacob Faibussowitsch #define PETSC_DEVICE_CUPM_KERNELS_HPP
3*6d54fb17SJacob Faibussowitsch 
4*6d54fb17SJacob Faibussowitsch #include <petscdevice_cupm.h>
5*6d54fb17SJacob Faibussowitsch 
6*6d54fb17SJacob Faibussowitsch #if defined(__cplusplus)
7*6d54fb17SJacob Faibussowitsch 
8*6d54fb17SJacob Faibussowitsch namespace Petsc
9*6d54fb17SJacob Faibussowitsch {
10*6d54fb17SJacob Faibussowitsch 
11*6d54fb17SJacob Faibussowitsch namespace device
12*6d54fb17SJacob Faibussowitsch {
13*6d54fb17SJacob Faibussowitsch 
14*6d54fb17SJacob Faibussowitsch namespace cupm
15*6d54fb17SJacob Faibussowitsch {
16*6d54fb17SJacob Faibussowitsch 
17*6d54fb17SJacob Faibussowitsch namespace kernels
18*6d54fb17SJacob Faibussowitsch {
19*6d54fb17SJacob Faibussowitsch 
20*6d54fb17SJacob Faibussowitsch namespace util
21*6d54fb17SJacob Faibussowitsch {
22*6d54fb17SJacob Faibussowitsch 
23*6d54fb17SJacob Faibussowitsch template <typename SizeType, typename T>
24*6d54fb17SJacob Faibussowitsch PETSC_DEVICE_INLINE_DECL static void grid_stride_1D(const SizeType size, T &&func) noexcept
25*6d54fb17SJacob Faibussowitsch {
26*6d54fb17SJacob Faibussowitsch   for (SizeType i = blockIdx.x * blockDim.x + threadIdx.x; i < size; i += blockDim.x * gridDim.x) func(i);
27*6d54fb17SJacob Faibussowitsch   return;
28*6d54fb17SJacob Faibussowitsch }
29*6d54fb17SJacob Faibussowitsch 
30*6d54fb17SJacob Faibussowitsch } // namespace util
31*6d54fb17SJacob Faibussowitsch 
32*6d54fb17SJacob Faibussowitsch } // namespace kernels
33*6d54fb17SJacob Faibussowitsch 
34*6d54fb17SJacob Faibussowitsch } // namespace cupm
35*6d54fb17SJacob Faibussowitsch 
36*6d54fb17SJacob Faibussowitsch } // namespace device
37*6d54fb17SJacob Faibussowitsch 
38*6d54fb17SJacob Faibussowitsch } // namespace Petsc
39*6d54fb17SJacob Faibussowitsch 
40*6d54fb17SJacob Faibussowitsch #endif // __cplusplus
41*6d54fb17SJacob Faibussowitsch 
42*6d54fb17SJacob Faibussowitsch #endif // PETSC_DEVICE_CUPM_KERNELS_HPP
43