Collective Variables Module - Developer Documentation
Loading...
Searching...
No Matches
colvarcomp_coordnums_kernel.h
1#ifndef COLVARCOMP_COORDNUMS_KERNEL_H
2#define COLVARCOMP_COORDNUMS_KERNEL_H
3
4#include "colvarmodule.h"
5#include "colvar_gpu_support.h"
6
7#if defined(COLVARS_CUDA) || defined(COLVARS_HIP)
8
9namespace colvars_gpu {
10
11template <int tileSize>
13 using PairMaskT = std::conditional_t<(tileSize <= 32), uint32_t, uint64_t>;
14 PairMaskT pairMask[tileSize];
15};
16
17int calc_value_coordnum_two_groups(
18 const cvm::real* group1_pos, const cvm::real* group2_pos,
19 unsigned int numAtoms1, unsigned int numAtoms2,
20 int en, int ed,
21 const cvm::rvector inv_r0_vec,
22 const cvm::rvector inv_r0sq_vec,
24 cvm::real* group1_grad, cvm::real* group2_grad,
25 cvm::real pairlist_tol,
26 cvm::real pairlist_tol_l2_max,
27 TilePairMask<32>* d_tlPairList_32,
28 TilePairMask<64>* d_tlPairList_64,
29 unsigned int* d_tbcount,
30 cvm::real* d_coordnum_tmp,
31 cvm::real* h_coordnum_out,
32 const int flags,
33 cudaStream_t stream,
34 colvarmodule* cvmodule);
35
36int calc_value_coordnum_group_to_com(
37 const cvm::real* group_pos,
38 const cvm::rvector* com,
39 unsigned int numAtoms,
40 int en, int ed,
41 const cvm::rvector inv_r0_vec,
42 const cvm::rvector inv_r0sq_vec,
44 cvm::real* group_grad,
45 cvm::real pairlist_tol,
46 cvm::real pairlist_tol_l2_max,
47 bool* d_pairlist,
48 unsigned int* d_tbcount,
49 cvm::rvector* d_com_grad_tmp,
50 cvm::rvector* d_com_grad_out,
51 cvm::real* d_coordnum_tmp,
52 cvm::real* h_coordnum_out,
53 const int flags,
54 cudaStream_t stream,
55 colvarmodule* cvmodule);
56
57int calc_value_coordnum_com_to_com(
58 const cvm::rvector* d_com1,
59 const cvm::rvector* d_com2,
60 int en, int ed,
61 const cvm::rvector inv_r0_vec,
62 const cvm::rvector inv_r0sq_vec,
64 cvm::real pairlist_tol,
65 cvm::real pairlist_tol_l2_max,
66 bool* d_pairlist,
67 cvm::rvector* d_com1_grad_out,
68 cvm::rvector* d_com2_grad_out,
69 cvm::real* h_coordnum_out,
70 const int flags,
71 cudaStream_t stream,
72 colvarmodule* cvmodule);
73
74int calc_value_coordnum_self_group(
75 const cvm::real* group_pos,
76 unsigned int numAtoms,
77 int en, int ed,
78 const cvm::rvector inv_r0_vec,
79 const cvm::rvector inv_r0sq_vec,
81 cvm::real* group_grad,
82 const unsigned int* d_tilesList,
83 const unsigned int* d_tilesListStart,
84 const unsigned int* d_tilesListSizes,
85 cvm::real pairlist_tol,
86 cvm::real pairlist_tol_l2_max,
87 bool* d_pairlist,
88 TilePairMask<32>* d_tlPairListSelf_32,
89 TilePairMask<32>* d_tlPairList_32,
90 TilePairMask<64>* d_tlPairListSelf_64,
91 TilePairMask<64>* d_tlPairList_64,
92 unsigned int* d_tbcount,
93 cvm::real* d_coordnum_tmp,
94 cvm::real* h_coordnum_out,
95 const int flags,
96 cudaStream_t stream,
97 colvarmodule* cvmodule);
98}
99
100#endif // defined(COLVARS_CUDA) || defined(COLVARS_HIP)
101#endif // COLVARCOMP_COORDNUMS_KERNEL_H
vector of real numbers with three components
Definition: colvartypes.h:728
Class to store the system's boundary conditions.
Definition: colvars_system.h:16
Collective variables module (main class)
Definition: colvarmodule.h:71
double real
Defining an abstract real number allows to switch precision.
Definition: colvarmodule.h:98
Collective variables main module.
Definition: colvarcomp_coordnums_kernel.h:12