HiRep 0.1
Loading...
Searching...
No Matches
spinor_field.h
Go to the documentation of this file.
1/***************************************************************************\
2* Copyright (c) 2008, 2022, Claudio Pica, Sofie Martins *
3* All rights reserved. *
4\***************************************************************************/
5
13#ifndef SPINOR_FIELD_H
14#define SPINOR_FIELD_H
15
17#include "suN_types.h"
18#ifdef WITH_MPI
19#include "hr_mpi.h"
20#endif
21
22/* Communications */
23typedef enum comm_t { CPU_COMM = 1 << 0, GPU_COMM = 1 << 1 } comm_t;
24#define ALL_COMMS (CPU_COMM | GPU_COMM)
25
26/* Memory */
27typedef enum mem_t { CPU_MEM = 1 << 0, GPU_MEM = 1 << 1 } mem_t;
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
40#define _GPU_FIELD_DATA(_type)
41#ifdef WITH_GPU
42#undef _GPU_FIELD_DATA
43#define _GPU_FIELD_DATA(_type) _type *gpu_ptr;
44#endif
45
51#define _MPI_FIELD_DATA(_type)
52#ifdef WITH_MPI
53#undef _MPI_FIELD_DATA
54#define _MPI_FIELD_DATA(_type) \
55 MPI_Request *comm_req; \
56 _type *sendbuf_ptr; \
57 _type *sendbuf_gpu_ptr; \
58 _type *recvbuf_gpu_ptr;
59
60//
61#endif
62
70#define _DECLARE_FIELD_STRUCT(_name, _type) \
71 typedef struct _name { \
72 _type *ptr; \
73 geometry_descriptor *type; \
74 int field_dim; \
75 _MPI_FIELD_DATA(_type) \
76 _GPU_FIELD_DATA(_type) \
77 comm_t comm_type; \
78 mem_t alloc_t; \
79 } _name
80
99
118
136
154
172
190
208
225
241
257
273
289
305
321
337
338#define _FIELD_TYPE spinor_field
339#define _FIELD_DIM 1
340#include "TMPL/spinor_field.h.tmpl"
341
342#define _FIELD_TYPE spinor_field_flt
343#define _FIELD_DIM 1
344#include "TMPL/spinor_field.h.tmpl"
345
346#define _FIELD_TYPE scalar_field
347#define _FIELD_DIM 1
348#include "TMPL/spinor_field.h.tmpl"
349
350#define _FIELD_TYPE suNg_field
351#define _FIELD_DIM 4
352#include "TMPL/spinor_field.h.tmpl"
353
354#define _FIELD_TYPE suNg_field_flt
355#define _FIELD_DIM 4
356#include "TMPL/spinor_field.h.tmpl"
357
358#define _FIELD_TYPE suNf_field
359#define _FIELD_DIM 4
360#include "TMPL/spinor_field.h.tmpl"
361
362#define _FIELD_TYPE suNf_field_flt
363#define _FIELD_DIM 4
364#include "TMPL/spinor_field.h.tmpl"
365
366#define _FIELD_TYPE suNg_scalar_field
367#define _FIELD_DIM 1
368#include "TMPL/spinor_field.h.tmpl"
369
370#define _FIELD_TYPE suNg_av_field
371#define _FIELD_DIM 4
372#include "TMPL/spinor_field.h.tmpl"
373
374#define _FIELD_TYPE gtransf
375#define _FIELD_DIM 1
376#include "TMPL/spinor_field.h.tmpl"
377
378#define _FIELD_TYPE ldl_field
379#define _FIELD_DIM 1
380#include "TMPL/spinor_field.h.tmpl"
381
382#define _FIELD_TYPE clover_term
383#define _FIELD_DIM 4
384#include "TMPL/spinor_field.h.tmpl"
385
386#define _FIELD_TYPE clover_force
387#define _FIELD_DIM 6
388#include "TMPL/spinor_field.h.tmpl"
389
390#define _FIELD_TYPE staple_field
391#define _FIELD_DIM 3
392#include "TMPL/spinor_field.h.tmpl"
393
394#ifdef __cplusplus
395}
396#endif
397#endif
Geometry descriptor struct, that contains all necessary information for multi-node/ multi-GPU calcula...
Setup for mpi.
#define _DECLARE_FIELD_STRUCT(_name, _type)
This macro declares a field struct that contains all necessary field data arrays, geometry informatio...
Definition spinor_field.h:70
Clover Force.
Definition spinor_field.h:304
Clover term.
Definition spinor_field.h:288
Gauge transformation.
Definition spinor_field.h:336
LDL decomposition field needed for clover improvement.
Definition spinor_field.h:256
Scalar field of double precision real values.
Definition spinor_field.h:240
Spinor field array containing single precision SU(N_f) spinors in chosen fermion representation.
Definition spinor_field.h:207
Spinor field array containing SU(N_f) spinors in chosen fermion representation.
Definition spinor_field.h:189
Staple field for Luescher-Weisz
Definition spinor_field.h:320
Single precision gauge field in the chosen fermion representation.
Definition spinor_field.h:171
Gauge field in chosen fermion representation.
Definition spinor_field.h:153
Complexified su(N_f) field field.
Definition spinor_field.h:272
Field of SU(N_g) algebra vectors.
Definition spinor_field.h:224
Gauge field of single precision SU(N_g) matrices.
Definition spinor_field.h:135
Gauge field of SU(N_g) matrices.
Definition spinor_field.h:98
SU(N_g) scalar field of SU(N_g) vectors.
Definition spinor_field.h:117