@@ -51,6 +51,18 @@ struct set_memory_op<FPTYPE, base_device::DEVICE_CPU>
5151 }
5252};
5353
54+ template <typename FPTYPE >
55+ struct set_memory_2d_op <FPTYPE , base_device::DEVICE_CPU >
56+ {
57+ void operator ()(const base_device::DEVICE_CPU * dev, FPTYPE * arr, const size_t pitch, const int var, const size_t width, const size_t height)
58+ {
59+ for (size_t i = 0 ; i < height; i++){
60+ set_memory_op<FPTYPE , base_device::DEVICE_CPU >()(dev, arr + i * pitch, var, width);
61+ }
62+ }
63+ };
64+
65+
5466template <typename FPTYPE >
5567struct synchronize_memory_op <FPTYPE , base_device::DEVICE_CPU , base_device::DEVICE_CPU >
5668{
@@ -68,6 +80,25 @@ struct synchronize_memory_op<FPTYPE, base_device::DEVICE_CPU, base_device::DEVIC
6880 }
6981};
7082
83+ template <typename FPTYPE >
84+ struct synchronize_memory_2d_op <FPTYPE , base_device::DEVICE_CPU , base_device::DEVICE_CPU >
85+ {
86+ void operator ()(const base_device::DEVICE_CPU * dev_out,
87+ const base_device::DEVICE_CPU * dev_in,
88+ FPTYPE * arr_out,
89+ const size_t dpitch,
90+ const FPTYPE * arr_in,
91+ const size_t spitch,
92+ const size_t width,
93+ const size_t height)
94+ {
95+ for (int i = 0 ; i < height; i++){
96+ synchronize_memory_op<FPTYPE , base_device::DEVICE_CPU , base_device::DEVICE_CPU >()(dev_out, dev_in,
97+ arr_out + i * dpitch, arr_in + i * spitch, width);
98+ }
99+ }
100+ };
101+
71102template <typename FPTYPE_out, typename FPTYPE_in>
72103struct cast_memory_op <FPTYPE_out, FPTYPE_in, base_device::DEVICE_CPU , base_device::DEVICE_CPU >
73104{
@@ -108,12 +139,24 @@ template struct set_memory_op<double, base_device::DEVICE_CPU>;
108139template struct set_memory_op <std::complex <float >, base_device::DEVICE_CPU >;
109140template struct set_memory_op <std::complex <double >, base_device::DEVICE_CPU >;
110141
142+ template struct set_memory_2d_op <int , base_device::DEVICE_CPU >;
143+ template struct set_memory_2d_op <float , base_device::DEVICE_CPU >;
144+ template struct set_memory_2d_op <double , base_device::DEVICE_CPU >;
145+ template struct set_memory_2d_op <std::complex <float >, base_device::DEVICE_CPU >;
146+ template struct set_memory_2d_op <std::complex <double >, base_device::DEVICE_CPU >;
147+
111148template struct synchronize_memory_op <int , base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
112149template struct synchronize_memory_op <float , base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
113150template struct synchronize_memory_op <double , base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
114151template struct synchronize_memory_op <std::complex <float >, base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
115152template struct synchronize_memory_op <std::complex <double >, base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
116153
154+ template struct synchronize_memory_2d_op <int , base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
155+ template struct synchronize_memory_2d_op <float , base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
156+ template struct synchronize_memory_2d_op <double , base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
157+ template struct synchronize_memory_2d_op <std::complex <float >, base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
158+ template struct synchronize_memory_2d_op <std::complex <double >, base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
159+
117160template struct cast_memory_op <float , float , base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
118161template struct cast_memory_op <double , double , base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
119162template struct cast_memory_op <float , double , base_device::DEVICE_CPU , base_device::DEVICE_CPU >;
@@ -165,6 +208,13 @@ struct set_memory_op<FPTYPE, base_device::DEVICE_GPU>
165208 {
166209 }
167210};
211+ template <typename FPTYPE >
212+ struct set_memory_2d_op <FPTYPE , base_device::DEVICE_GPU >
213+ {
214+ void operator ()(const base_device::DEVICE_GPU * dev, FPTYPE * arr, const size_t pitch, const int var, const size_t width, const size_t height)
215+ {
216+ }
217+ };
168218
169219template <typename FPTYPE >
170220struct synchronize_memory_op <FPTYPE , base_device::DEVICE_GPU , base_device::DEVICE_GPU >
@@ -202,6 +252,54 @@ struct synchronize_memory_op<FPTYPE, base_device::DEVICE_CPU, base_device::DEVIC
202252 }
203253};
204254
255+ template <typename FPTYPE >
256+ struct synchronize_memory_2d_op <FPTYPE , base_device::DEVICE_GPU , base_device::DEVICE_GPU >
257+ {
258+ void operator ()(const base_device::DEVICE_GPU * dev_out,
259+ const base_device::DEVICE_GPU * dev_in,
260+ const Device_in* dev_in,
261+ FPTYPE * arr_out,
262+ const size_t dpitch,
263+ const FPTYPE * arr_in,
264+ const size_t spitch,
265+ const size_t width,
266+ const size_t height)
267+ {
268+ }
269+ };
270+
271+ template <typename FPTYPE >
272+ struct synchronize_memory_2d_op <FPTYPE , base_device::DEVICE_GPU , base_device::DEVICE_CPU >
273+ {
274+ void operator ()(const base_device::DEVICE_GPU * dev_out,
275+ const base_device::DEVICE_CPU * dev_in,
276+ const Device_in* dev_in,
277+ FPTYPE * arr_out,
278+ const size_t dpitch,
279+ const FPTYPE * arr_in,
280+ const size_t spitch,
281+ const size_t width,
282+ const size_t height)
283+ {
284+ }
285+ };
286+
287+ template <typename FPTYPE >
288+ struct synchronize_memory_2d_op <FPTYPE , base_device::DEVICE_CPU , base_device::DEVICE_GPU >
289+ {
290+ void operator ()(const base_device::DEVICE_CPU * dev_out,
291+ const base_device::DEVICE_GPU * dev_in,
292+ const Device_in* dev_in,
293+ FPTYPE * arr_out,
294+ const size_t dpitch,
295+ const FPTYPE * arr_in,
296+ const size_t spitch,
297+ const size_t width,
298+ const size_t height)
299+ {
300+ }
301+ };
302+
205303template <typename FPTYPE_out, typename FPTYPE_in>
206304struct cast_memory_op <FPTYPE_out, FPTYPE_in, base_device::DEVICE_GPU , base_device::DEVICE_GPU >
207305{
@@ -258,6 +356,12 @@ template struct set_memory_op<double, base_device::DEVICE_GPU>;
258356template struct set_memory_op <std::complex <float >, base_device::DEVICE_GPU >;
259357template struct set_memory_op <std::complex <double >, base_device::DEVICE_GPU >;
260358
359+ template struct set_memory_2d_op <int , base_device::DEVICE_GPU >;
360+ template struct set_memory_2d_op <float , base_device::DEVICE_GPU >;
361+ template struct set_memory_2d_op <double , base_device::DEVICE_GPU >;
362+ template struct set_memory_2d_op <std::complex <float >, base_device::DEVICE_GPU >;
363+ template struct set_memory_2d_op <std::complex <double >, base_device::DEVICE_GPU >;
364+
261365template struct synchronize_memory_op <int , base_device::DEVICE_CPU , base_device::DEVICE_GPU >;
262366template struct synchronize_memory_op <int , base_device::DEVICE_GPU , base_device::DEVICE_CPU >;
263367template struct synchronize_memory_op <int , base_device::DEVICE_GPU , base_device::DEVICE_GPU >;
@@ -274,6 +378,22 @@ template struct synchronize_memory_op<std::complex<double>, base_device::DEVICE_
274378template struct synchronize_memory_op <std::complex <double >, base_device::DEVICE_GPU , base_device::DEVICE_CPU >;
275379template struct synchronize_memory_op <std::complex <double >, base_device::DEVICE_GPU , base_device::DEVICE_GPU >;
276380
381+ template struct synchronize_memory_2d_op <int , base_device::DEVICE_CPU , base_device::DEVICE_GPU >;
382+ template struct synchronize_memory_2d_op <int , base_device::DEVICE_GPU , base_device::DEVICE_CPU >;
383+ template struct synchronize_memory_2d_op <int , base_device::DEVICE_GPU , base_device::DEVICE_GPU >;
384+ template struct synchronize_memory_2d_op <float , base_device::DEVICE_CPU , base_device::DEVICE_GPU >;
385+ template struct synchronize_memory_2d_op <float , base_device::DEVICE_GPU , base_device::DEVICE_CPU >;
386+ template struct synchronize_memory_2d_op <float , base_device::DEVICE_GPU , base_device::DEVICE_GPU >;
387+ template struct synchronize_memory_2d_op <double , base_device::DEVICE_CPU , base_device::DEVICE_GPU >;
388+ template struct synchronize_memory_2d_op <double , base_device::DEVICE_GPU , base_device::DEVICE_CPU >;
389+ template struct synchronize_memory_2d_op <double , base_device::DEVICE_GPU , base_device::DEVICE_GPU >;
390+ template struct synchronize_memory_2d_op <std::complex <float >, base_device::DEVICE_CPU , base_device::DEVICE_GPU >;
391+ template struct synchronize_memory_2d_op <std::complex <float >, base_device::DEVICE_GPU , base_device::DEVICE_CPU >;
392+ template struct synchronize_memory_2d_op <std::complex <float >, base_device::DEVICE_GPU , base_device::DEVICE_GPU >;
393+ template struct synchronize_memory_2d_op <std::complex <double >, base_device::DEVICE_CPU , base_device::DEVICE_GPU >;
394+ template struct synchronize_memory_2d_op <std::complex <double >, base_device::DEVICE_GPU , base_device::DEVICE_CPU >;
395+ template struct synchronize_memory_2d_op <std::complex <double >, base_device::DEVICE_GPU , base_device::DEVICE_GPU >;
396+
277397template struct cast_memory_op <float , float , base_device::DEVICE_GPU , base_device::DEVICE_GPU >;
278398template struct cast_memory_op <double , double , base_device::DEVICE_GPU , base_device::DEVICE_GPU >;
279399template struct cast_memory_op <float , double , base_device::DEVICE_GPU , base_device::DEVICE_GPU >;
0 commit comments