Adding connectivity information to fix a bug in accumulating to R_int
[charm.git] / src / libs / ck-libs / ParFUM-Tops / ParFUM_TOPS_CUDA.h
1 /**
2    @file
3    @brief A ParFUM "Tops" compatibility layer API Definition
4
5    @author Isaac Dooley and Aaron
6
7    ParFUM-TOPS provides a Tops-like API for ParFUM, meant to run on CUDA NVIDIA system.
8
9 */
10
11 #ifndef __PARFUM_TOPS_CUDA___H
12 #define __PARFUM_TOPS_CUDA___H
13 #ifdef CUDA
14
15 #include "ParFUM_TOPS_Types.h"
16 #include <cutil.h>
17
18 /** A TopModelDevice contains structures for use by CUDA kernels */
19 typedef struct {
20     unsigned node_attr_size;
21     unsigned elem_attr_size;
22     unsigned model_attr_size;
23
24     unsigned num_local_elem;
25     unsigned num_local_node;
26     
27     /** Device pointers to the goods */
28     void *mAttDevice;
29     void *ElemDataDevice;
30     void *NodeDataDevice;
31     int *ElemConnDevice;
32     int *n2eConnDevice;
33 } TopModelDevice;
34
35
36 #define topElement_D_GetAttrib(m, e) (((char*)(m)->ElemDataDevice) + (e)*(m)->elem_attr_size)
37
38 #define topNode_D_GetAttrib(m, e) (((char*)(m)->NodeDataDevice) + (e)*(m)->node_attr_size)
39
40 #define topElement_D_GetNode(m, e, idx) (((m)->ElemConnDevice)[e*4 + idx])
41
42 #endif
43 #endif