1 #include "workstation.hpp"
3 #ifndef WORKSTATION_L07_HPP_
4 #define WORKSTATION_L07_HPP_
10 class WorkstationL07Model;
11 typedef WorkstationL07Model *WorkstationL07ModelPtr;
14 typedef CpuL07 *CpuL07Ptr;
17 typedef LinkL07 *LinkL07Ptr;
19 class WorkstationL07ActionLmm;
20 typedef WorkstationL07ActionLmm *WorkstationL07ActionLmmPtr;
22 /*FIXME:class WorkstationActionLmm;
23 typedef WorkstationActionLmm *WorkstationActionLmmPtr;*/
32 class WorkstationL07Model : public WorkstationModel {
34 WorkstationL07Model();
35 void parseInit(sg_platf_host_cbarg_t host);
36 WorkstationCLM03Ptr createCpuResource(const char *name, double power_scale,
38 tmgr_trace_t power_trace,
39 e_surf_resource_state_t state_initial,
40 tmgr_trace_t state_trace,
41 xbt_dict_t cpu_properties);
42 WorkstationCLM03Ptr createLinkResource(const char *name,
44 tmgr_trace_t bw_trace,
46 tmgr_trace_t lat_trace,
47 e_surf_resource_state_t
49 tmgr_trace_t state_trace,
50 e_surf_link_sharing_policy_t
51 policy, xbt_dict_t properties);
52 double shareResources(double now);
53 void updateActionsState(double now, double delta);
56 ActionPtr executeParallelTask(int workstation_nb,
57 void **workstation_list,
58 double *computation_amount,
59 double *communication_amount,
61 xbt_dynar_t getRoute(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst);
62 ActionPtr communicate(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst, double size, double rate);
65 class NetworkL07Model : public NetworkCm02Model {
67 NetworkL07Model(): NetworkCm02Model() {};
68 xbt_dynar_t getRoute(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst) {DIE_IMPOSSIBLE;};
69 ActionPtr communicate(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst, double size, double rate) {DIE_IMPOSSIBLE;};
70 void addTraces() {DIE_IMPOSSIBLE;};
77 class CpuL07 : public WorkstationCLM03Lmm {
79 CpuL07(WorkstationL07ModelPtr model, const char* name, xbt_dict_t properties);
81 void updateState(tmgr_trace_event_t event_type, double value, double date);
82 e_surf_resource_state_t getState();
83 double getSpeed(double load);
84 double getAvailableSpeed();
85 ActionPtr execute(double size);
86 ActionPtr sleep(double duration);
88 double m_powerCurrent;
89 RoutingEdgePtr p_info;
92 class LinkL07 : public WorkstationCLM03Lmm {
94 LinkL07(WorkstationL07ModelPtr model, const char* name, xbt_dict_t props);
96 void updateState(tmgr_trace_event_t event_type, double value, double date);
97 double getBandwidth();
102 tmgr_trace_event_t p_latEvent;
104 tmgr_trace_event_t p_bwEvent;
110 class WorkstationL07ActionLmm : public WorkstationActionLmm {
112 WorkstationL07ActionLmm(ModelPtr model, double cost, bool failed): WorkstationActionLmm(model, cost, failed) {};
113 ~WorkstationL07ActionLmm();
122 void setMaxDuration(double duration);
123 void setPriority(double priority);
127 WorkstationCLM03Ptr *p_workstationList;
128 double *p_computationAmount;
129 double *p_communicationAmount;
134 #endif /* WORKSTATION_L07_HPP_ */