• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

sst/elements/PHXSimC/PHXEvent.h

00001 #ifndef _PHXEVENT_H
00002 #define _PHXEVENT_H
00003 
00004 #include <sst/core/event.h>
00005 
00006 // recording structures
00007 // records 3 addresses: CV, I, and X
00008 // CV and I can be fetched immediately, X depends on I
00009 struct matVecAddrList {
00010   vector<unsigned int> CV, I, X;
00011   unsigned int sum;
00012 };
00013 
00014 struct forceCAddrList {
00015   vector<unsigned int> inits; // read
00016   vector<unsigned int> a_fs;  // read then write
00017 };
00018 
00019 struct pagerankAddrList {
00020   vector<unsigned int> inits; // read
00021   vector<unsigned int> neigh; //read
00022   vector<unsigned int> care_neigh; //read
00023   int num_care_neigh;
00024   unsigned int total;
00025 };
00026 
00027 typedef enum {MATVEC,FORCE_CALC,RESET,PAGERANK,LAST_EVENT} PHXEventType_t;
00028 typedef enum {INIT,
00029 
00030               /* MATVEC states */
00031               ISSUE_I_AND_CV,
00032               WAIT_I_AND_CV,
00033               ISSUE_X,
00034               WAIT_X,
00035 
00036               /* FORCE_CALC states */
00037               ISSUE_INITS,
00038               WAIT_INITS_AND_CALC,
00039               CHECK_BRANCH,
00040               CALC_FORCE,
00041               ISSUE_AF_READS,
00042               WAIT_AF_READS_AND_CALC,
00043               ISSUE_SENDS,
00044 
00045               /* PAGERANK */
00046               //ISSUE_INITS
00047               //CHECK_BRANCH
00048               ISSUE_NEIGH,
00049               WAIT_NEIGH,
00050               ISSUE_CARE_NEIGH,
00051               WAIT_CARE_NEIGH_AND_CALC,
00052               ISSUE_SEND,
00053               
00054               LAST_STATE
00055 
00056 } PHXEventState_t;
00057 
00058 class PHXEvent : public SST::Event {
00059 public:
00060   PHXEvent() : SST::Event() { }
00061   unsigned int eventID;
00062   PHXEventType_t eventType;
00063   PHXEventState_t state;
00064 
00065   matVecAddrList mvAddrs;
00066   forceCAddrList fAddrs;
00067   pagerankAddrList pAddrs;
00068   bool tookBranch;
00069   
00070 private:
00071   friend class boost::serialization::access;
00072   template<class Archive>
00073   void
00074   serialize(Archive & ar, const unsigned int version )
00075   {
00076     ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Event);
00077     ar & BOOST_SERIALIZATION_NVP(eventType);
00078   }
00079 }; 
00080     
00081 #endif

Generated on Fri Oct 22 2010 11:02:25 for SST by  doxygen 1.7.1