X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e68d03f1f2c0206497381c7ef3b91bd5d46f1964..031334b15ce9ce7e6a4d40d57c8bb80dbb14fec5:/src/surf/cpu_ti.hpp diff --git a/src/surf/cpu_ti.hpp b/src/surf/cpu_ti.hpp index e08d5ca663..17940d84e5 100644 --- a/src/surf/cpu_ti.hpp +++ b/src/surf/cpu_ti.hpp @@ -4,6 +4,8 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ +#include + #include "cpu_interface.hpp" #include "trace_mgr_private.h" #include "surf/surf_routing.h" @@ -11,14 +13,17 @@ /* Epsilon */ #define EPSILON 0.000000001 +namespace simgrid { +namespace surf { + /*********** * Classes * ***********/ -class CpuTiTrace; -class CpuTiTgmr; -class CpuTiModel; -class CpuTi; -class CpuTiAction; +class XBT_PRIVATE CpuTiTrace; +class XBT_PRIVATE CpuTiTgmr; +class XBT_PRIVATE CpuTiModel; +class XBT_PRIVATE CpuTi; +class XBT_PRIVATE CpuTiAction; struct tiTag; @@ -27,7 +32,7 @@ struct tiTag; *********/ class CpuTiTrace { public: - CpuTiTrace(tmgr_trace_t powerTrace); + CpuTiTrace(tmgr_trace_t speedTrace); ~CpuTiTrace(); double integrateSimple(double a, double b); @@ -38,20 +43,20 @@ public: double *p_integral; int m_nbPoints; int binarySearch(double *array, double a, int low, int high); - -private: }; enum trace_type { TRACE_FIXED, /*< Trace fixed, no availability file */ - TRACE_DYNAMIC /*< Dynamic, availability file disponible */ + TRACE_DYNAMIC /*< Dynamic, have an availability file */ }; class CpuTiTgmr { public: - CpuTiTgmr(trace_type type, double value): m_type(type), m_value(value){}; - CpuTiTgmr(tmgr_trace_t power_trace, double value); + CpuTiTgmr(trace_type type, double value) + : m_type(type), m_value(value) + {}; + CpuTiTgmr(tmgr_trace_t speedTrace, double value); ~CpuTiTgmr(); double integrate(double a, double b); @@ -60,14 +65,14 @@ public: double getPowerScale(double a); trace_type m_type; - double m_value; /*< Percentage of cpu power disponible. Value fixed between 0 and 1 */ + double m_value; /*< Percentage of cpu speed available. Value fixed between 0 and 1 */ /* Dynamic */ - double m_lastTime; /*< Integral interval last point (discret time) */ - double m_total; /*< Integral total between 0 and last_pointn */ + double m_lastTime = 0.0; /*< Integral interval last point (discrete time) */ + double m_total = 0.0; /*< Integral total between 0 and last_pointn */ - CpuTiTrace *p_trace; - tmgr_trace_t p_powerTrace; + CpuTiTrace *p_trace = nullptr; + tmgr_trace_t p_speedTrace = nullptr; }; /********** @@ -76,29 +81,25 @@ public: class CpuTiAction: public CpuAction { friend class CpuTi; - // friend CpuAction *CpuTi::execute(double size); - // friend CpuAction *CpuTi::sleep(double duration); - // friend void CpuTi::updateActionsFinishTime(double now);//FIXME - // friend void CpuTi::updateRemainingAmount(double now);//FIXME public: CpuTiAction(CpuTiModel *model, double cost, bool failed, CpuTi *cpu); - void setState(e_surf_action_state_t state); - int unref(); - void cancel(); + void setState(e_surf_action_state_t state) override; + int unref() override; + void cancel() override; void updateIndexHeap(int i); - void suspend(); - void resume(); - bool isSuspended(); - void setMaxDuration(double duration); - void setPriority(double priority); - double getRemains(); - void setAffinity(Cpu * /*cpu*/, unsigned long /*mask*/) {}; + void suspend() override; + void resume() override; + bool isSuspended() override; + void setMaxDuration(double duration) override; + void setPriority(double priority) override; + double getRemains() override; + void setAffinity(Cpu * /*cpu*/, unsigned long /*mask*/) override {}; CpuTi *p_cpu; int m_indexHeap; - int m_suspended; + int m_suspended = 0; public: boost::intrusive::list_member_hook<> action_ti_hook; }; @@ -113,31 +114,24 @@ typedef boost::intrusive::list< ************/ class CpuTi : public Cpu { public: - CpuTi() {}; - CpuTi(CpuTiModel *model, const char *name, xbt_dynar_t powerPeak, - int pstate, double powerScale, tmgr_trace_t powerTrace, int core, - e_surf_resource_state_t stateInitial, tmgr_trace_t stateTrace, - xbt_dict_t properties) ; + CpuTi(CpuTiModel *model, simgrid::Host *host, xbt_dynar_t speedPeak, + int pstate, double speedScale, tmgr_trace_t speedTrace, int core, + e_surf_resource_state_t stateInitial, tmgr_trace_t stateTrace) ; ~CpuTi(); - void updateState(tmgr_trace_event_t event_type, double value, double date); + void updateState(tmgr_trace_event_t event_type, double value, double date) override; void updateActionsFinishTime(double now); - bool isUsed(); + bool isUsed() override; void printCpuTiModel(); - CpuAction *execute(double size); - CpuAction *sleep(double duration); - double getAvailableSpeed(); - - double getCurrentPowerPeak() {THROW_UNIMPLEMENTED;}; - double getPowerPeakAt(int /*pstate_index*/) {THROW_UNIMPLEMENTED;}; - int getNbPstates() {THROW_UNIMPLEMENTED;}; - void setPstate(int /*pstate_index*/) {THROW_UNIMPLEMENTED;}; - int getPstate() { THROW_UNIMPLEMENTED;} + CpuAction *execute(double size) override; + CpuAction *sleep(double duration) override; + double getAvailableSpeed() override; + void modified(bool modified); CpuTiTgmr *p_availTrace; /*< Structure with data needed to integrate trace file */ tmgr_trace_event_t p_stateEvent; /*< trace file with states events (ON or OFF) */ - tmgr_trace_event_t p_powerEvent; /*< trace file with availability events */ + tmgr_trace_event_t p_speedEvent; /*< trace file with availability events */ ActionTiList *p_actionSet; /*< set with all actions running on cpu */ double m_sumPriority; /*< the sum of actions' priority that are running on cpu */ double m_lastUpdate; /*< last update of actions' remaining amount done */ @@ -160,25 +154,27 @@ class CpuTiModel : public CpuModel { public: CpuTiModel(); ~CpuTiModel(); - Cpu *createCpu(const char *name, xbt_dynar_t powerPeak, - int pstate, double power_scale, - tmgr_trace_t power_trace, int core, + Cpu *createCpu(simgrid::Host *host, xbt_dynar_t speedPeak, + int pstate, double speedScale, + tmgr_trace_t speedTrace, int core, e_surf_resource_state_t state_initial, - tmgr_trace_t state_trace, - xbt_dict_t cpu_properties); - double shareResources(double now); - void updateActionsState(double now, double delta); - void addTraces(); + tmgr_trace_t state_trace); + double shareResources(double now) override; + void updateActionsState(double now, double delta) override; + void addTraces() override; ActionList *p_runningActionSetThatDoesNotNeedBeingChecked; CpuTiList *p_modifiedCpu; xbt_heap_t p_tiActionHeap; protected: - void NotifyResourceTurnedOn(Resource*){}; - void NotifyResourceTurnedOff(Resource*){}; + void NotifyResourceTurnedOn(simgrid::surf::Resource*){}; + void NotifyResourceTurnedOff(simgrid::surf::Resource*){}; void NotifyActionCancel(Action*){}; void NotifyActionResume(Action*){}; void NotifyActionSuspend(Action*){}; }; + +} +}