Skip to content

Commit 455ba23

Browse files
authored
Merge pull request #39 from kokkos/allocate-view-tests
Add 4d-7d support for kokkos_allocate_view.
2 parents 53ea986 + 906597f commit 455ba23

25 files changed

Lines changed: 5453 additions & 267 deletions

src/flcl-cxx.cpp

Lines changed: 318 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,240 @@ extern "C" {
166166
*A = (*v_A)->data();
167167
}
168168

169+
// 4D flcl view allocation routines
170+
void c_kokkos_allocate_v_l_4d(bool** A, flcl::view_l_4d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3) {
171+
const size_t e0t = std::max(*e0, one);
172+
const size_t e1t = std::max(*e1, one);
173+
const size_t e2t = std::max(*e2, one);
174+
const size_t e3t = std::max(*e3, one);
175+
std::string c_label( f_label );
176+
*v_A = (new flcl::view_l_4d_t(c_label, e0t, e1t, e2t, e3t));
177+
*A = (*v_A)->data();
178+
}
179+
180+
void c_kokkos_allocate_v_i32_4d(int32_t** A, flcl::view_i32_4d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3) {
181+
const size_t e0t = std::max(*e0, one);
182+
const size_t e1t = std::max(*e1, one);
183+
const size_t e2t = std::max(*e2, one);
184+
const size_t e3t = std::max(*e3, one);
185+
std::string c_label( f_label );
186+
*v_A = (new flcl::view_i32_4d_t(c_label, e0t, e1t, e2t, e3t));
187+
*A = (*v_A)->data();
188+
}
189+
190+
void c_kokkos_allocate_v_i64_4d(int64_t** A, flcl::view_i64_4d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3) {
191+
const size_t e0t = std::max(*e0, one);
192+
const size_t e1t = std::max(*e1, one);
193+
const size_t e2t = std::max(*e2, one);
194+
const size_t e3t = std::max(*e3, one);
195+
std::string c_label( f_label );
196+
*v_A = (new flcl::view_i64_4d_t(c_label, e0t, e1t, e2t, e3t));
197+
*A = (*v_A)->data();
198+
}
199+
200+
void c_kokkos_allocate_v_r32_4d(float** A, flcl::view_r32_4d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3) {
201+
const size_t e0t = std::max(*e0, one);
202+
const size_t e1t = std::max(*e1, one);
203+
const size_t e2t = std::max(*e2, one);
204+
const size_t e3t = std::max(*e3, one);
205+
std::string c_label( f_label );
206+
*v_A = (new flcl::view_r32_4d_t(c_label, e0t, e1t, e2t, e3t));
207+
*A = (*v_A)->data();
208+
}
209+
210+
void c_kokkos_allocate_v_r64_4d(double** A, flcl::view_r64_4d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3) {
211+
const size_t e0t = std::max(*e0, one);
212+
const size_t e1t = std::max(*e1, one);
213+
const size_t e2t = std::max(*e2, one);
214+
const size_t e3t = std::max(*e3, one);
215+
std::string c_label( f_label );
216+
*v_A = (new flcl::view_r64_4d_t(c_label, e0t, e1t, e2t, e3t));
217+
*A = (*v_A)->data();
218+
}
219+
220+
// 5D flcl view allocation routines
221+
void c_kokkos_allocate_v_l_5d(bool** A, flcl::view_l_5d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4) {
222+
const size_t e0t = std::max(*e0, one);
223+
const size_t e1t = std::max(*e1, one);
224+
const size_t e2t = std::max(*e2, one);
225+
const size_t e3t = std::max(*e3, one);
226+
const size_t e4t = std::max(*e4, one);
227+
std::string c_label( f_label );
228+
*v_A = (new flcl::view_l_5d_t(c_label, e0t, e1t, e2t, e3t, e4t));
229+
*A = (*v_A)->data();
230+
}
231+
232+
void c_kokkos_allocate_v_i32_5d(int32_t** A, flcl::view_i32_5d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4) {
233+
const size_t e0t = std::max(*e0, one);
234+
const size_t e1t = std::max(*e1, one);
235+
const size_t e2t = std::max(*e2, one);
236+
const size_t e3t = std::max(*e3, one);
237+
const size_t e4t = std::max(*e4, one);
238+
std::string c_label( f_label );
239+
*v_A = (new flcl::view_i32_5d_t(c_label, e0t, e1t, e2t, e3t, e4t));
240+
*A = (*v_A)->data();
241+
}
242+
243+
void c_kokkos_allocate_v_i64_5d(int64_t** A, flcl::view_i64_5d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4) {
244+
const size_t e0t = std::max(*e0, one);
245+
const size_t e1t = std::max(*e1, one);
246+
const size_t e2t = std::max(*e2, one);
247+
const size_t e3t = std::max(*e3, one);
248+
const size_t e4t = std::max(*e4, one);
249+
std::string c_label( f_label );
250+
*v_A = (new flcl::view_i64_5d_t(c_label, e0t, e1t, e2t, e3t, e4t));
251+
*A = (*v_A)->data();
252+
}
253+
254+
void c_kokkos_allocate_v_r32_5d(float** A, flcl::view_r32_5d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4) {
255+
const size_t e0t = std::max(*e0, one);
256+
const size_t e1t = std::max(*e1, one);
257+
const size_t e2t = std::max(*e2, one);
258+
const size_t e3t = std::max(*e3, one);
259+
const size_t e4t = std::max(*e4, one);
260+
std::string c_label( f_label );
261+
*v_A = (new flcl::view_r32_5d_t(c_label, e0t, e1t, e2t, e3t, e4t));
262+
*A = (*v_A)->data();
263+
}
264+
265+
void c_kokkos_allocate_v_r64_5d(double** A, flcl::view_r64_5d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4) {
266+
const size_t e0t = std::max(*e0, one);
267+
const size_t e1t = std::max(*e1, one);
268+
const size_t e2t = std::max(*e2, one);
269+
const size_t e3t = std::max(*e3, one);
270+
const size_t e4t = std::max(*e4, one);
271+
std::string c_label( f_label );
272+
*v_A = (new flcl::view_r64_5d_t(c_label, e0t, e1t, e2t, e3t, e4t));
273+
*A = (*v_A)->data();
274+
}
275+
276+
// 6D flcl view allocation routines
277+
void c_kokkos_allocate_v_l_6d(bool** A, flcl::view_l_6d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4, const size_t* e5) {
278+
const size_t e0t = std::max(*e0, one);
279+
const size_t e1t = std::max(*e1, one);
280+
const size_t e2t = std::max(*e2, one);
281+
const size_t e3t = std::max(*e3, one);
282+
const size_t e4t = std::max(*e4, one);
283+
const size_t e5t = std::max(*e5, one);
284+
std::string c_label( f_label );
285+
*v_A = (new flcl::view_l_6d_t(c_label, e0t, e1t, e2t, e3t, e4t, e5t));
286+
*A = (*v_A)->data();
287+
}
288+
289+
void c_kokkos_allocate_v_i32_6d(int32_t** A, flcl::view_i32_6d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4, const size_t* e5) {
290+
const size_t e0t = std::max(*e0, one);
291+
const size_t e1t = std::max(*e1, one);
292+
const size_t e2t = std::max(*e2, one);
293+
const size_t e3t = std::max(*e3, one);
294+
const size_t e4t = std::max(*e4, one);
295+
const size_t e5t = std::max(*e5, one);
296+
std::string c_label( f_label );
297+
*v_A = (new flcl::view_i32_6d_t(c_label, e0t, e1t, e2t, e3t, e4t, e5t));
298+
*A = (*v_A)->data();
299+
}
300+
301+
void c_kokkos_allocate_v_i64_6d(int64_t** A, flcl::view_i64_6d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4, const size_t* e5) {
302+
const size_t e0t = std::max(*e0, one);
303+
const size_t e1t = std::max(*e1, one);
304+
const size_t e2t = std::max(*e2, one);
305+
const size_t e3t = std::max(*e3, one);
306+
const size_t e4t = std::max(*e4, one);
307+
const size_t e5t = std::max(*e5, one);
308+
std::string c_label( f_label );
309+
*v_A = (new flcl::view_i64_6d_t(c_label, e0t, e1t, e2t, e3t, e4t, e5t));
310+
*A = (*v_A)->data();
311+
}
312+
313+
void c_kokkos_allocate_v_r32_6d(float** A, flcl::view_r32_6d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4, const size_t* e5) {
314+
const size_t e0t = std::max(*e0, one);
315+
const size_t e1t = std::max(*e1, one);
316+
const size_t e2t = std::max(*e2, one);
317+
const size_t e3t = std::max(*e3, one);
318+
const size_t e4t = std::max(*e4, one);
319+
const size_t e5t = std::max(*e5, one);
320+
std::string c_label( f_label );
321+
*v_A = (new flcl::view_r32_6d_t(c_label, e0t, e1t, e2t, e3t, e4t, e5t));
322+
*A = (*v_A)->data();
323+
}
324+
325+
void c_kokkos_allocate_v_r64_6d(double** A, flcl::view_r64_6d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4, const size_t* e5) {
326+
const size_t e0t = std::max(*e0, one);
327+
const size_t e1t = std::max(*e1, one);
328+
const size_t e2t = std::max(*e2, one);
329+
const size_t e3t = std::max(*e3, one);
330+
const size_t e4t = std::max(*e4, one);
331+
const size_t e5t = std::max(*e5, one);
332+
std::string c_label( f_label );
333+
*v_A = (new flcl::view_r64_6d_t(c_label, e0t, e1t, e2t, e3t, e4t, e5t));
334+
*A = (*v_A)->data();
335+
}
336+
337+
// 7D flcl view allocation routines
338+
void c_kokkos_allocate_v_l_7d(bool** A, flcl::view_l_7d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4, const size_t* e5, const size_t* e6) {
339+
const size_t e0t = std::max(*e0, one);
340+
const size_t e1t = std::max(*e1, one);
341+
const size_t e2t = std::max(*e2, one);
342+
const size_t e3t = std::max(*e3, one);
343+
const size_t e4t = std::max(*e4, one);
344+
const size_t e5t = std::max(*e5, one);
345+
const size_t e6t = std::max(*e6, one);
346+
std::string c_label( f_label );
347+
*v_A = (new flcl::view_l_7d_t(c_label, e0t, e1t, e2t, e3t, e4t, e5t, e6t));
348+
*A = (*v_A)->data();
349+
}
350+
351+
void c_kokkos_allocate_v_i32_7d(int32_t** A, flcl::view_i32_7d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4, const size_t* e5, const size_t* e6) {
352+
const size_t e0t = std::max(*e0, one);
353+
const size_t e1t = std::max(*e1, one);
354+
const size_t e2t = std::max(*e2, one);
355+
const size_t e3t = std::max(*e3, one);
356+
const size_t e4t = std::max(*e4, one);
357+
const size_t e5t = std::max(*e5, one);
358+
const size_t e6t = std::max(*e6, one);
359+
std::string c_label( f_label );
360+
*v_A = (new flcl::view_i32_7d_t(c_label, e0t, e1t, e2t, e3t, e4t, e5t, e6t));
361+
*A = (*v_A)->data();
362+
}
363+
364+
void c_kokkos_allocate_v_i64_7d(int64_t** A, flcl::view_i64_7d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4, const size_t* e5, const size_t* e6) {
365+
const size_t e0t = std::max(*e0, one);
366+
const size_t e1t = std::max(*e1, one);
367+
const size_t e2t = std::max(*e2, one);
368+
const size_t e3t = std::max(*e3, one);
369+
const size_t e4t = std::max(*e4, one);
370+
const size_t e5t = std::max(*e5, one);
371+
const size_t e6t = std::max(*e6, one);
372+
std::string c_label( f_label );
373+
*v_A = (new flcl::view_i64_7d_t(c_label, e0t, e1t, e2t, e3t, e4t, e5t, e6t));
374+
*A = (*v_A)->data();
375+
}
376+
377+
void c_kokkos_allocate_v_r32_7d(float** A, flcl::view_r32_7d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4, const size_t* e5, const size_t* e6) {
378+
const size_t e0t = std::max(*e0, one);
379+
const size_t e1t = std::max(*e1, one);
380+
const size_t e2t = std::max(*e2, one);
381+
const size_t e3t = std::max(*e3, one);
382+
const size_t e4t = std::max(*e4, one);
383+
const size_t e5t = std::max(*e5, one);
384+
const size_t e6t = std::max(*e6, one);
385+
std::string c_label( f_label );
386+
*v_A = (new flcl::view_r32_7d_t(c_label, e0t, e1t, e2t, e3t, e4t, e5t, e6t));
387+
*A = (*v_A)->data();
388+
}
389+
390+
void c_kokkos_allocate_v_r64_7d(double** A, flcl::view_r64_7d_t** v_A, const char* f_label, const size_t* e0, const size_t* e1, const size_t* e2, const size_t* e3, const size_t* e4, const size_t* e5, const size_t* e6) {
391+
const size_t e0t = std::max(*e0, one);
392+
const size_t e1t = std::max(*e1, one);
393+
const size_t e2t = std::max(*e2, one);
394+
const size_t e3t = std::max(*e3, one);
395+
const size_t e4t = std::max(*e4, one);
396+
const size_t e5t = std::max(*e5, one);
397+
const size_t e6t = std::max(*e6, one);
398+
std::string c_label( f_label );
399+
*v_A = (new flcl::view_r64_7d_t(c_label, e0t, e1t, e2t, e3t, e4t, e5t, e6t));
400+
*A = (*v_A)->data();
401+
}
402+
169403
// 1D flcl dualview allocation routines
170404
void c_kokkos_allocate_dv_l_1d(bool** A, flcl::dualview_l_1d_t** v_A, const char* f_label, const size_t* e0) {
171405
const size_t e0t = std::max(*e0, one);
@@ -354,6 +588,90 @@ extern "C" {
354588
delete(*v_A);
355589
}
356590

591+
// 4D flcl view deallocation routines
592+
void c_kokkos_deallocate_v_l_4d(flcl::view_l_4d_t** v_A) {
593+
delete(*v_A);
594+
}
595+
596+
void c_kokkos_deallocate_v_i32_4d(flcl::view_i32_4d_t** v_A) {
597+
delete(*v_A);
598+
}
599+
600+
void c_kokkos_deallocate_v_i64_4d(flcl::view_i64_4d_t** v_A) {
601+
delete(*v_A);
602+
}
603+
604+
void c_kokkos_deallocate_v_r32_4d(flcl::view_r32_4d_t** v_A) {
605+
delete(*v_A);
606+
}
607+
608+
void c_kokkos_deallocate_v_r64_4d(flcl::view_r64_4d_t** v_A) {
609+
delete(*v_A);
610+
}
611+
612+
// 5D flcl view deallocation routines
613+
void c_kokkos_deallocate_v_l_5d(flcl::view_l_5d_t** v_A) {
614+
delete(*v_A);
615+
}
616+
617+
void c_kokkos_deallocate_v_i32_5d(flcl::view_i32_5d_t** v_A) {
618+
delete(*v_A);
619+
}
620+
621+
void c_kokkos_deallocate_v_i64_5d(flcl::view_i64_5d_t** v_A) {
622+
delete(*v_A);
623+
}
624+
625+
void c_kokkos_deallocate_v_r32_5d(flcl::view_r32_5d_t** v_A) {
626+
delete(*v_A);
627+
}
628+
629+
void c_kokkos_deallocate_v_r64_5d(flcl::view_r64_5d_t** v_A) {
630+
delete(*v_A);
631+
}
632+
633+
// 6D flcl view deallocation routines
634+
void c_kokkos_deallocate_v_l_6d(flcl::view_l_6d_t** v_A) {
635+
delete(*v_A);
636+
}
637+
638+
void c_kokkos_deallocate_v_i32_6d(flcl::view_i32_6d_t** v_A) {
639+
delete(*v_A);
640+
}
641+
642+
void c_kokkos_deallocate_v_i64_6d(flcl::view_i64_6d_t** v_A) {
643+
delete(*v_A);
644+
}
645+
646+
void c_kokkos_deallocate_v_r32_6d(flcl::view_r32_6d_t** v_A) {
647+
delete(*v_A);
648+
}
649+
650+
void c_kokkos_deallocate_v_r64_6d(flcl::view_r64_6d_t** v_A) {
651+
delete(*v_A);
652+
}
653+
654+
// 7D flcl view deallocation routines
655+
void c_kokkos_deallocate_v_l_7d(flcl::view_l_7d_t** v_A) {
656+
delete(*v_A);
657+
}
658+
659+
void c_kokkos_deallocate_v_i32_7d(flcl::view_i32_7d_t** v_A) {
660+
delete(*v_A);
661+
}
662+
663+
void c_kokkos_deallocate_v_i64_7d(flcl::view_i64_7d_t** v_A) {
664+
delete(*v_A);
665+
}
666+
667+
void c_kokkos_deallocate_v_r32_7d(flcl::view_r32_7d_t** v_A) {
668+
delete(*v_A);
669+
}
670+
671+
void c_kokkos_deallocate_v_r64_7d(flcl::view_r64_7d_t** v_A) {
672+
delete(*v_A);
673+
}
674+
357675
// 1D flcl dualview deallocation routines
358676
void c_kokkos_deallocate_dv_l_1d(flcl::dualview_l_1d_t** v_A) {
359677
delete(*v_A);

0 commit comments

Comments
 (0)