@@ -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_
10085template <typename FPTYPE >
10186void 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
128100template <typename FPTYPE >
129101void 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
158124template <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 >;
235176template 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 >;
239185template 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 >;
248196template 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