- * @param constraint The lmm constraint associated to this Cpu if it is part of a LMM component
- * @param speedPerPstate Processor speed (in flop per second) for each pstate
- * @param core The number of core of this Cpu
+ * @param speed_per_pstate Processor speed (in flop per second) for each pstate
+ */
+ CpuImpl(s4u::Host* host, const std::vector<double>& speed_per_pstate);
+
+ CpuImpl(const CpuImpl&) = delete;
+ CpuImpl& operator=(const CpuImpl&) = delete;
+
+ /** @brief Public interface */
+ s4u::Host* get_iface() const { return piface_; }
+
+ CpuImpl* set_core_count(int core_count);
+ virtual int get_core_count() const { return core_count_; }
+
+ void seal() override;
+
+ /** @brief Get a forecast of the speed (in flops/s) if the load were as provided.
+ *
+ * The provided load should encompasses both the application's activities and the external load that come from a
+ * trace.
+ *
+ * Use a load of 1.0 to compute the amount of flops that the Cpu would deliver with one CPU-bound task.
+ * If you use a load of 0, this function will return 0: when nobody is using the Cpu, it delivers nothing.
+ *
+ * If you want to know the amount of flops currently delivered, use load = get_load()*get_speed_ratio()