Skip to content

Commit a2ef1d3

Browse files
fix the lack explict of 'char'type
1 parent 5509582 commit a2ef1d3

1 file changed

Lines changed: 76 additions & 132 deletions

File tree

source/module_base/module_device/rocm/memory_op.hip.cu

Lines changed: 76 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -72,22 +72,7 @@ void synchronize_memory_op<FPTYPE, base_device::DEVICE_CPU, base_device::DEVICE_
7272
const FPTYPE* arr_in,
7373
const size_t size)
7474
{
75-
hipErrcheck(hipMemcpy(arr_out, arr_in, sizeof(FPTYPE) * size, hipMemcpyDeviceToHost));
76-
}
77-
78-
template <typename FPTYPE>
79-
void synchronize_memory_op<FPTYPE, base_device::DEVICE_GPU, base_device::DEVICE_CPU>::operator()(
80-
const base_device::DEVICE_GPU* dev_out,
81-
const base_device::DEVICE_CPU* dev_in,
82-
FPTYPE* arr_out,
83-
const FPTYPE* arr_in,
84-
const size_t size)
85-
{
86-
hipErrcheck(hipMemcpy(arr_out, arr_in, sizeof(FPTYPE) * size, hipMemcpyHostToDevice));
87-
}
88-
89-
template <typename FPTYPE>
90-
void synchronize_memory_op<FPTYPE, base_device::DEVICE_GPU, base_device::DEVICE_GPU>::operator()(
75+
hipErrcheck(hipMemcpy(arr_op<FPTYPE, base_device::DEVICE_GPU, base_device::DEVICE_GPU>::operator()(
9176
const base_device::DEVICE_GPU* dev_out,
9277
const base_device::DEVICE_GPU* dev_in,
9378
FPTYPE* arr_out,
@@ -100,20 +85,7 @@ void synchronize_memory_op<FPTYPE, base_device::DEVICE_GPU, base_device::DEVICE_
10085
template <typename FPTYPE>
10186
void synchronize_memory_2d_op<FPTYPE, base_device::DEVICE_CPU, base_device::DEVICE_GPU>::operator()(
10287
const base_device::DEVICE_CPU* dev_out,
103-
const base_device::DEVICE_GPU* dev_in,
104-
FPTYPE* arr_out,
105-
const size_t dpitch,
106-
const FPTYPE* arr_in,
107-
const size_t spitch,
108-
const size_t width,
109-
const size_t height)
110-
{
111-
hipErrcheck(hipMemcpy2D(arr_out, dpitch * sizeof(FPTYPE), arr_in, spitch * sizeof(FPTYPE), width * sizeof(FPTYPE), height, hipMemcpyDeviceToHost));
112-
}
113-
114-
template <typename FPTYPE>
115-
void synchronize_memory_2d_op<FPTYPE, base_device::DEVICE_GPU, base_device::DEVICE_CPU>::operator()(
116-
const base_device::DEVICE_GPU* dev_out,
88+
const basICE_GPU* dev_out,
11789
const base_device::DEVICE_CPU* dev_in,
11890
FPTYPE* arr_out,
11991
const size_t dpitch,
@@ -127,21 +99,7 @@ void synchronize_memory_2d_op<FPTYPE, base_device::DEVICE_GPU, base_device::DEVI
12799

128100
template <typename FPTYPE>
129101
void synchronize_memory_2d_op<FPTYPE, base_device::DEVICE_GPU, base_device::DEVICE_GPU>::operator()(
130-
const base_device::DEVICE_GPU* dev_out,
131-
const base_device::DEVICE_GPU* dev_in,
132-
FPTYPE* arr_out,
133-
const size_t dpitch,
134-
const FPTYPE* arr_in,
135-
const size_t spitch,
136-
const size_t width,
137-
const size_t height)
138-
{
139-
hipErrcheck(hipMemcpy2D(arr_out, dpitch * sizeof(FPTYPE), arr_in, spitch * sizeof(FPTYPE), width * sizeof(FPTYPE), height, hipMemcpyDeviceToDevice));
140-
}
141-
142-
143-
template <typename FPTYPE_out, typename FPTYPE_in>
144-
struct cast_memory_op<FPTYPE_out, FPTYPE_in, base_device::DEVICE_GPU, base_device::DEVICE_GPU> {
102+
const base_device::DEVI_GPU, base_device::DEVICE_GPU> {
145103
void operator()(const base_device::DEVICE_GPU* dev_out,
146104
const base_device::DEVICE_GPU* dev_in,
147105
FPTYPE_out* arr_out,
@@ -151,119 +109,105 @@ struct cast_memory_op<FPTYPE_out, FPTYPE_in, base_device::DEVICE_GPU, base_devic
151109
if (size == 0) {return;}
152110
const int block = (size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK;
153111
hipLaunchKernelGGL(cast_memory, dim3(block), dim3(THREADS_PER_BLOCK), 0, 0, arr_out, arr_in, size);
112+
hipCheckOnDebug();y if the data types are the same.
113+
if (std::is_same<FPTYPE_out, FPTYPE_in>::value)
114+
{
115+
synchronize_memory_op<FPTYPE_out, base_device::DEVICE_GPU, base_device::DEVICE_CPU>()(dev_out,
116+
dev_in,
117+
arr_out,
118+
reinterpret_clGGL(cast_memory, dim3(block), dim3(THREADS_PER_BLOCK), 0, 0, arr_out, arr, size);
154119
hipCheckOnDebug();
120+
hipErrcheck(hipFree(arr));
155121
}
156122
};
157123

158124
template <typename FPTYPE_out, typename FPTYPE_in>
159-
struct cast_memory_op<FPTYPE_out, FPTYPE_in, base_device::DEVICE_GPU, base_device::DEVICE_CPU> {
160-
void operator()(const base_device::DEVICE_GPU* dev_out,
161-
const base_device::DEVICE_CPU* dev_in,
125+
struct cast_memory_op<FPTYPE_out, FPTYPE_in, base_device::DEVICE_CPU, base_device::DEVICE_GPU> {
126+
void operator()(const base_device::DEVICE_CPU* dev_out,
127+
const base_device::DEVICE_GPU* dev_in,
162128
FPTYPE_out* arr_out,
163129
const FPTYPE_in* arr_in,
164-
const size_t size) {
165-
166-
if (size == 0) {return;}
167-
// No need to cast the memory if the data types are the same.
168-
if (std::is_same<FPTYPE_out, FPTYPE_in>::value)
169-
{
170-
synchronize_memory_op<FPTYPE_out, base_device::DEVICE_GPU, base_device::DEVICE_CPU>()(dev_out,
171-
dev_in,
172-
arr_out,
130+
const siz arr_out,
173131
reinterpret_cast<const FPTYPE_out*>(arr_in),
174132
size);
175133
return;
176134
}
177-
FPTYPE_in * arr = nullptr;
178-
hipErrcheck(hipMalloc((void **)&arr, sizeof(FPTYPE_in) * size));
179-
hipErrcheck(hipMemcpy(arr, arr_in, sizeof(FPTYPE_in) * size, hipMemcpyHostToDevice));
180-
const int block = (size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK;
181-
hipLaunchKernelarr_in,
182-
const size_t size) {
183-
184-
if (size == 0) {return;}
185-
// No need to cast the memory if the data types are the same.
186-
if (std::is_same<FPTYPE_out, FPTYPE_in>::value)
187-
{
188-
synchronize_memory_op<FPTYPE_out, base_device::DEVICE_CPU, base_device::DEVICE_GPU>()(dev_out,
189-
dev_in,
190-
0; ii < size; ii++) {
191-
arr_out[ii] = static_cast<FPTYPE_out>(arr[ii]);
192-
}
193-
free(arr);
194-
}
195-
};
196-
197-
template <typename FPTYPE>
198-
void delete_memory_op<FPTYPE, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* dev, FPTYPE* arr)
199-
{
200-
hipErrcheck(hipFree(arr));
201-
}
202-
203-
template struct resize_memory_op<int, base_device::DEVICE_GPU>;
204-
template struct resize_memory_op<float, base_device::DEVICE_GPU>;
205-
template struct resize_memory_op<double, base_device::DEVICE_GPU>;
206-
template structtruct set_memory_op<std::complex<double>, base_device::DEVICE_GPU>;
207-
208-
template struct set_memory_2d_op<int, base_device::DEVICE_GPU>;
209-
template struct set_memory_2d_op<float, base_device::DEVICE_GPU>;
210-
template struct set_memory_2d_op<double, base_device::DEVICE_GPU>;
211-
template struct set_memory_2d_op<std::complex<float>, base_device::DEVICE_GPU>;
212-
template struct set_memory_2d_op<std::complex<double>, base_device::DEVICE_GPU>;
213-
214-
215-
template struct synchronize_memory_op<int, base_device::DEVICE_CPU, base_device::DEVICE_GPemplate struct synchronize_memory_op<double, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
216-
template struct synchronize_memory_op<double, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
217-
template struct synchronize_memory_op<double, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
218-
template struct synchronize_memory_op<std::complex<float>, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
219-
template struct synchronize_memory_op<std::complex<float>, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
220-
template structbase_device::DEVICE_CPU, base_device::DEVICE_GPU>;
221-
template struct synchronize_memory_2d_op<int, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
222-
template struct synchronize_memory_2d_op<int, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
223-
template struct synchronize_memory_2d_op<float, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
224-
template struct synchronize_memory_2d_op<float, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
225-
template struct synchronize_memory_2d_op<float, base_device::DEVICE_GPU, base_device::DE:complex<float>, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
226-
template struct synchronize_memory_2d_op<std::complex<float>, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
227-
template struct synchronize_memory_2d_op<std::complex<double>, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
228-
template struct synchronize_memory_2d_op<std::complex<double>, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
229-
template struct synchronize_memory_2d_op<std::complex<double>, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
230-
231-
232-
template str:complex<float>,
135+
auto * arr = (FPTYPE_in*) malloc(sizeof(FPTYPE_in) * size);
136+
hipErrcheck(hipMemcpy(arr, arr_in, sizeof(FPTYPE_in) * size, hipMemcpyDeviceToHost));
137+
for (int ii = 0; ii < size; ii++) {
138+
arr_out[mplate struct resize_memory_op<std::complex<float>, base_device::DEVICE_GPU>;
139+
template struct resize_memory_op<std::complex<double>, base_device::DEVICE_GPU>;
140+
template struct resize_memory_op<char, base_device::DEVICE_GPU>;
141+
142+
template struct set_memory_op<int, base_device::DEVICE_GPU>;
143+
template struct set_memory_op<float, base_device::DEVICE_GPU>;
144+
template struct set_memory_op<double, base_device::DEVICE_GPU>;
145+
template struct set_memory_op<std::complex<float>, base_device::DEVICE_GPU>;
146+
template struct set_memory_op<std::complex<double>, base_dee_device::DEVICE_GPU>;
147+
template struct synchronize_memory_op<int, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
148+
template struct synchronize_memory_op<int, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
149+
template struct synchronize_memory_op<float, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
150+
template struct synchronize_memory_op<float, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
151+
template struct synchronize_memory_op<float, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
152+
template struct synchronize_memory_op<double, base_devicICE_CPU>;
153+
template struct synchronize_memory_op<std::complex<float>, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
154+
template struct synchronize_memory_op<std::complex<double>, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
155+
template struct synchronize_memory_op<std::complex<double>, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
156+
template struct synchronize_memory_op<std::complex<double>, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
157+
158+
template struct synchronize_memory_2d_op<int, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
159+
template sce::DEVICE_GPU, base_device::DEVICE_GPU>;
160+
template struct synchronize_memory_2d_op<double, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
161+
template struct synchronize_memory_2d_op<double, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
162+
template struct synchronize_memory_2d_op<double, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
163+
template struct synchronize_memory_2d_op<std::complex<float>, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
164+
template struct synchronize_memory_2d_op<std::complex<float>, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;e_device::DEVICE_GPU>;
165+
166+
167+
template struct cast_memory_op<float, float, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
168+
template struct cast_memory_op<double, double, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
169+
template struct cast_memory_op<float, double, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
170+
template struct cast_memory_op<double, float, base_device::DEVICE_GPU, base_device::DEVICE_GPU>;
171+
template struct cast_memory_op<std::complex<float>,
172+
std::complex<float>,
233173
base_device::DEVICE_GPU,
174+
VICE_GPU,
234175
base_device::DEVICE_GPU>;
235176
template struct cast_memory_op<std::complex<double>,
236-
std::complex<double>,
177+
std::complex<float>,
237178
base_device::DEVICE_GPU,
238179
base_device::DEVICE_GPU>;
180+
template struct cast_memory_op<float, float, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
181+
template struct cast_memory_op<double, double, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
182+
template struct cast_memory_op<float, double, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
183+
tem base_device::DEVICE_GPU,
184+
base_device::DEVICE_CPU>;
239185
template struct cast_memory_op<std::complex<float>,
240186
std::complex<double>,
241187
base_device::DEVICE_GPU,
242-
bamemory_op<float, double, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
243-
template struct cast_memory_op<double, float, base_device::DEVICE_GPU, base_device::DEVICE_CPU>;
244-
template struct cast_memory_op<std::complex<float>,
188+
base_device::DEVICE_CPU>;
189+
template struct cast_memory_op<std::complex<double>,
245190
std::complex<float>,
246191
base_device::DEVICE_GPU,
247192
base_device::DEVICE_CPU>;
193+
template struct cast_memory_op<float, fl std::complex<float>,
194+
base_device::DEVICE_CPU,
195+
base_device::DEVICE_GPU>;
248196
template struct cast_memory_op<std::complex<double>,
249197
std::complex<double>,
250-
base_device::DEVICE_GP base_device::DEVICE_CPU>;
251-
template struct cast_memory_op<float, float, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
252-
template struct cast_memory_op<double, double, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
253-
template struct cast_memory_op<float, double, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
254-
template struct cast_memory_op<double, float, base_device::DEVICE_CPU, base_device::DEVICE_GPU>;
255-
template struct cast_memory_op<std::complex<float>,
256-
std::complex<float>,
257-
base_device::DEVICE_CPU,
198+
base_device::DEVICE_CPU,
258199
base_device::DEVICE_GPU>;
259-
template struct cast_memory_op<std::complex<double>,
260-
std::complex<float>,
200+
template struct cast_memory_op<std::complex<float>,
201+
std::complex<double>,
261202
base_device::DEVICE_CPU,
262203
base_device::DEVICE_GPU>;
263-
264-
template struct delete_memory_op<int, base_device::DEVICE_GPU>;
265-
template struct delete_memory_op<float, base_device::DEVICE_GPU>;
266-
template struct delete_memory_op<double, base_device::DEVICE_GPU>;
267-
template struct delete_memory_op<std::complex<float>, base base_device::DEVICE_GPU>;
204+
temp>;
205+
template struct delete_memory_op<std::complex<float>, base_device::DEVICE_GPU>;
206+
template struct delete_memory_op<std::complex<double>, base_device::DEVICE_GPU>;
207+
template struct delete_memory_op<float*, base_device::DEVICE_GPU>;
208+
template struct delete_memory_op<double*, base_device::DEVICE_GPU>;
209+
template struct delete_memory_op<std::complex<float>*, base_device::DEVICE_GPU>;
210+
template struct delete_memory_op<std::complex<double>*, base_device::DEVICE_GPU>;
211+
template struct delete_memory_op<char, base_device::DEVICE_GPU>;
268212
} // namespace memory
269213
} // end of namespace base_device

0 commit comments

Comments
 (0)