4# define SINGLE_PRECISION 0
6# define SINGLE_PRECISION 1
9#define GRIDNAME "Multigrid (GPU)"
10#define GRIDPARENT Multigrid
11#define shift_level(d) (multigrid->shift[d])
12#define field_size() (multigrid->shift[depth() + 1])
13#define grid_data() (multigrid->d)
14#define field_offset(s, level) (shift_level((level) ? (level) - 1 : depth()) + (s).i*field_size())
17 "#define valt(s,k,l,m)" \
18 " _data_val(_index(s,m), point.j + (l) + " \
19 " (point.i + (k))*(point.n.y + 2*GHOSTS) + _shift[point.level])\n" \
20 "#define val_red_(s) _data_val((s).i, point.j - GHOSTS +" \
21 " (point.i - GHOSTS)*NY + _shift[point.level])\n" \
22 "#define fine(a,k,l,m)" \
23 " _data_val(_index(a,m), 2*point.j - GHOSTS + (l) +" \
24 " (2*point.i - GHOSTS + (k))*(point.n.y*2 + 2*GHOSTS) +" \
25 " _shift[point.level + 1])\n" \
26 "#define coarse(a,k,l,m)" \
27 " _data_val(_index(a,m), (point.j + GHOSTS)/2 + (l) +" \
28 " ((point.i + GHOSTS)/2 + (k))*(point.n.y/2 + 2*GHOSTS) +" \
29 " _shift[point.level - 1])\n"
33#include "../multigrid.h"
34#include "../stencils.h"
36#include "../multigrid-common.h"
void(* boundary_level)(scalar *, int l)
static void gpu_multigrid_methods()
void gpu_boundary_level(scalar *list, int l)