1 #ifndef _GLOBALP_H_ 2 #define _GLOBALP_H_ 3 4 #include <stdio.h> 5 6 #include "gaconfig.h" 7 8 #ifdef __crayx1 9 #undef CRAY 10 #endif 11 12 #if HAVE_WINDOWS_H 13 # include <windows.h> 14 # define sleep(x) Sleep(1000*(x)) 15 #endif 16 17 #ifdef FALSE 18 #undef FALSE 19 #endif 20 #ifdef TRUE 21 #undef TRUE 22 #endif 23 #define FALSE (logical) 0 24 #define TRUE (logical) 1 25 26 #include "macdecls.h" 27 28 #define GA_OFFSET 1000 /* offset for handle numbering */ 29 30 /* types/tags of messages used internally by GA */ 31 #define GA_TYPE_SYN GA_MSG_OFFSET + 1 32 #define GA_TYPE_GSM GA_MSG_OFFSET + 5 33 #define GA_TYPE_GOP GA_MSG_OFFSET + 15 34 #define GA_TYPE_BRD GA_MSG_OFFSET + 16 35 36 /* GA operation ids */ 37 #define GA_OP_GET 1 /* Get */ 38 #define GA_OP_END 2 /* Terminate */ 39 #define GA_OP_CRE 3 /* Create */ 40 #define GA_OP_PUT 4 /* Put */ 41 #define GA_OP_ACC 5 /* Accumulate */ 42 #define GA_OP_DES 6 /* Destroy */ 43 #define GA_OP_DUP 7 /* Duplicate */ 44 #define GA_OP_ZER 8 /* Zero */ 45 #define GA_OP_DDT 9 /* dot product */ 46 #define GA_OP_SCT 10 /* scatter */ 47 #define GA_OP_GAT 11 /* gather */ 48 #define GA_OP_RDI 15 /* Integer read and increment */ 49 #define GA_OP_ACK 16 /* acknowledgment */ 50 #define GA_OP_LCK 17 /* acquire lock */ 51 #define GA_OP_UNL 18 /* release lock */ 52 53 54 #ifdef ENABLE_TRACE 55 static Integer op_code; 56 #endif 57 58 59 #define GA_MAX(a,b) (((a) >= (b)) ? (a) : (b)) 60 #define GA_MIN(a,b) (((a) <= (b)) ? (a) : (b)) 61 #define GA_ABS(a) (((a) >= 0) ? (a) : (-(a))) 62 63 typedef struct ga_typeinfo_t { 64 int active; 65 size_t size; 66 } ga_typeinfo_t; 67 68 extern ga_typeinfo_t ga_types[]; 69 70 #define GA_TYPES_MAX 256 71 #define GA_TYPES_RESERVED 17 /**Should match num lines initialized in ga_types struct*/ 72 73 #define GAtypebuiltinM(_type) ((_type)>=MT_BASE && (_type)<(MT_BASE+GA_TYPES_RESERVED)) 74 #define GAsizeofM(_type) ga_types[(_type)-MT_BASE].size 75 #define GAvalidtypeM(_type) ((_type)>=MT_BASE && (_type)<(MT_BASE+GA_TYPES_MAX) && ga_types[(_type)-MT_BASE].active!=0) 76 77 #define NAME_STACK_LEN 10 78 #define PAGE_SIZE 4096 79 80 struct ga_stat_t { 81 long numcre; 82 long numdes; 83 long numget; 84 long numput; 85 long numacc; 86 long numsca; 87 long numgat; 88 long numrdi; 89 long numser; 90 long curmem; 91 long maxmem; 92 long numget_procs; 93 long numput_procs; 94 long numacc_procs; 95 long numsca_procs; 96 long numgat_procs; 97 }; 98 99 struct ga_bytes_t{ 100 double acctot; 101 double accloc; 102 double gettot; 103 double getloc; 104 double puttot; 105 double putloc; 106 double rditot; 107 double rdiloc; 108 double gattot; 109 double gatloc; 110 double scatot; 111 double scaloc; 112 }; 113 114 #define STAT_AR_SZ sizeof(ga_stat_t)/sizeof(long) 115 116 extern long *GAstat_arr; 117 extern struct ga_stat_t GAstat; 118 extern struct ga_bytes_t GAbytes; 119 extern int _ga_sync_begin; 120 extern int _ga_sync_end; 121 extern int *_ga_argc; 122 extern char ***_ga_argv; 123 124 125 /* periodic operations */ 126 #define PERIODIC_GET 1 127 #define PERIODIC_PUT 2 128 #define PERIODIC_ACC 3 129 130 #define FLUSH_CACHE 131 #ifdef CRAY_T3D 132 # define ALLIGN_SIZE 32 133 #else 134 # define ALLIGN_SIZE 128 135 #endif 136 137 #define allign__(n, SIZE) (((n)%SIZE) ? (n)+SIZE - (n)%SIZE: (n)) 138 #define allign_size(n) allign__((long)(n), ALLIGN_SIZE) 139 #define allign_page(n) allign__((long)(n), PAGE_SIZE) 140 141 extern void ga_free(void *ptr); 142 extern void* ga_malloc(Integer nelem, int type, char *name); 143 extern void gai_init_onesided(); 144 extern void gai_finalize_onesided(); 145 extern void gai_print_subscript(char *pre,int ndim, Integer subscript[], char* post); 146 extern Integer GAsizeof(Integer type); 147 extern void ga_sort_gath(Integer *pn, Integer *i, Integer *j, Integer *base); 148 extern void ga_sort_permutation(Integer *pn, Integer *index, Integer *base); 149 extern void ga_sort_scat(Integer *pn, void *v, Integer *i, Integer *j, Integer *base, Integer type); 150 extern void gai_hsort(Integer *list, int num); 151 extern void ga_init_nbhandle(Integer *nbhandle); 152 extern int nga_test_internal(Integer *nbhandle); 153 extern int nga_wait_internal(Integer *nbhandle); 154 extern void gai_nb_init(); 155 extern int ga_icheckpoint_init(Integer *gas, int num); 156 extern int ga_icheckpoint(Integer *gas, int num); 157 extern int ga_irecover(int rid); 158 extern int ga_icheckpoint_finalize(int g_a); 159 extern void ga_checkpoint_arrays(Integer *gas,int num); 160 extern int ga_recover_arrays(Integer *gas, int num); 161 extern void set_ga_group_is_for_ft(int val); 162 extern void ga_set_spare_procs(int *spare); 163 164 #endif /* _GLOBALP_H_ */ 165