forked from dftfeDevelopers/dftfe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DeviceAPICalls.h
176 lines (143 loc) · 4.58 KB
/
DeviceAPICalls.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#ifdef DFTFE_WITH_DEVICE
# ifndef dftfeDeviceAPICalls_H
# define dftfeDeviceAPICalls_H
# include <TypeConfig.h>
# include <DeviceTypeConfig.h>
namespace dftfe
{
namespace utils
{
deviceError_t
deviceReset();
deviceError_t
deviceMemGetInfo(std::size_t *free, std::size_t *total);
deviceError_t
getDeviceCount(int *count);
deviceError_t
getDevice(int *deviceId);
deviceError_t
setDevice(int deviceId);
deviceError_t
deviceMalloc(void **devPtr, std::size_t size);
deviceError_t
deviceMemset(void *devPtr, int value, std::size_t count);
/**
* @brief
* @param devPtr
* @param value
* @param size
*/
template <typename ValueType>
void
deviceSetValue(ValueType *devPtr, ValueType value, std::size_t size);
deviceError_t
deviceFree(void *devPtr);
deviceError_t
deviceHostMalloc(void **hostPtr, std::size_t size);
deviceError_t
deviceHostFree(void *hostPtr);
/**
* @brief Copy array from device to host
* @param count The memory size in bytes of the array
*/
deviceError_t
deviceMemcpyD2H(void *dst, const void *src, std::size_t count);
/**
* @brief Copy array from device to device
* @param count The memory size in bytes of the array
*/
deviceError_t
deviceMemcpyD2D(void *dst, const void *src, std::size_t count);
/**
* @brief Copy array from host to device
* @param count The memory size in bytes of the array
*/
deviceError_t
deviceMemcpyH2D(void *dst, const void *src, std::size_t count);
/**
* @brief Copy 2D array from device to host
* @param count The memory size in bytes of the array
*/
deviceError_t
deviceMemcpyD2H_2D(void * dst,
std::size_t dpitch,
const void *src,
std::size_t spitch,
std::size_t width,
std::size_t height);
/**
* @brief Copy 2D array from device to device
* @param count The memory size in bytes of the array
*/
deviceError_t
deviceMemcpyD2D_2D(void * dst,
std::size_t dpitch,
const void *src,
std::size_t spitch,
std::size_t width,
std::size_t height);
/**
* @brief Copy 2D array from host to device
* @param count The memory size in bytes of the array
*/
deviceError_t
deviceMemcpyH2D_2D(void * dst,
std::size_t dpitch,
const void *src,
std::size_t spitch,
std::size_t width,
std::size_t height);
/**
* @brief HOST-DEVICE synchronization
*/
deviceError_t
deviceSynchronize();
/**
* @brief Copy array from device to host
* @param count The memory size in bytes of the array
*/
deviceError_t
deviceMemcpyAsyncD2H(void * dst,
const void * src,
std::size_t count,
deviceStream_t stream = 0);
/**
* @brief Copy array from device to device
* @param count The memory size in bytes of the array
*/
deviceError_t
deviceMemcpyAsyncD2D(void * dst,
const void * src,
std::size_t count,
deviceStream_t stream = 0);
/**
* @brief Copy array from host to device
* @param count The memory size in bytes of the array
*/
deviceError_t
deviceMemcpyAsyncH2D(void * dst,
const void * src,
std::size_t count,
deviceStream_t stream = 0);
deviceError_t
deviceStreamCreate(deviceStream_t *pStream, const bool nonBlocking = false);
deviceError_t
deviceStreamDestroy(deviceStream_t stream);
deviceError_t
deviceStreamSynchronize(deviceStream_t stream);
deviceError_t
deviceEventCreate(deviceEvent_t *pEvent);
deviceError_t
deviceEventDestroy(deviceEvent_t event);
deviceError_t
deviceEventRecord(deviceEvent_t event, deviceStream_t stream = 0);
deviceError_t
deviceEventSynchronize(deviceEvent_t event);
deviceError_t
deviceStreamWaitEvent(deviceStream_t stream,
deviceEvent_t event,
unsigned int flags = 0);
} // namespace utils
} // namespace dftfe
# endif // dftfeDeviceAPICalls_H
#endif // DFTFE_WITH_DEVICE