16#include "Utils/generics.h"
18#define _BUFFER_BOX_FOR(_L, _body) \
19 box_t *_L = geometryBoxes->next; \
21 geometry_descriptor *type = f->type; \
22 int nbuffers = _NUMBER_OF_BUFFERS(type, _GEOM_TYPE); \
23 if (type == &glattice) { nbuffers /= 2; } \
24 while (_L && i < nbuffers) { \
30#define _GPU_FIELD_BLK(s, i) (((s)->gpu_ptr) + ((s)->type->master_start[(i)] - (s)->type->master_shift))
31#define _GPU_4FIELD_BLK(s, i) (((s)->gpu_ptr) + 4 * ((s)->type->master_start[(i)]))
32#define _GPU_DFIELD_BLK(s, i, size) (((s)->gpu_ptr) + size * ((s)->type->master_start[(i)] - (s)->type->master_shift))
34#define _BUF_GPU_FIELD_BLK(s, i) (((s)->gpu_ptr) + ((s)->type->rbuf_start[(i)] - (s)->type->master_shift))
35#define _BUF_GPU_4FIELD_BLK(s, i) (((s)->gpu_ptr) + 4 * ((s)->type->rbuf_start[(i)] - (s)->type->master_shift))
36#define _BUF_GPU_DFIELD_BLK(s, i, size) (((s)->gpu_ptr) + size * ((s)->type->rbuf_start[(i)] - (s)->type->master_shift))
38#define find_neighbor(_ix, _dir, _mu, _iup_gpu, _idn_gpu) \
39 ((_dir == UP) ? (_iup_gpu)[4 * (_ix) + _mu] : (_idn_gpu)[4 * (_ix) + _mu])
40#define _DIR(MASK) ((MASK & UP_MASK) ? UP : DOWN)
41#define _MU(MASK) ((MASK & T_MASK) ? 0 : (MASK & X_MASK) ? 1 : (MASK & Y_MASK) ? 2 : 3)
44#define _KERNEL_PIECE_FOR(_piece) for (int _piece = EVEN; _piece <= ODD; _piece++)
46#define _IF_IN_BOX_IN(_input, _piece) \
47 if (_input->gd_in & piece) \
48 if (blockIdx.x * BLOCK_SIZE + threadIdx.x < _input->vol_in[piece - 1])
50#define _IF_IN_BOX_OUT(_input, _piece) \
51 if (_input->gd_in & piece) \
52 if (blockIdx.x * BLOCK_SIZE + threadIdx.x < _input->vol_out[piece - 1])
61 size_t master_shift_in;
67 size_t master_shift_out;
Functions needed for the new geometry implementation that will replace the current geometry in the fu...