Several new changes
[charm.git] / src / ck-com / ComlibLearner.h
1 #ifndef COMLIBLEARNER_H
2 #define COMLIBLEARNER_H
3
4 #include "convcomlibstrategy.h"
5
6
7 /* Communication library learner which takes a strategy or a list of
8    strategies as input along with the communication pattern of the
9    objects belonging to those strategies and returns new strategies to
10    replace the input strategies. These new strategies optimize the
11    communication pattern. */
12
13 class ComlibGlobalStats;
14 class ComlibLearner {
15  public:
16     //Configures parameters of the learner. Will be called by the
17     //communication library on every processor after the second
18     //barrier of the communication library.
19     virtual void init() {}
20     
21     //Optimizes a specific strategy. Returns a new optimized strategy
22     virtual Strategy* optimizePattern(Strategy *strat, 
23                                       ComlibGlobalStats &sdata){
24         return NULL;
25     }
26     
27     //Optimizes the communication pattern of a group of strategies
28     //together
29     virtual Strategy** optimizePattern(Strategy **strat, 
30                                        ComlibGlobalStats &sdata){
31         return NULL;
32     }
33 };
34
35 #endif