diff options
| author | MDBijman <matthijs@bijman.org> | 2017-01-24 12:15:26 +0100 |
|---|---|---|
| committer | MDBijman <matthijs@bijman.org> | 2017-01-24 12:15:26 +0100 |
| commit | 070ce923574dcc57435cb3fb2dfe86b6a38cd249 (patch) | |
| tree | ffd69a842ac4ad22aaf7161f923b9f0b47c7147a /Simulator/src/modeling/machine/Machine.cpp | |
Initial code commit with organized dependencies
Diffstat (limited to 'Simulator/src/modeling/machine/Machine.cpp')
| -rw-r--r-- | Simulator/src/modeling/machine/Machine.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/Simulator/src/modeling/machine/Machine.cpp b/Simulator/src/modeling/machine/Machine.cpp new file mode 100644 index 00000000..d7d4fac7 --- /dev/null +++ b/Simulator/src/modeling/machine/Machine.cpp @@ -0,0 +1,80 @@ +#include "modeling/machine/Machine.h" + +namespace Modeling +{ + Machine::Machine(int id) : busy(false), currentWorkload(), id(id) + {} + + void Machine::addCPU(CPU c) + { + cpus.push_back(c); + } + + void Machine::addGPU(GPU g) + { + gpus.push_back(g); + } + + void Machine::giveTask(Simulation::Workload* workload) + { + busy = true; + currentWorkload = workload; + } + + bool Machine::isBusy() const + { + return this->busy; + } + + uint32_t Machine::getSpeed() + { + int speed = 0; + for(auto cpu : cpus) + { + speed += cpu.getSpeed() * cpu.getCores(); + } + return speed; + } + + void Machine::work() + { + if(!currentWorkload) + return; + + currentWorkload->doOperations(static_cast<int>(getSpeed() * load)); + + temperature += load * temperatureIncrease; + //load = temperature < 70.0f ? 1.0f : 1.0f / (temperature - 69.0f); + load = 1.0f; + temperature = temperature > maxTemperature ? maxTemperature + : temperature < minTemperature ? minTemperature + : temperature; + } + + int Machine::getWorkloadId() const + { + if(currentWorkload) + return currentWorkload->getId(); + return 0; + } + + int Machine::getId() const + { + return this->id; + } + + float Machine::getTemperature() const + { + return this->temperature; + } + + int Machine::getMemory() const + { + return this->memory; + } + + float Machine::getLoad() const + { + return this->load; + } +} |
