changing comlib.h into convcomlib.h, and adding a new comlib.h file under
[charm.git] / src / conv-com / convcomlib.h
1
2 #ifndef COMLIB_H
3 #define COMLIB_H
4
5 #include <converse.h>
6 #include <stdlib.h>
7 #include <math.h>
8 #include "charm++.h"
9
10 #if CMK_BLUEGENE_CHARM
11 #define CmiReservedHeaderSize   CmiBlueGeneMsgHeaderSizeBytes
12 #else
13 #define CmiReservedHeaderSize   CmiExtHeaderSizeBytes
14 #endif
15
16 extern int comm_debug;
17 #if CMK_OPTIMIZE
18 inline void ComlibPrintf(...) {}
19 #else
20 #define ComlibPrintf if(comm_debug) CmiPrintf
21 #endif
22
23 enum{BCAST=0,TREE, GRID, HCUBE};  
24
25 #define USE_TREE 1            //Organizes the all to all as a tree
26 #define USE_MESH 2            //Virtual topology is a mesh here
27 #define USE_HYPERCUBE 3       //Virtual topology is a hypercube
28 #define USE_DIRECT 4          //A dummy strategy that directly forwards 
29                               //messages without any processing.
30 #define USE_GRID 5            //Virtual topology is a 3d grid
31 #define USE_LINEAR 6          //Virtual topology is a linear array
32 #define USE_PREFIX 7          //Prefix router to avoid contention
33
34 #define IS_BROADCAST -1
35 #define IS_SECTION_MULTICAST -2
36
37 #define MAXNUMMSGS 1000
38
39 #define PERSISTENT_BUFSIZE 65536
40
41 typedef struct {
42     int refno;
43     int instanceID;  
44     char isAllToAll;
45 } comID;
46
47 typedef struct {
48   int msgsize;
49   void *msg;
50 } msgstruct ;
51
52 typedef struct { 
53     char core[CmiReservedHeaderSize];
54     comID id;
55     int magic;
56     int refno;
57 } DummyMsg ;
58
59 //The handler to invoke the RecvManyMsg method of router
60 CkpvExtern(int, RecvHandle);
61 //The handler to invoke the ProcManyMsg method of router
62 CkpvExtern(int, ProcHandle);
63 //The handler to invoke the DoneEP method of router
64 CkpvExtern(int, DummyHandle);
65
66 //Dummy msg handle.
67 //Just deletes and ignores the message
68 CkpvExtern(int, RecvdummyHandle);
69
70 inline double cubeRoot(double d) {
71   return pow(d,1.0/3.0);
72 }
73
74
75 #include "router.h"
76
77 #endif
78         
79