HARM
harm and utilities
 All Data Structures Files Functions Variables Typedefs Macros Pages
mympi.global.depmnemonics.h
Go to the documentation of this file.
1 
6 #if(USEMPI==0)
7 
8 // still use MPI data type for communicating types to functions
9 typedef int MPI_Datatype;
10 #define MPI_CHAR ((MPI_Datatype)1)
11 #define MPI_UNSIGNED_CHAR ((MPI_Datatype)2)
12 #define MPI_BYTE ((MPI_Datatype)3)
13 #define MPI_SHORT ((MPI_Datatype)4)
14 #define MPI_UNSIGNED_SHORT ((MPI_Datatype)5)
15 #define MPI_INT ((MPI_Datatype)6)
16 #define MPI_UNSIGNED ((MPI_Datatype)7)
17 #define MPI_LONG ((MPI_Datatype)8)
18 #define MPI_UNSIGNED_LONG ((MPI_Datatype)9)
19 #define MPI_FLOAT ((MPI_Datatype)10)
20 #define MPI_DOUBLE ((MPI_Datatype)11)
21 #define MPI_LONG_DOUBLE ((MPI_Datatype)12)
22 #define MPI_LONG_LONG_INT ((MPI_Datatype)13)
23 
24 // fake non-MPI types to avoid USEMPI==0 conditionals on function calls
25 #define MPI_Request int
26 #define MPI_Status int
27 
28 #define MPI_COMM_WORLD 0
29 #define MPI_COMM_GRMHD 1
30 
31 #define MPI_STATUS_IGNORE 0
32 
33 #define MPI_Irecv(buf,size,datatype,id,tag,comm,request)
34 #define MPI_Isrecv(buf,size,datatype,id,tag,comm,request)
35 #define MPI_Isend(buf,size,datatype,id,tag,comm,request)
36 #define MPI_Issend(buf,size,datatype,id,tag,comm,request)
37 #define MPI_Sendrecv(addrs,sizes,datatypes,ids,tags, addrr,sizer,datatyper,idr,tagr,comm,status)
38 #define MPI_Wait(req,status)
39 #define MPI_Bcast(add,size,datatype,id,comm)
40 
41 #endif
42 
43 // need not change below datatype stuff
44 #if(REALTYPE==FLOATTYPE)
45 #define MPI_FTYPE MPI_FLOAT
46 #elif(REALTYPE==DOUBLETYPE)
47 #define MPI_FTYPE MPI_DOUBLE
48 #elif(REALTYPE==LONGDOUBLETYPE)
49 #define MPI_FTYPE MPI_LONG_DOUBLE
50 #endif
51 
52 
53 #if(SENSITIVE==FLOATTYPE) // for sensitive counters
54 #define MPI_SFTYPE MPI_FLOAT
55 #elif(SENSITIVE==DOUBLETYPE)
56 #define MPI_SFTYPE MPI_DOUBLE
57 #elif(SENSITIVE==LONGDOUBLETYPE)
58 #define MPI_SFTYPE MPI_LONG_DOUBLE
59 #endif
60 
61 #if(COUNTTYPE==DOUBLETYPE)
62 #define MPI_CTYPE MPI_DOUBLE
63 #elif(COUNTTYPE==LONGLONGINTTYPE)
64 #define MPI_CTYPE MPI_LONG_LONG_INT
65 #endif
66 
67 
68 #if(PFLAGTYPE==INTTYPE)
69 #define MPI_PFTYPE MPI_INT
70 #elif(PFLAGTYPE==CHARTYPE)
71 #define MPI_PFTYPE MPI_CHAR
72 #endif
73 
74 
75 
76 // This forces file dumping and reading to be always in same format w.r.t. user-basis (N1,N2,N3) rather than how memory stored that could be arbitrary with ORDERSTORAGE
77 // This forces storage to be i fastest, j slower, and k slowest
78 //
79 #define BUFFERMAP ((long long int)bufferoffset+(long long int)(k*N1*N2+j*N1+i)*(long long int)numcolumns+(long long int)nextbuf++)
80 #define BUFFERMAP2 ((long long int)k*N1*N2+(long long int)j*N1+(long long int)i)
81 #define BUFFERINIT0 bufferoffset=0
82 // mpi uses BUFFERINIT in global.h as well
83 
84 
85 
86 
87 
88 // MPIFLOWCONTROL setup
89 // for MPIFLOWCONTROL==2, setup global tag space *and* non-overlapping buffer spaces for recv's.
90 // So can pre-post recv's long before sends, so to avoid unexpected buffers filling up and/or direct write to application buffer.
91 #if(MPIFLOWCONTROL==2 || 1)
92 // bound_flux requires global tag space for even simple separate pre-post recv's.
93 
94 // not setup because requires workbc separate for each bound call in normal computational loop
95 
96 #define TAGSTARTBOUNDMPI (0) // numprocs*COMPDIM*2 in size
97 #define TAGSTARTBOUNDMPIINT (TAGSTARTBOUNDMPI + numprocs*COMPDIM*2) // numprocs*COMPDIM*2 in size
98 #define TAGSTARTBOUNDMPIPOLESMOOTH (TAGSTARTBOUNDMPIINT + numprocs*COMPDIM*2) // 2*numprocs*ncpux3 in size
99 #define TAGSTARTFRDOT (TAGSTARTBOUNDMPIPOLESMOOTH + 2*numprocs*ncpux3) // numprocs in size
100 
101 #else
102 
103 #define TAGSTARTBOUNDMPI (0)
104 #define TAGSTARTBOUNDMPIINT (0)
105 #define TAGSTARTBOUNDMPIPOLESMOOTH (0)
106 #define TAGSTARTFRDOT (0) // numprocs in size
107 
108 #endif