HiRep 0.1
Loading...
Searching...
No Matches
memory_generic.h
Go to the documentation of this file.
1/***************************************************************************\
2* Copyright (c) 2023, Sofie Martins *
3* All rights reserved. *
4\***************************************************************************/
5
11#ifndef MEMORY_GENERIC_H
12#define MEMORY_GENERIC_H
13
14//#include "random.h"
15//#include "utils.h"
16
17#define alloc(_s1, _n, _geom) \
18 _Generic((_s1), \
19 spinor_field *: alloc_spinor_field(_n, _geom), \
20 spinor_field_flt *: alloc_spinor_field_flt(_n, _geom), \
21 scalar_field *: alloc_scalar_field(_n, _geom), \
22 suNg_field *: alloc_n_suNg_field(_n, _geom), \
23 suNf_field *: alloc_n_suNf_field(_n, _geom), \
24 suNfc_field *: alloc_n_suNfc_field(_n, _geom), \
25 suNg_field_flt *: alloc_n_suNg_field_flt(_n, _geom), \
26 suNf_field_flt *: alloc_n_suNf_field_flt(_n, _geom), \
27 suNg_scalar_field *: alloc_n_suNg_scalar_field(_n, _geom), \
28 suNg_av_field *: alloc_n_suNg_av_field(_n, _geom), \
29 gtransf *: alloc_n_gtransf(_n, _geom), \
30 clover_term *: alloc_n_clover_term(_n, _geom), \
31 clover_force *: alloc_n_clover_force(_n, _geom), \
32 staple_field *: alloc_n_staple_field(_n, _geom))
33
34#define free_field(s1) \
35 _Generic((s1), \
36 spinor_field *: free_spinor_field((spinor_field *)s1), \
37 spinor_field_flt *: free_spinor_field_flt((spinor_field_flt *)s1), \
38 scalar_field *: free_scalar_field((scalar_field *)s1), \
39 suNg_field *: free_suNg_field((suNg_field *)s1), \
40 suNf_field *: free_suNf_field((suNf_field *)s1), \
41 suNfc_field *: free_suNfc_field((suNfc_field *)s1), \
42 suNg_field_flt *: free_suNg_field_flt((suNg_field_flt *)s1), \
43 suNf_field_flt *: free_suNf_field_flt((suNf_field_flt *)s1), \
44 suNg_scalar_field *: free_suNg_scalar_field((suNg_scalar_field *)s1), \
45 suNg_av_field *: free_suNg_av_field((suNg_av_field *)s1), \
46 gtransf *: free_gtransf((gtransf *)s1), \
47 clover_term *: free_clover_term((clover_term *)s1), \
48 clover_force *: free_clover_force((clover_force *)s1), \
49 staple_field *: free_staple_field((staple_field *)s1))
50
51#ifdef WITH_GPU
52#define copy_to_gpu(s1) \
53 _Generic((s1), \
54 spinor_field *: copy_to_gpu_spinor_field((spinor_field *)s1), \
55 spinor_field_flt *: copy_to_gpu_spinor_field_flt((spinor_field_flt *)s1), \
56 scalar_field *: copy_to_gpu_scalar_field((scalar_field *)s1), \
57 suNg_field *: copy_to_gpu_suNg_field((suNg_field *)s1), \
58 suNf_field *: copy_to_gpu_suNf_field((suNf_field *)s1), \
59 suNfc_field *: copy_to_gpu_suNfc_field((suNfc_field *)s1), \
60 suNg_field_flt *: copy_to_gpu_suNg_field_flt((suNg_field_flt *)s1), \
61 suNf_field_flt *: copy_to_gpu_suNf_field_flt((suNf_field_flt *)s1), \
62 suNg_scalar_field *: copy_to_gpu_suNg_scalar_field((suNg_scalar_field *)s1), \
63 suNg_av_field *: copy_to_gpu_suNg_av_field((suNg_av_field *)s1), \
64 gtransf *: copy_to_gpu_gtransf((gtransf *)s1), \
65 clover_term *: copy_to_gpu_clover_term((clover_term *)s1), \
66 clover_force *: copy_to_gpu_clover_force((clover_force *)s1), \
67 staple_field *: copy_to_gpu_staple_field((staple_field *)s1))
68
69#define copy_from_gpu(s1) \
70 _Generic((s1), \
71 spinor_field *: copy_from_gpu_spinor_field((spinor_field *)s1), \
72 spinor_field_flt *: copy_from_gpu_spinor_field_flt((spinor_field_flt *)s1), \
73 scalar_field *: copy_from_gpu_scalar_field((scalar_field *)s1), \
74 suNg_field *: copy_from_gpu_suNg_field((suNg_field *)s1), \
75 suNf_field *: copy_from_gpu_suNf_field((suNf_field *)s1), \
76 suNfc_field *: copy_from_gpu_suNfc_field((suNfc_field *)s1), \
77 suNg_field_flt *: copy_from_gpu_suNg_field_flt((suNg_field_flt *)s1), \
78 suNf_field_flt *: copy_from_gpu_suNf_field_flt((suNf_field_flt *)s1), \
79 suNg_scalar_field *: copy_from_gpu_suNg_scalar_field((suNg_scalar_field *)s1), \
80 suNg_av_field *: copy_from_gpu_suNg_av_field((suNg_av_field *)s1), \
81 gtransf *: copy_from_gpu_gtransf((gtransf *)s1), \
82 clover_term *: copy_from_gpu_clover_term((clover_term *)s1), \
83 clover_force *: copy_from_gpu_clover_force((clover_force *)s1), \
84 staple_field *: copy_from_gpu_staple_field((staple_field *)s1))
85#endif
86
87#endif