Tinker9 70bd052 (Thu Nov 9 12:11:35 2023 -0800)
Loading...
Searching...
No Matches
zero.h
1#pragma once
2#include "tool/externfunc.h"
3#include <cstddef>
4
5// host
6namespace tinker {
9inline void zeroOnHost(int& v)
10{
11 v = 0;
12}
13
16inline void zeroOnHost(float& v)
17{
18 v = 0;
19}
20
23inline void zeroOnHost(double& v)
24{
25 v = 0;
26}
27
30inline void zeroOnHost(unsigned long long& v)
31{
32 v = 0;
33}
34
37template <class T>
38void zeroOnHost(T*& ptr)
39{
40 ptr = nullptr;
41}
42
45template <class T, size_t N>
46void zeroOnHost(T (&v)[N])
47{
48 for (size_t i = 0; i < N; ++i)
49 zeroOnHost(v[i]);
50}
51
54template <class T, class... Ts>
55void zeroOnHost(T& v, Ts&... vs)
56{
57 zeroOnHost(v);
58 zeroOnHost(vs...);
59}
60}
61
62// device
63namespace tinker {
64template <class T>
65void zeroOnDevice3Async_acc(int nelem, T* a1, T* a2, T* a3);
66template <class T>
67void zeroOnDevice3Async_cu(int nelem, T* a1, T* a2, T* a3);
68
71template <class T>
72void zeroOnDevice3Async(int nelem, T* a1, T* a2, T* a3)
73{
74 // TINKER_FVOID2(acc1, cu1, zeroOnDevice3Async, int, T*, T*, T*);
75 TINKER_FCALL2(acc1, cu1, zeroOnDevice3Async, nelem, a1, a2, a3);
76}
77
78template <class T, int N>
79void zeroOnDevice3Async_acc(int nelem, T (*a1)[N], T (*a2)[N], T (*a3)[N]);
80template <class T, int N>
81void zeroOnDevice3Async_cu(int nelem, T (*a1)[N], T (*a2)[N], T (*a3)[N]);
82
85template <class T, int N>
86void zeroOnDevice3Async(int nelem, T (*a1)[N], T (*a2)[N], T (*a3)[N])
87{
88 // TINKER_FVOID2(acc1, cu1, zeroOnDevice3Async, ...);
89 TINKER_FCALL2(acc1, cu1, zeroOnDevice3Async, nelem, a1, a2, a3);
90}
91
92template <class T>
93void zeroOnDevice9Async_acc(int nelem, T* a1, T* a2, T* a3, T* a4, T* a5, T* a6,
94 T* a7, T* a8, T* a9);
95template <class T>
96void zeroOnDevice9Async_cu(int nelem, T* a1, T* a2, T* a3, T* a4, T* a5, T* a6,
97 T* a7, T* a8, T* a9);
98
101template <class T>
102void zeroOnDevice9Async(int nelem, T* a1, T* a2, T* a3, T* a4, T* a5, T* a6,
103 T* a7, T* a8, T* a9)
104{
105 // TINKER_FVOID2(acc1, cu1, zeroOnDevice9Async, ...);
106 TINKER_FCALL2(acc1, cu1, zeroOnDevice9Async, nelem, a1, a2, a3, a4, a5, a6,
107 a7, a8, a9);
108}
109}
void zeroOnHost(int &v)
Zeros variable on host.
Definition: zero.h:9
void zeroOnDevice9Async(int nelem, T *a1, T *a2, T *a3, T *a4, T *a5, T *a6, T *a7, T *a8, T *a9)
Zeros variables on device.
Definition: zero.h:102
void zeroOnDevice3Async(int nelem, T *a1, T *a2, T *a3)
Zeros variables on device.
Definition: zero.h:72
Definition: testrt.h:9
void zeroOnDevice9Async_cu(int nelem, T *a1, T *a2, T *a3, T *a4, T *a5, T *a6, T *a7, T *a8, T *a9)
void zeroOnDevice3Async_cu(int nelem, T *a1, T *a2, T *a3)
void zeroOnDevice9Async_acc(int nelem, T *a1, T *a2, T *a3, T *a4, T *a5, T *a6, T *a7, T *a8, T *a9)
void zeroOnDevice3Async_acc(int nelem, T *a1, T *a2, T *a3)