HARM
harm and utilities
 All Data Structures Files Functions Variables Typedefs Macros Pages
mympi.definit.h
Go to the documentation of this file.
1 
8 // 1 = MPI-1
9 // 2 = MPI-2 (for non-blocking MPI-IO)
10 #define MPIVERSION 2 // choice
11 
12 // OpenMP spec version
13 #define OPENMPVERSION 2 // 2 or 3 (3.0 not often implemented)
14 
15 // whether to use ROMIO and whether to avoid fork()
16 #if(USEMPI==1)
17 #include <mpi.h>
18 // can't use ROMIO unless file system is shared across all CPUs (i.e. not BH)
19 // ROMIO for tungsten since problems with minmem method.
20 // Some systems problem with ROMIO as happens to some people: File locking failed in ADIOI_Set_lock.
21 // TACC's Lonestar can NOT do ROMIO properly (no file locking)
22 #define USEROMIO 1 // choice, whether to use ROMIO parallel I/O package
23 // below comes from compiler so tied to machine's MPI setup type
24 #define MPIAVOIDFORK (USINGMPIAVOIDFORK) // choice (avoids system/fork/etc calls)
25 #else
26 #define USEROMIO 0 // no choice
27 #define MPIAVOIDFORK 0 // always 0, can't have GM without MPI
28 #endif
29 
30 
31 // whether to put barrier before ROMIO write/read start so that avoids large unexpected messages on (e.g.) Cray Kraken NICS.
32 #define BARRIERROMIOPRE 1
33 
34 // see boundmpi.c sendrecv() for details
35 // 0 : no strong flow control
36 // 1 : simple handshake to ensure recv posts
37 // 2 : post recv before computations so very likely all recv's posted before send. [NOT YET -- requires careful handling of which boundary calls repeat and also need workbc space for each type want to have pre-post recv's.]
38 #define MPIFLOWCONTROL 0
39 
40 
41 
42 
43 // whether to simultaneously compute and transfer bc (i.e. actually use non-blocking with a purpose).
44 // -1: use old loop even, super NONONONO!
45 // 0: no
46 // 1: yes with if type loops over fewer loops
47 // 2: yes with more loops without if, more blocks
48 #define SIMULBCCALC -1
49 
50 
51 // first 1 is choice, but no choice when USINGOPENMP==1
52 #define MPIEQUALNONMPI (1 || USINGOPENMP)
53 // 0= relax condition for MPI to equal non-MPI
54 // 1= guarentee not only that MPI boundaries are transfered but that an MPI run is identical to non-MPI run.
55 
56 
57 // this is the total stencil half width, where sts is full stencil size as: (sts-1)/2 which represents the one-sided safetey size in number of zones
58 // 2 even for parabolic, due to magnetic field stencil!
59 #define SAFESIZE (2)
60