00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifdef __GNUC__
00029 #pragma interface
00030 #endif
00031
00032 #ifndef _util_group_pregtime_h
00033 #define _util_group_pregtime_h
00034
00035 #include <iostream>
00036 #include <util/misc/regtime.h>
00037 #include <util/group/message.h>
00038
00039 namespace sc {
00040
00041 class ParallelRegionTimer: public RegionTimer {
00042 protected:
00043 Ref<MessageGrp> msg_;
00044
00045 void send_subregions(int node, const TimedRegion *r) const;
00046 void recv_subregions(int node, TimedRegion *r) const;
00047 void all_reduce_regions() const;
00048
00049 public:
00050 ParallelRegionTimer(const Ref<MessageGrp>&,
00051 const char *topname = "total",
00052 int cpu_time = 0, int wall_time = 1);
00053 ParallelRegionTimer(const Ref<KeyVal>&);
00054 ~ParallelRegionTimer();
00055
00056 void print(std::ostream& = ExEnv::out0()) const;
00057 };
00058
00059 }
00060
00061 #endif
00062
00063
00064
00065
00066