From 413534bc9aac9b6a61840de0a20f933534552fd7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20B=C3=A9daride?= Date: Mon, 12 May 2014 11:00:41 +0200 Subject: [PATCH] Unify models apis --- .../java/surfCpuModel/CpuConstantModel.java | 2 +- .../java/org/simgrid/surf/CpuModel.java | 8 +- src/bindings/java/org/simgrid/surf/Model.java | 13 +- .../java/org/simgrid/surf/SurfJNI.java | 11 +- src/bindings/java/surf.i | 5 +- src/bindings/java/surfJAVA_wrap.cxx | 101 +++++------- src/bindings/java/surfJAVA_wrap.h | 4 +- src/bindings/java/surf_swig.cpp | 2 +- src/bindings/java/surfdoc.i | 2 +- src/include/surf/surf.h | 2 +- src/surf/cpu_cas01.cpp | 19 +-- src/surf/cpu_cas01.hpp | 5 +- src/surf/cpu_interface.cpp | 24 ++- src/surf/cpu_interface.hpp | 10 +- src/surf/cpu_ti.cpp | 6 +- src/surf/cpu_ti.hpp | 4 +- src/surf/network_cm02.cpp | 142 ++++++---------- src/surf/network_cm02.hpp | 3 +- src/surf/network_constant.hpp | 1 - src/surf/network_interface.cpp | 36 ++++ src/surf/network_interface.hpp | 7 +- src/surf/network_ns3.cpp | 4 +- src/surf/network_ns3.hpp | 3 +- src/surf/storage_interface.hpp | 2 +- src/surf/storage_n11.cpp | 4 +- src/surf/storage_n11.hpp | 3 +- src/surf/surf_c_bindings.cpp | 2 +- src/surf/surf_interface.cpp | 2 +- src/surf/surf_interface.hpp | 2 + src/surf/vm_workstation_hl13.cpp | 9 +- src/surf/vm_workstation_hl13.hpp | 9 +- src/surf/vm_workstation_interface.hpp | 15 +- src/surf/workstation_clm03.cpp | 15 +- src/surf/workstation_clm03.hpp | 3 +- src/surf/workstation_interface.cpp | 9 + src/surf/workstation_interface.hpp | 5 + src/surf/workstation_ptask_L07.cpp | 155 ++++-------------- src/surf/workstation_ptask_L07.hpp | 17 +- 38 files changed, 262 insertions(+), 404 deletions(-) diff --git a/examples/java/surfCpuModel/CpuConstantModel.java b/examples/java/surfCpuModel/CpuConstantModel.java index 7f7d418e75..fb2925a10c 100644 --- a/examples/java/surfCpuModel/CpuConstantModel.java +++ b/examples/java/surfCpuModel/CpuConstantModel.java @@ -14,7 +14,7 @@ public class CpuConstantModel extends CpuModel { Msg.info("Initialize Cpu Constant Model"); } - public Cpu createResource(String name, double[] power_peak, int pstate, double power_scale, TmgrTrace power_trace, int core, ResourceState state_initial, TmgrTrace state_trace, XbtDict cpu_properties) { + public Cpu createCpu(String name, double[] power_peak, int pstate, double power_scale, TmgrTrace power_trace, int core, ResourceState state_initial, TmgrTrace state_trace, XbtDict cpu_properties) { Msg.info("New Cpu("+name+", "+power_peak[pstate]+", "+power_scale+")"); CpuConstant res = new CpuConstant(this, name, cpu_properties, core, power_peak[pstate], power_scale); diff --git a/src/bindings/java/org/simgrid/surf/CpuModel.java b/src/bindings/java/org/simgrid/surf/CpuModel.java index 466308afbf..b5572a836a 100644 --- a/src/bindings/java/org/simgrid/surf/CpuModel.java +++ b/src/bindings/java/org/simgrid/surf/CpuModel.java @@ -81,13 +81,9 @@ public class CpuModel extends Model { * @return The new Cpu * @see Cpu */ - public Cpu createResource(String name, double[] power_peak, int pstate, double power_scale, TmgrTrace power_trace, int core, ResourceState state_initial, TmgrTrace state_trace, XbtDict cpu_properties) { - long cPtr = SurfJNI.CpuModel_createResource(swigCPtr, this, name, power_peak, pstate, power_scale, TmgrTrace.getCPtr(power_trace), power_trace, core, state_initial.swigValue(), TmgrTrace.getCPtr(state_trace), state_trace, XbtDict.getCPtr(cpu_properties), cpu_properties); + public Cpu createCpu(String name, double[] power_peak, int pstate, double power_scale, TmgrTrace power_trace, int core, ResourceState state_initial, TmgrTrace state_trace, XbtDict cpu_properties) { + long cPtr = SurfJNI.CpuModel_createCpu(swigCPtr, this, name, power_peak, pstate, power_scale, TmgrTrace.getCPtr(power_trace), power_trace, core, state_initial.swigValue(), TmgrTrace.getCPtr(state_trace), state_trace, XbtDict.getCPtr(cpu_properties), cpu_properties); return (Cpu)Surf.getCpuDirector(cPtr); } - public void addTraces() { - SurfJNI.CpuModel_addTraces(swigCPtr, this); - } - } diff --git a/src/bindings/java/org/simgrid/surf/Model.java b/src/bindings/java/org/simgrid/surf/Model.java index f1caaa3cbc..3e6e7f8eb3 100644 --- a/src/bindings/java/org/simgrid/surf/Model.java +++ b/src/bindings/java/org/simgrid/surf/Model.java @@ -46,15 +46,6 @@ public class Model { } - /** - * Model constructor - * @param name The name of the model - */ - public Model(String name) { - this(SurfJNI.new_Model(name), true); - } - - /** * @return The name of the model */ @@ -107,4 +98,8 @@ public class Model { return (cPtr == 0) ? null : new ActionList(cPtr, false); } + public void addTraces() { + SurfJNI.Model_addTraces(swigCPtr, this); + } + } diff --git a/src/bindings/java/org/simgrid/surf/SurfJNI.java b/src/bindings/java/org/simgrid/surf/SurfJNI.java index 040ca882d3..53cc07e823 100644 --- a/src/bindings/java/org/simgrid/surf/SurfJNI.java +++ b/src/bindings/java/org/simgrid/surf/SurfJNI.java @@ -71,7 +71,6 @@ public class SurfJNI { public final static native void delete_TmgrTrace(long jarg1); public final static native long TmgrTraceEvent_getIdx(long jarg1, TmgrTraceEvent jarg1_); public final static native void delete_TmgrTraceEvent(long jarg1); - public final static native long new_Model(String jarg1); public final static native String Model_getName(long jarg1, Model jarg1_); public final static native double Model_shareResources(long jarg1, Model jarg1_, double jarg2); public final static native double Model_shareResourcesLazy(long jarg1, Model jarg1_, double jarg2); @@ -80,11 +79,11 @@ public class SurfJNI { public final static native void Model_updateActionsStateLazy(long jarg1, Model jarg1_, double jarg2, double jarg3); public final static native void Model_updateActionsStateFull(long jarg1, Model jarg1_, double jarg2, double jarg3); public final static native long Model_getRunningActionSet(long jarg1, Model jarg1_); + public final static native void Model_addTraces(long jarg1, Model jarg1_); public final static native void delete_Model(long jarg1); public final static native long new_CpuModel(String jarg1); public final static native void delete_CpuModel(long jarg1); - public final static native long CpuModel_createResource(long jarg1, CpuModel jarg1_, String jarg2, double[] jarg3, int jarg4, double jarg5, long jarg6, TmgrTrace jarg6_, int jarg7, int jarg8, long jarg9, TmgrTrace jarg9_, long jarg10, XbtDict jarg10_); - public final static native void CpuModel_addTraces(long jarg1, CpuModel jarg1_); + public final static native long CpuModel_createCpu(long jarg1, CpuModel jarg1_, String jarg2, double[] jarg3, int jarg4, double jarg5, long jarg6, TmgrTrace jarg6_, int jarg7, int jarg8, long jarg9, TmgrTrace jarg9_, long jarg10, XbtDict jarg10_); public final static native void CpuModel_director_connect(CpuModel obj, long cptr, boolean mem_own, boolean weak_global); public final static native void CpuModel_change_ownership(CpuModel obj, long cptr, boolean take_or_release); public final static native String Resource_getName(long jarg1, Resource jarg1_); @@ -208,12 +207,12 @@ public class SurfJNI { public static long SwigDirector_CpuModel_getRunningActionSet(CpuModel self) { return ActionList.getCPtr(self.getRunningActionSet()); } - public static long SwigDirector_CpuModel_createResource(CpuModel self, String name, double[] power_peak, int pstate, double power_scale, long power_trace, int core, int state_initial, long state_trace, long cpu_properties) { - return Cpu.getCPtr(self.createResource(name, power_peak, pstate, power_scale, (power_trace == 0) ? null : new TmgrTrace(power_trace, false), core, ResourceState.swigToEnum(state_initial), (state_trace == 0) ? null : new TmgrTrace(state_trace, false), (cpu_properties == 0) ? null : new XbtDict(cpu_properties, false))); - } public static void SwigDirector_CpuModel_addTraces(CpuModel self) { self.addTraces(); } + public static long SwigDirector_CpuModel_createCpu(CpuModel self, String name, double[] power_peak, int pstate, double power_scale, long power_trace, int core, int state_initial, long state_trace, long cpu_properties) { + return Cpu.getCPtr(self.createCpu(name, power_peak, pstate, power_scale, (power_trace == 0) ? null : new TmgrTrace(power_trace, false), core, ResourceState.swigToEnum(state_initial), (state_trace == 0) ? null : new TmgrTrace(state_trace, false), (cpu_properties == 0) ? null : new XbtDict(cpu_properties, false))); + } public static boolean SwigDirector_Cpu_isUsed(Cpu self) { return self.isUsed(); } diff --git a/src/bindings/java/surf.i b/src/bindings/java/surf.i index 70006b3936..1c61df50a5 100644 --- a/src/bindings/java/surf.i +++ b/src/bindings/java/surf.i @@ -246,6 +246,8 @@ public: virtual void updateActionsStateFull(double now, double delta); virtual ActionList *getRunningActionSet(); + + virtual void addTraces()=0; }; %feature("director") CpuModel; @@ -253,13 +255,12 @@ class CpuModel : public Model { public: CpuModel(const char *name); virtual ~CpuModel(); - virtual Cpu *createResource(const char *name, DoubleDynar power_peak, + virtual Cpu *createCpu(const char *name, DoubleDynar power_peak, int pstate, double power_scale, tmgr_trace *power_trace, int core, e_surf_resource_state_t state_initial, tmgr_trace *state_trace, s_xbt_dict *cpu_properties)=0; - virtual void addTraces()=0; }; class Resource { diff --git a/src/bindings/java/surfJAVA_wrap.cxx b/src/bindings/java/surfJAVA_wrap.cxx index ee52a22e1a..32b867520f 100644 --- a/src/bindings/java/surfJAVA_wrap.cxx +++ b/src/bindings/java/surfJAVA_wrap.cxx @@ -1514,12 +1514,31 @@ ActionList *SwigDirector_CpuModel::getRunningActionSet() { return c_result; } +void SwigDirector_CpuModel::addTraces() { + JNIEnvWrapper swigjnienv(this) ; + JNIEnv * jenv = swigjnienv.getJNIEnv() ; + jobject swigjobj = (jobject) NULL ; + + if (!swig_override[7]) { + SWIG_JavaThrowException(JNIEnvWrapper(this).getJNIEnv(), SWIG_JavaDirectorPureVirtual, "Attempted to invoke pure virtual method CpuModel::addTraces."); + return; + } + swigjobj = swig_get_self(jenv); + if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) { + jenv->CallStaticVoidMethod(Swig::jclass_SurfJNI, Swig::director_methids[16], swigjobj); + if (jenv->ExceptionCheck() == JNI_TRUE) return ; + } else { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null upcall object"); + } + if (swigjobj) jenv->DeleteLocalRef(swigjobj); +} + SwigDirector_CpuModel::~SwigDirector_CpuModel() { swig_disconnect_director_self("swigDirectorDisconnect"); } -Cpu *SwigDirector_CpuModel::createResource(char const *name, DoubleDynar power_peak, int pstate, double power_scale, tmgr_trace *power_trace, int core, e_surf_resource_state_t state_initial, tmgr_trace *state_trace, s_xbt_dict *cpu_properties) { +Cpu *SwigDirector_CpuModel::createCpu(char const *name, DoubleDynar power_peak, int pstate, double power_scale, tmgr_trace *power_trace, int core, e_surf_resource_state_t state_initial, tmgr_trace *state_trace, s_xbt_dict *cpu_properties) { Cpu *c_result = 0 ; jlong jresult = 0 ; JNIEnvWrapper swigjnienv(this) ; @@ -1535,8 +1554,8 @@ Cpu *SwigDirector_CpuModel::createResource(char const *name, DoubleDynar power_p jlong jstate_trace = 0 ; jlong jcpu_properties = 0 ; - if (!swig_override[7]) { - SWIG_JavaThrowException(JNIEnvWrapper(this).getJNIEnv(), SWIG_JavaDirectorPureVirtual, "Attempted to invoke pure virtual method CpuModel::createResource."); + if (!swig_override[8]) { + SWIG_JavaThrowException(JNIEnvWrapper(this).getJNIEnv(), SWIG_JavaDirectorPureVirtual, "Attempted to invoke pure virtual method CpuModel::createCpu."); return c_result; } swigjobj = swig_get_self(jenv); @@ -1560,7 +1579,7 @@ Cpu *SwigDirector_CpuModel::createResource(char const *name, DoubleDynar power_p jstate_initial = (jint) state_initial; *((tmgr_trace **)&jstate_trace) = (tmgr_trace *) state_trace; *((s_xbt_dict **)&jcpu_properties) = (s_xbt_dict *) cpu_properties; - jresult = (jlong) jenv->CallStaticLongMethod(Swig::jclass_SurfJNI, Swig::director_methids[16], swigjobj, jname, jpower_peak, jpstate, jpower_scale, jpower_trace, jcore, jstate_initial, jstate_trace, jcpu_properties); + jresult = (jlong) jenv->CallStaticLongMethod(Swig::jclass_SurfJNI, Swig::director_methids[17], swigjobj, jname, jpower_peak, jpstate, jpower_scale, jpower_trace, jcore, jstate_initial, jstate_trace, jcpu_properties); if (jenv->ExceptionCheck() == JNI_TRUE) return c_result; c_result = *(Cpu **)&jresult; } else { @@ -1570,25 +1589,6 @@ Cpu *SwigDirector_CpuModel::createResource(char const *name, DoubleDynar power_p return c_result; } -void SwigDirector_CpuModel::addTraces() { - JNIEnvWrapper swigjnienv(this) ; - JNIEnv * jenv = swigjnienv.getJNIEnv() ; - jobject swigjobj = (jobject) NULL ; - - if (!swig_override[8]) { - SWIG_JavaThrowException(JNIEnvWrapper(this).getJNIEnv(), SWIG_JavaDirectorPureVirtual, "Attempted to invoke pure virtual method CpuModel::addTraces."); - return; - } - swigjobj = swig_get_self(jenv); - if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) { - jenv->CallStaticVoidMethod(Swig::jclass_SurfJNI, Swig::director_methids[17], swigjobj); - if (jenv->ExceptionCheck() == JNI_TRUE) return ; - } else { - SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null upcall object"); - } - if (swigjobj) jenv->DeleteLocalRef(swigjobj); -} - void SwigDirector_CpuModel::swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global) { static struct { const char *mname; @@ -1617,10 +1617,10 @@ void SwigDirector_CpuModel::swig_connect_director(JNIEnv *jenv, jobject jself, j "getRunningActionSet", "()Lorg/simgrid/surf/ActionList;", NULL }, { - "createResource", "(Ljava/lang/String;[DIDLorg/simgrid/surf/TmgrTrace;ILorg/simgrid/surf/ResourceState;Lorg/simgrid/surf/TmgrTrace;Lorg/simgrid/surf/XbtDict;)Lorg/simgrid/surf/Cpu;", NULL + "addTraces", "()V", NULL }, { - "addTraces", "()V", NULL + "createCpu", "(Ljava/lang/String;[DIDLorg/simgrid/surf/TmgrTrace;ILorg/simgrid/surf/ResourceState;Lorg/simgrid/surf/TmgrTrace;Lorg/simgrid/surf/XbtDict;)Lorg/simgrid/surf/Cpu;", NULL } }; @@ -2809,27 +2809,6 @@ SWIGEXPORT void JNICALL Java_org_simgrid_surf_SurfJNI_delete_1TmgrTraceEvent(JNI } -SWIGEXPORT jlong JNICALL Java_org_simgrid_surf_SurfJNI_new_1Model(JNIEnv *jenv, jclass jcls, jstring jarg1) { - jlong jresult = 0 ; - char *arg1 = (char *) 0 ; - Model *result = 0 ; - - (void)jenv; - (void)jcls; - arg1 = 0; - if (jarg1) { - arg1 = (char *)jenv->GetStringUTFChars(jarg1, 0); - if (!arg1) return 0; - } - result = (Model *)new Model((char const *)arg1); - *(Model **)&jresult = result; - { - - } - return jresult; -} - - SWIGEXPORT jstring JNICALL Java_org_simgrid_surf_SurfJNI_Model_1getName(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { jstring jresult = 0 ; Model *arg1 = (Model *) 0 ; @@ -2956,6 +2935,17 @@ SWIGEXPORT jlong JNICALL Java_org_simgrid_surf_SurfJNI_Model_1getRunningActionSe } +SWIGEXPORT void JNICALL Java_org_simgrid_surf_SurfJNI_Model_1addTraces(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + Model *arg1 = (Model *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(Model **)&jarg1; + (arg1)->addTraces(); +} + + SWIGEXPORT void JNICALL Java_org_simgrid_surf_SurfJNI_delete_1Model(JNIEnv *jenv, jclass jcls, jlong jarg1) { Model *arg1 = (Model *) 0 ; @@ -2997,7 +2987,7 @@ SWIGEXPORT void JNICALL Java_org_simgrid_surf_SurfJNI_delete_1CpuModel(JNIEnv *j } -SWIGEXPORT jlong JNICALL Java_org_simgrid_surf_SurfJNI_CpuModel_1createResource(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jdoubleArray jarg3, jint jarg4, jdouble jarg5, jlong jarg6, jobject jarg6_, jint jarg7, jint jarg8, jlong jarg9, jobject jarg9_, jlong jarg10, jobject jarg10_) { +SWIGEXPORT jlong JNICALL Java_org_simgrid_surf_SurfJNI_CpuModel_1createCpu(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jdoubleArray jarg3, jint jarg4, jdouble jarg5, jlong jarg6, jobject jarg6_, jint jarg7, jint jarg8, jlong jarg9, jobject jarg9_, jlong jarg10, jobject jarg10_) { jlong jresult = 0 ; CpuModel *arg1 = (CpuModel *) 0 ; char *arg2 = (char *) 0 ; @@ -3037,7 +3027,7 @@ SWIGEXPORT jlong JNICALL Java_org_simgrid_surf_SurfJNI_CpuModel_1createResource( arg8 = (e_surf_resource_state_t)jarg8; arg9 = *(tmgr_trace **)&jarg9; arg10 = *(s_xbt_dict **)&jarg10; - result = (Cpu *)(arg1)->createResource((char const *)arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10); + result = (Cpu *)(arg1)->createCpu((char const *)arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10); *(Cpu **)&jresult = result; { @@ -3046,17 +3036,6 @@ SWIGEXPORT jlong JNICALL Java_org_simgrid_surf_SurfJNI_CpuModel_1createResource( } -SWIGEXPORT void JNICALL Java_org_simgrid_surf_SurfJNI_CpuModel_1addTraces(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { - CpuModel *arg1 = (CpuModel *) 0 ; - - (void)jenv; - (void)jcls; - (void)jarg1_; - arg1 = *(CpuModel **)&jarg1; - (arg1)->addTraces(); -} - - SWIGEXPORT void JNICALL Java_org_simgrid_surf_SurfJNI_CpuModel_1director_1connect(JNIEnv *jenv, jclass jcls, jobject jself, jlong objarg, jboolean jswig_mem_own, jboolean jweak_global) { CpuModel *obj = *((CpuModel **)&objarg); (void)jcls; @@ -4141,10 +4120,10 @@ SWIGEXPORT void JNICALL Java_org_simgrid_surf_SurfJNI_swig_1module_1init(JNIEnv "SwigDirector_CpuModel_getRunningActionSet", "(Lorg/simgrid/surf/CpuModel;)J" }, { - "SwigDirector_CpuModel_createResource", "(Lorg/simgrid/surf/CpuModel;Ljava/lang/String;[DIDJIIJJ)J" + "SwigDirector_CpuModel_addTraces", "(Lorg/simgrid/surf/CpuModel;)V" }, { - "SwigDirector_CpuModel_addTraces", "(Lorg/simgrid/surf/CpuModel;)V" + "SwigDirector_CpuModel_createCpu", "(Lorg/simgrid/surf/CpuModel;Ljava/lang/String;[DIDJIIJJ)J" }, { "SwigDirector_Cpu_isUsed", "(Lorg/simgrid/surf/Cpu;)Z" diff --git a/src/bindings/java/surfJAVA_wrap.h b/src/bindings/java/surfJAVA_wrap.h index cb0143b501..065713a2d6 100644 --- a/src/bindings/java/surfJAVA_wrap.h +++ b/src/bindings/java/surfJAVA_wrap.h @@ -46,9 +46,9 @@ public: virtual void updateActionsStateLazy(double now, double delta); virtual void updateActionsStateFull(double now, double delta); virtual ActionList *getRunningActionSet(); - virtual ~SwigDirector_CpuModel(); - virtual Cpu *createResource(char const *name, DoubleDynar power_peak, int pstate, double power_scale, tmgr_trace *power_trace, int core, e_surf_resource_state_t state_initial, tmgr_trace *state_trace, s_xbt_dict *cpu_properties); virtual void addTraces(); + virtual ~SwigDirector_CpuModel(); + virtual Cpu *createCpu(char const *name, DoubleDynar power_peak, int pstate, double power_scale, tmgr_trace *power_trace, int core, e_surf_resource_state_t state_initial, tmgr_trace *state_trace, s_xbt_dict *cpu_properties); public: bool swig_overrides(int n) { return (n < 9 ? swig_override[n] : false); diff --git a/src/bindings/java/surf_swig.cpp b/src/bindings/java/surf_swig.cpp index afff2a9a8a..fef1748289 100644 --- a/src/bindings/java/surf_swig.cpp +++ b/src/bindings/java/surf_swig.cpp @@ -26,7 +26,7 @@ static void java_cpu_model_init_preparse() { surf_cpu_model_pm = java_cpu_model; xbt_dynar_push(model_list, &java_cpu_model); xbt_dynar_push(model_list_invoke, &java_cpu_model); - sg_platf_host_add_cb(parse_cpu_init); + sg_platf_host_add_cb(cpu_parse_init); } void setCpuModel(CpuModel *cpuModel){ diff --git a/src/bindings/java/surfdoc.i b/src/bindings/java/surfdoc.i index d88734c3c9..bea7464112 100644 --- a/src/bindings/java/surfdoc.i +++ b/src/bindings/java/surfdoc.i @@ -68,7 +68,7 @@ public"; -%javamethodmodifiers CpuModel::createResource(const char *name, DoubleDynar power_peak, +%javamethodmodifiers CpuModel::createCpu(const char *name, DoubleDynar power_peak, int pstate, double power_scale, tmgr_trace *power_trace, int core, e_surf_resource_state_t state_initial, diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index 2903c05954..8c10321c38 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -1198,7 +1198,7 @@ XBT_PUBLIC_DATA(s_surf_model_description_t) * Such model is subject to modification with warning in the ChangeLog so monitor it! * */ -XBT_PUBLIC(void) surf_vm_workstation_model_init_current_default(void); +XBT_PUBLIC(void) surf_vm_workstation_model_init_HL13(void); /** \ingroup SURF_models * \brief The list of all available vm workstation model models diff --git a/src/surf/cpu_cas01.cpp b/src/surf/cpu_cas01.cpp index 3c6662dda7..342d03959d 100644 --- a/src/surf/cpu_cas01.cpp +++ b/src/surf/cpu_cas01.cpp @@ -19,8 +19,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu_cas, surf_cpu, static void cpu_define_callbacks() { - sg_platf_host_add_cb(parse_cpu_init); - sg_platf_postparse_add_cb(add_traces_cpu); + sg_platf_host_add_cb(cpu_parse_init); + sg_platf_postparse_add_cb(cpu_add_traces); } /********* @@ -106,20 +106,7 @@ CpuCas01Model::~CpuCas01Model() delete p_cpuRunningActionSetThatDoesNotNeedBeingChecked; } -void CpuCas01Model::parseInit(sg_platf_host_cbarg_t host) -{ - createResource(host->id, - host->power_peak, - host->pstate, - host->power_scale, - host->power_trace, - host->core_amount, - host->initial_state, - host->state_trace, - host->properties); -} - -CpuPtr CpuCas01Model::createResource(const char *name, xbt_dynar_t power_peak, +CpuPtr CpuCas01Model::createCpu(const char *name, xbt_dynar_t power_peak, int pstate, double power_scale, tmgr_trace_t power_trace, int core, e_surf_resource_state_t state_initial, diff --git a/src/surf/cpu_cas01.hpp b/src/surf/cpu_cas01.hpp index 438f3c2ff4..0993fea896 100644 --- a/src/surf/cpu_cas01.hpp +++ b/src/surf/cpu_cas01.hpp @@ -29,14 +29,13 @@ public: double (CpuCas01Model::*shareResources)(double now); void (CpuCas01Model::*updateActionsState)(double now, double delta); - void parseInit(sg_platf_host_cbarg_t host); - CpuPtr createResource(const char *name, xbt_dynar_t power_peak, int pstate, + CpuPtr createCpu(const char *name, xbt_dynar_t power_peak, int pstate, double power_scale, tmgr_trace_t power_trace, int core, e_surf_resource_state_t state_initial, tmgr_trace_t state_trace, xbt_dict_t cpu_properties); - double shareResourcesFull(double now); + double shareResourcesFull(double now); void addTraces(); ActionListPtr p_cpuRunningActionSetThatDoesNotNeedBeingChecked; }; diff --git a/src/surf/cpu_interface.cpp b/src/surf/cpu_interface.cpp index 1a08d36e34..089e373a82 100644 --- a/src/surf/cpu_interface.cpp +++ b/src/surf/cpu_interface.cpp @@ -30,20 +30,9 @@ surf_callback(void, CpuPtr) cpuDestructedCallbacks; surf_callback(void, CpuPtr, e_surf_resource_state_t, e_surf_resource_state_t) cpuStateChangedCallbacks; surf_callback(void, CpuActionPtr, e_surf_action_state_t, e_surf_action_state_t) cpuActionStateChangedCallbacks; -void parse_cpu_init(sg_platf_host_cbarg_t host){ - surf_cpu_model_pm->parseInit(host); -} - -void add_traces_cpu(){ - surf_cpu_model_pm->addTraces(); -} - -/********* - * Model * - *********/ -void CpuModel::parseInit(sg_platf_host_cbarg_t host) -{ - createResource(host->id, +void cpu_parse_init(sg_platf_host_cbarg_t host){ + surf_cpu_model_pm->createCpu( + host->id, host->power_peak, host->pstate, host->power_scale, @@ -54,6 +43,13 @@ void CpuModel::parseInit(sg_platf_host_cbarg_t host) host->properties); } +void cpu_add_traces(){ + surf_cpu_model_pm->addTraces(); +} + +/********* + * Model * + *********/ void CpuModel::updateActionsStateLazy(double now, double /*delta*/) { CpuActionPtr action; diff --git a/src/surf/cpu_interface.hpp b/src/surf/cpu_interface.hpp index b2f4e8a709..f877b1ffab 100644 --- a/src/surf/cpu_interface.hpp +++ b/src/surf/cpu_interface.hpp @@ -54,9 +54,9 @@ XBT_PUBLIC_DATA( surf_callback(void, CpuPtr, e_surf_resource_state_t, e_surf_res */ XBT_PUBLIC_DATA( surf_callback(void, CpuActionPtr, e_surf_action_state_t, e_surf_action_state_t)) cpuActionStateChangedCallbacks; -XBT_PUBLIC(void) parse_cpu_init(sg_platf_host_cbarg_t host); +XBT_PUBLIC(void) cpu_parse_init(sg_platf_host_cbarg_t host); -XBT_PUBLIC(void) add_traces_cpu(); +XBT_PUBLIC(void) cpu_add_traces(); /********* * Model * @@ -80,9 +80,7 @@ public: * * @param host [TODO] */ - void parseInit(sg_platf_host_cbarg_t host); - - virtual CpuPtr createResource(const char *name, xbt_dynar_t power_peak, + virtual CpuPtr createCpu(const char *name, xbt_dynar_t power_peak, int pstate, double power_scale, tmgr_trace_t power_trace, int core, e_surf_resource_state_t state_initial, @@ -91,8 +89,6 @@ public: void updateActionsStateLazy(double now, double delta); void updateActionsStateFull(double now, double delta); - - virtual void addTraces() =0; }; /************ diff --git a/src/surf/cpu_ti.cpp b/src/surf/cpu_ti.cpp index 5c083d5929..0c5fbb57b7 100644 --- a/src/surf/cpu_ti.cpp +++ b/src/surf/cpu_ti.cpp @@ -381,8 +381,8 @@ int CpuTiTrace::binarySearch(double *array, double a, int low, int high) static void cpu_ti_define_callbacks() { - sg_platf_host_add_cb(parse_cpu_init); - sg_platf_postparse_add_cb(add_traces_cpu); + sg_platf_host_add_cb(cpu_parse_init); + sg_platf_postparse_add_cb(cpu_add_traces); } /********* @@ -427,7 +427,7 @@ CpuTiModel::~CpuTiModel() xbt_heap_free(p_tiActionHeap); } -CpuPtr CpuTiModel::createResource(const char *name, +CpuPtr CpuTiModel::createCpu(const char *name, xbt_dynar_t powerPeak, int pstate, double powerScale, diff --git a/src/surf/cpu_ti.hpp b/src/surf/cpu_ti.hpp index 1361b0ef4b..6670643885 100644 --- a/src/surf/cpu_ti.hpp +++ b/src/surf/cpu_ti.hpp @@ -84,9 +84,7 @@ class CpuTiModel : public CpuModel { public: CpuTiModel(); ~CpuTiModel(); - - void parseInit(sg_platf_host_cbarg_t host); - CpuPtr createResource(const char *name, xbt_dynar_t powerPeak, + CpuPtr createCpu(const char *name, xbt_dynar_t powerPeak, int pstate, double power_scale, tmgr_trace_t power_trace, int core, e_surf_resource_state_t state_initial, diff --git a/src/surf/network_cm02.cpp b/src/surf/network_cm02.cpp index 73bc407998..ae1fbc8d24 100644 --- a/src/surf/network_cm02.cpp +++ b/src/surf/network_cm02.cpp @@ -22,95 +22,10 @@ int sg_network_crosstraffic = 0; * CallBacks * *************/ -static void net_parse_link_init(sg_platf_link_cbarg_t link){ - if (link->policy == SURF_LINK_FULLDUPLEX) { - char *link_id; - link_id = bprintf("%s_UP", link->id); - surf_network_model->createResource(link_id, - link->bandwidth, - link->bandwidth_trace, - link->latency, - link->latency_trace, - link->state, - link->state_trace, link->policy, link->properties); - xbt_free(link_id); - link_id = bprintf("%s_DOWN", link->id); - surf_network_model->createResource(link_id, - link->bandwidth, - link->bandwidth_trace, - link->latency, - link->latency_trace, - link->state, - link->state_trace, link->policy, link->properties); - xbt_free(link_id); - } else { - surf_network_model->createResource(link->id, - link->bandwidth, - link->bandwidth_trace, - link->latency, - link->latency_trace, - link->state, - link->state_trace, link->policy, link->properties); - } -} - -static void net_add_traces(void){ - xbt_dict_cursor_t cursor = NULL; - char *trace_name, *elm; - - static int called = 0; - if (called) - return; - called = 1; - - /* connect all traces relative to network */ - xbt_dict_foreach(trace_connect_list_link_avail, cursor, trace_name, elm) { - tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name); - NetworkCm02LinkPtr link = static_cast( - xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)); - - xbt_assert(link, "Cannot connect trace %s to link %s: link undefined", - trace_name, elm); - xbt_assert(trace, - "Cannot connect trace %s to link %s: trace undefined", - trace_name, elm); - - link->p_stateEvent = tmgr_history_add_trace(history, trace, 0.0, 0, static_cast(link)); - } - - xbt_dict_foreach(trace_connect_list_bandwidth, cursor, trace_name, elm) { - tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name); - NetworkCm02LinkPtr link = static_cast( - xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)); - - xbt_assert(link, "Cannot connect trace %s to link %s: link undefined", - trace_name, elm); - xbt_assert(trace, - "Cannot connect trace %s to link %s: trace undefined", - trace_name, elm); - - link->p_power.event = tmgr_history_add_trace(history, trace, 0.0, 0, static_cast(link)); - } - - xbt_dict_foreach(trace_connect_list_latency, cursor, trace_name, elm) { - tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name); - NetworkCm02LinkPtr link = static_cast( - xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)); - - xbt_assert(link, "Cannot connect trace %s to link %s: link undefined", - trace_name, elm); - xbt_assert(trace, - "Cannot connect trace %s to link %s: trace undefined", - trace_name, elm); - - link->p_latEvent = tmgr_history_add_trace(history, trace, 0.0, 0, static_cast(link)); - } -} - void net_define_callbacks(void) { /* Figuring out the network links */ - sg_platf_link_add_cb(net_parse_link_init); + sg_platf_link_add_cb(netlink_parse_init); sg_platf_postparse_add_cb(net_add_traces); } @@ -271,7 +186,7 @@ void NetworkCm02Model::initialize() p_maxminSystem = lmm_system_new(m_selectiveUpdate); const char* lb_name = "__loopback__"; - routing_model_create(static_cast(createResource(lb_name, + routing_model_create(static_cast(createNetworkLink(lb_name, 498000000, NULL, 0.000015, NULL, SURF_RESOURCE_ON, NULL, SURF_LINK_FATPIPE, NULL))); @@ -286,7 +201,7 @@ void NetworkCm02Model::initialize() m_haveGap = false; } -NetworkLinkPtr NetworkCm02Model::createResource(const char *name, +NetworkLinkPtr NetworkCm02Model::createNetworkLink(const char *name, double bw_initial, tmgr_trace_t bw_trace, double lat_initial, @@ -486,7 +401,58 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst, return action; } +void NetworkCm02Model::addTraces(){ + xbt_dict_cursor_t cursor = NULL; + char *trace_name, *elm; + + static int called = 0; + if (called) + return; + called = 1; + + /* connect all traces relative to network */ + xbt_dict_foreach(trace_connect_list_link_avail, cursor, trace_name, elm) { + tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name); + NetworkCm02LinkPtr link = static_cast( + xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)); + + xbt_assert(link, "Cannot connect trace %s to link %s: link undefined", + trace_name, elm); + xbt_assert(trace, + "Cannot connect trace %s to link %s: trace undefined", + trace_name, elm); + + link->p_stateEvent = tmgr_history_add_trace(history, trace, 0.0, 0, static_cast(link)); + } + xbt_dict_foreach(trace_connect_list_bandwidth, cursor, trace_name, elm) { + tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name); + NetworkCm02LinkPtr link = static_cast( + xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)); + + xbt_assert(link, "Cannot connect trace %s to link %s: link undefined", + trace_name, elm); + xbt_assert(trace, + "Cannot connect trace %s to link %s: trace undefined", + trace_name, elm); + + link->p_power.event = tmgr_history_add_trace(history, trace, 0.0, 0, static_cast(link)); + } + + xbt_dict_foreach(trace_connect_list_latency, cursor, trace_name, elm) { + tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name); + NetworkCm02LinkPtr link = static_cast( + xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)); + + xbt_assert(link, "Cannot connect trace %s to link %s: link undefined", + trace_name, elm); + xbt_assert(trace, + "Cannot connect trace %s to link %s: trace undefined", + trace_name, elm); + + link->p_latEvent = tmgr_history_add_trace(history, trace, 0.0, 0, static_cast(link)); + } +} /************ * Resource * diff --git a/src/surf/network_cm02.hpp b/src/surf/network_cm02.hpp index c31c1c99b6..dc0028f061 100644 --- a/src/surf/network_cm02.hpp +++ b/src/surf/network_cm02.hpp @@ -48,7 +48,7 @@ public: } ~NetworkCm02Model() { } - NetworkLinkPtr createResource(const char *name, + NetworkLinkPtr createNetworkLink(const char *name, double bw_initial, tmgr_trace_t bw_trace, double lat_initial, @@ -57,6 +57,7 @@ public: tmgr_trace_t state_trace, e_surf_link_sharing_policy_t policy, xbt_dict_t properties); + void addTraces(); void updateActionsStateLazy(double now, double delta); ActionPtr communicate(RoutingEdgePtr src, RoutingEdgePtr dst, double size, double rate); diff --git a/src/surf/network_constant.hpp b/src/surf/network_constant.hpp index 46ac808b14..e793ac3725 100644 --- a/src/surf/network_constant.hpp +++ b/src/surf/network_constant.hpp @@ -36,7 +36,6 @@ public: ActionPtr communicate(RoutingEdgePtr src, RoutingEdgePtr dst, double size, double rate); void gapRemove(ActionPtr action); - //FIXME:virtual void addTraces() =0; }; /************ diff --git a/src/surf/network_interface.cpp b/src/surf/network_interface.cpp index 39195ef072..f8528231b1 100644 --- a/src/surf/network_interface.cpp +++ b/src/surf/network_interface.cpp @@ -23,6 +23,42 @@ surf_callback(void, NetworkLinkPtr, e_surf_resource_state_t, e_surf_resource_sta surf_callback(void, NetworkActionPtr, e_surf_action_state_t, e_surf_action_state_t) networkActionStateChangedCallbacks; surf_callback(void, NetworkActionPtr, RoutingEdgePtr src, RoutingEdgePtr dst, double size, double rate) networkCommunicateCallbacks; +void netlink_parse_init(sg_platf_link_cbarg_t link){ + if (link->policy == SURF_LINK_FULLDUPLEX) { + char *link_id; + link_id = bprintf("%s_UP", link->id); + surf_network_model->createNetworkLink(link_id, + link->bandwidth, + link->bandwidth_trace, + link->latency, + link->latency_trace, + link->state, + link->state_trace, link->policy, link->properties); + xbt_free(link_id); + link_id = bprintf("%s_DOWN", link->id); + surf_network_model->createNetworkLink(link_id, + link->bandwidth, + link->bandwidth_trace, + link->latency, + link->latency_trace, + link->state, + link->state_trace, link->policy, link->properties); + xbt_free(link_id); + } else { + surf_network_model->createNetworkLink(link->id, + link->bandwidth, + link->bandwidth_trace, + link->latency, + link->latency_trace, + link->state, + link->state_trace, link->policy, link->properties); + } +} + +void net_add_traces(){ + surf_network_model->addTraces(); +} + /********* * Model * *********/ diff --git a/src/surf/network_interface.hpp b/src/surf/network_interface.hpp index f85abe1ab3..b654419962 100644 --- a/src/surf/network_interface.hpp +++ b/src/surf/network_interface.hpp @@ -10,6 +10,7 @@ #ifndef SURF_NETWORK_INTERFACE_HPP_ #define SURF_NETWORK_INTERFACE_HPP_ + /*********** * Classes * ***********/ @@ -59,8 +60,9 @@ XBT_PUBLIC_DATA( surf_callback(void, NetworkActionPtr, RoutingEdgePtr src, Routi /********* * Tools * *********/ +XBT_PUBLIC(void) netlink_parse_init(sg_platf_link_cbarg_t link); -void net_define_callbacks(void); +XBT_PUBLIC(void) net_add_traces(); /********* * Model * @@ -113,7 +115,7 @@ public: * @param properties Dictionary of properties associated to this Resource * @return The created NetworkLink */ - virtual NetworkLinkPtr createResource(const char *name, + virtual NetworkLinkPtr createNetworkLink(const char *name, double bw_initial, tmgr_trace_t bw_trace, double lat_initial, @@ -123,7 +125,6 @@ public: e_surf_link_sharing_policy_t policy, xbt_dict_t properties)=0; - virtual void gapAppend(double /*size*/, const NetworkLinkPtr /*link*/, NetworkActionPtr /*action*/) {}; /** diff --git a/src/surf/network_ns3.cpp b/src/surf/network_ns3.cpp index f5663678a3..403e1a5814 100644 --- a/src/surf/network_ns3.cpp +++ b/src/surf/network_ns3.cpp @@ -57,7 +57,7 @@ static void parse_ns3_add_link(sg_platf_link_cbarg_t link) if(!IPV4addr) IPV4addr = xbt_dynar_new(sizeof(char*),free); - NetworkLinkPtr net_link = surf_network_model->createResource(link->id, + NetworkLinkPtr net_link = surf_network_model->createNetworkLink(link->id, link->bandwidth, link->bandwidth_trace, link->latency, @@ -294,7 +294,7 @@ NetworkNS3Model::~NetworkNS3Model() { xbt_dict_free(&dict_socket); } -NetworkLinkPtr NetworkNS3Model::createResource(const char *name, +NetworkLinkPtr NetworkNS3Model::createNetworkLink(const char *name, double bw_initial, tmgr_trace_t bw_trace, double lat_initial, diff --git a/src/surf/network_ns3.hpp b/src/surf/network_ns3.hpp index 2b28eed178..dbd11326f4 100644 --- a/src/surf/network_ns3.hpp +++ b/src/surf/network_ns3.hpp @@ -37,7 +37,7 @@ public: NetworkNS3Model(); ~NetworkNS3Model(); - NetworkLinkPtr createResource(const char *name, + NetworkLinkPtr createNetworkLink(const char *name, double bw_initial, tmgr_trace_t bw_trace, double lat_initial, @@ -51,6 +51,7 @@ public: double size, double rate); double shareResources(double now); void updateActionsState(double now, double delta); + void addTraces(){DIE_IMPOSSIBLE;} }; /************ diff --git a/src/surf/storage_interface.hpp b/src/surf/storage_interface.hpp index 61ef3abd8a..190676886d 100644 --- a/src/surf/storage_interface.hpp +++ b/src/surf/storage_interface.hpp @@ -88,7 +88,7 @@ public: * @param attach [description] * @return The created Storage */ - virtual StoragePtr createResource(const char* id, + virtual StoragePtr createStorage(const char* id, const char* type_id, const char* content_name, const char* content_type, diff --git a/src/surf/storage_n11.cpp b/src/surf/storage_n11.cpp index d0bc4080f0..36251f6460 100644 --- a/src/surf/storage_n11.cpp +++ b/src/surf/storage_n11.cpp @@ -68,7 +68,7 @@ static void parse_storage_init(sg_platf_storage_cbarg_t storage) storage->content_type, storage->properties); - surf_storage_model->createResource(storage->id, + surf_storage_model->createStorage(storage->id, ((storage_type_t) stype)->type_id, storage->content, storage->content_type, @@ -234,7 +234,7 @@ StorageN11Model::~StorageN11Model(){ storage_running_action_set_that_does_not_need_being_checked = NULL; } -StoragePtr StorageN11Model::createResource(const char* id, const char* type_id, +StoragePtr StorageN11Model::createStorage(const char* id, const char* type_id, const char* content_name, const char* content_type, xbt_dict_t properties, const char* attach) { diff --git a/src/surf/storage_n11.hpp b/src/surf/storage_n11.hpp index d479002b5f..2ec11237f6 100644 --- a/src/surf/storage_n11.hpp +++ b/src/surf/storage_n11.hpp @@ -37,8 +37,9 @@ class StorageN11Model : public StorageModel { public: StorageN11Model(); ~StorageN11Model(); - StoragePtr createResource(const char* id, const char* type_id, + StoragePtr createStorage(const char* id, const char* type_id, const char* content_name, const char* content_type, xbt_dict_t properties, const char* attach); + void addTraces(){DIE_IMPOSSIBLE;} double shareResources(double now); void updateActionsState(double now, double delta); }; diff --git a/src/surf/surf_c_bindings.cpp b/src/surf/surf_c_bindings.cpp index 6ee28a1431..c43e99bac7 100644 --- a/src/surf/surf_c_bindings.cpp +++ b/src/surf/surf_c_bindings.cpp @@ -287,7 +287,7 @@ xbt_dynar_t surf_workstation_model_get_route(surf_workstation_model_t /*model*/, } void surf_vm_workstation_model_create(const char *name, surf_resource_t ind_phys_host){ - surf_vm_workstation_model->createResource(name, ind_phys_host); + surf_vm_workstation_model->createWorkstationVM(name, ind_phys_host); } surf_action_t surf_network_model_communicate(surf_network_model_t model, sg_routing_edge_t src, sg_routing_edge_t dst, double size, double rate){ diff --git a/src/surf/surf_interface.cpp b/src/surf/surf_interface.cpp index a4d47c207b..90ad51cd6c 100644 --- a/src/surf/surf_interface.cpp +++ b/src/surf/surf_interface.cpp @@ -157,7 +157,7 @@ s_surf_model_description_t surf_workstation_model_description[] = { s_surf_model_description_t surf_vm_workstation_model_description[] = { {"default", "Default vm workstation model.", - surf_vm_workstation_model_init_current_default}, + surf_vm_workstation_model_init_HL13}, {NULL, NULL, NULL} /* this array must be NULL terminated */ }; diff --git a/src/surf/surf_interface.hpp b/src/surf/surf_interface.hpp index a636b30c9a..4270a6e599 100644 --- a/src/surf/surf_interface.hpp +++ b/src/surf/surf_interface.hpp @@ -129,6 +129,8 @@ public: */ virtual ~Model(); + virtual void addTraces() =0; + /** * @brief Get the name of the current Model * diff --git a/src/surf/vm_workstation_hl13.cpp b/src/surf/vm_workstation_hl13.cpp index 92b02461a9..763be607d6 100644 --- a/src/surf/vm_workstation_hl13.cpp +++ b/src/surf/vm_workstation_hl13.cpp @@ -9,7 +9,7 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_vm_workstation); -void surf_vm_workstation_model_init_current_default(void){ +void surf_vm_workstation_model_init_HL13(void){ if (surf_cpu_model_vm) { surf_vm_workstation_model = new WorkstationVMHL13Model(); ModelPtr model = static_cast(surf_vm_workstation_model); @@ -38,15 +38,16 @@ ActionPtr WorkstationVMHL13Model::communicate(WorkstationPtr src, WorkstationPtr /* ind means ''indirect'' that this is a reference on the whole dict_elm * structure (i.e not on the surf_resource_private infos) */ -void WorkstationVMHL13Model::createResource(const char *name, void *ind_phys_workstation) +WorkstationVMPtr WorkstationVMHL13Model::createWorkstationVM(const char *name, surf_resource_t ind_phys_workstation) { - WorkstationVMHL13Ptr ws = new WorkstationVMHL13(this, name, NULL, static_cast(ind_phys_workstation)); + WorkstationVMHL13Ptr ws = new WorkstationVMHL13(this, name, NULL, ind_phys_workstation); xbt_lib_set(host_lib, name, SURF_WKS_LEVEL, static_cast(ws)); /* TODO: * - check how network requests are scheduled between distinct processes competing for the same card. */ + return ws; } static inline double get_solved_value(CpuActionPtr cpu_action) @@ -245,7 +246,7 @@ WorkstationVMHL13::WorkstationVMHL13(WorkstationVMModelPtr model, const char* na /* We can assume one core and cas01 cpu for the first step. * Do xbt_lib_set(host_lib, name, SURF_CPU_LEVEL, cpu) if you get the resource. */ - p_cpu = static_cast(surf_cpu_model_vm)->createResource(name, // name + p_cpu = static_cast(surf_cpu_model_vm)->createCpu(name, // name sub_cpu->getPowerPeakList(), // host->power_peak, sub_cpu->getPState(), 1, // host->power_scale, diff --git a/src/surf/vm_workstation_hl13.hpp b/src/surf/vm_workstation_hl13.hpp index 24d6175e70..a17605c3c8 100644 --- a/src/surf/vm_workstation_hl13.hpp +++ b/src/surf/vm_workstation_hl13.hpp @@ -13,8 +13,6 @@ #define GUESTOS_NOISE 100 // This value corresponds to the cost of the global action associated to the VM // It corresponds to the cost of a VM running no tasks. -void surf_vm_workstation_model_init(void); - /*********** * Classes * ***********/ @@ -25,10 +23,6 @@ typedef WorkstationVMHL13Model *WorkstationVMHL13ModelPtr; class WorkstationVMHL13; typedef WorkstationVMHL13 *WorkstationVMHL13Ptr; -/********* - * Tools * - *********/ - /********* * Model * *********/ @@ -36,7 +30,8 @@ class WorkstationVMHL13Model : public WorkstationVMModel { public: WorkstationVMHL13Model(); ~WorkstationVMHL13Model(){}; - void createResource(const char *name, void *ind_phys_workstation); + + WorkstationVMPtr createWorkstationVM(const char *name, surf_resource_t ind_phys_workstation); double shareResources(double now); void adjustWeightOfDummyCpuActions() {}; ActionPtr communicate(WorkstationPtr src, WorkstationPtr dst, double size, double rate); diff --git a/src/surf/vm_workstation_interface.hpp b/src/surf/vm_workstation_interface.hpp index 66a3e9da10..4479a7f643 100644 --- a/src/surf/vm_workstation_interface.hpp +++ b/src/surf/vm_workstation_interface.hpp @@ -12,8 +12,6 @@ #define GUESTOS_NOISE 100 // This value corresponds to the cost of the global action associated to the VM // It corresponds to the cost of a VM running no tasks. -void surf_vm_workstation_model_init(void); - /*********** * Classes * ***********/ @@ -68,15 +66,16 @@ public: */ ~WorkstationVMModel(){}; + WorkstationPtr createWorkstation(const char *name){DIE_IMPOSSIBLE;} + /** * @brief Create a new WorkstationVM - * + * * @param name The name of the new WorkstationVM * @param ind_phys_workstation The workstation hosting the VM - * + * */ - virtual void createResource(const char *name, void *ind_phys_workstation)=0; - + virtual WorkstationVMPtr createWorkstationVM(const char *name, surf_resource_t ind_phys_workstation)=0; void adjustWeightOfDummyCpuActions() {}; typedef boost::intrusive::list(surf_workstation_model)->createResource(host->id); -} - /********* * Model * *********/ @@ -34,7 +30,7 @@ void surf_workstation_model_init_current_default(void) ModelPtr model = static_cast(surf_workstation_model); xbt_dynar_push(model_list, &model); xbt_dynar_push(model_list_invoke, &model); - sg_platf_host_add_cb(workstation_new); + sg_platf_host_add_cb(workstation_parse_init); } void surf_workstation_model_init_compound() @@ -47,7 +43,7 @@ void surf_workstation_model_init_compound() ModelPtr model = static_cast(surf_workstation_model); xbt_dynar_push(model_list, &model); xbt_dynar_push(model_list_invoke, &model); - sg_platf_host_add_cb(workstation_new); + sg_platf_host_add_cb(workstation_parse_init); } WorkstationCLM03Model::WorkstationCLM03Model() @@ -58,12 +54,7 @@ WorkstationCLM03Model::WorkstationCLM03Model() WorkstationCLM03Model::~WorkstationCLM03Model() {} -void WorkstationCLM03Model::parseInit(sg_platf_host_cbarg_t host){ - createResource(host->id); -} - -WorkstationPtr WorkstationCLM03Model::createResource(const char *name){ - +WorkstationPtr WorkstationCLM03Model::createWorkstation(const char *name){ WorkstationPtr workstation = new WorkstationCLM03(surf_workstation_model, name, NULL, (xbt_dynar_t)xbt_lib_get_or_null(storage_lib, name, ROUTING_STORAGE_HOST_LEVEL), (RoutingEdgePtr)xbt_lib_get_or_null(host_lib, name, ROUTING_HOST_LEVEL), diff --git a/src/surf/workstation_clm03.hpp b/src/surf/workstation_clm03.hpp index f471b16f5c..88b485435a 100644 --- a/src/surf/workstation_clm03.hpp +++ b/src/surf/workstation_clm03.hpp @@ -33,8 +33,7 @@ class WorkstationCLM03Model : public WorkstationModel { public: WorkstationCLM03Model(); ~WorkstationCLM03Model(); - void parseInit(sg_platf_host_cbarg_t host); - WorkstationPtr createResource(const char *name); + WorkstationPtr createWorkstation(const char *name); double shareResources(double now); void updateActionsState(double now, double delta); diff --git a/src/surf/workstation_interface.cpp b/src/surf/workstation_interface.cpp index 70f949c12b..afd4bd1fb7 100644 --- a/src/surf/workstation_interface.cpp +++ b/src/surf/workstation_interface.cpp @@ -25,6 +25,15 @@ surf_callback(void, WorkstationPtr) workstationDestructedCallbacks; surf_callback(void, WorkstationPtr, e_surf_resource_state_t, e_surf_resource_state_t) workstationStateChangedCallbacks; surf_callback(void, WorkstationActionPtr, e_surf_action_state_t, e_surf_action_state_t) workstationActionStateChangedCallbacks; +void workstation_parse_init(sg_platf_host_cbarg_t host) +{ + surf_workstation_model->createWorkstation(host->id); +} + +void workstation_add_traces(){ + surf_workstation_model->addTraces(); +} + /********* * Model * *********/ diff --git a/src/surf/workstation_interface.hpp b/src/surf/workstation_interface.hpp index 0d50aff434..6b0b975623 100644 --- a/src/surf/workstation_interface.hpp +++ b/src/surf/workstation_interface.hpp @@ -57,6 +57,8 @@ extern surf_callback(void, WorkstationActionPtr, e_surf_action_state_t, e_surf_a * Tools * *********/ extern WorkstationModelPtr surf_workstation_model; +XBT_PUBLIC(void) workstation_parse_init(sg_platf_host_cbarg_t host); +XBT_PUBLIC(void) workstation_add_traces(); /********* * Model * @@ -84,6 +86,9 @@ public: */ ~WorkstationModel(); + virtual WorkstationPtr createWorkstation(const char *name)=0; + void addTraces(){DIE_IMPOSSIBLE;} + /** * @brief [brief description] * @details [long description] diff --git a/src/surf/workstation_ptask_L07.cpp b/src/surf/workstation_ptask_L07.cpp index 30e25d4f2c..0bc8e02132 100644 --- a/src/surf/workstation_ptask_L07.cpp +++ b/src/surf/workstation_ptask_L07.cpp @@ -14,13 +14,45 @@ static int ptask_host_count = 0; static xbt_dict_t ptask_parallel_task_link_set = NULL; lmm_system_t ptask_maxmin_system = NULL; + +/**************************************/ +/*** Resource Creation & Destruction **/ +/**************************************/ + +static void ptask_netlink_parse_init(sg_platf_link_cbarg_t link) +{ + netlink_parse_init(link); + current_property_set = NULL; +} + +static void ptask_define_callbacks() +{ + sg_platf_host_add_cb(cpu_parse_init); + sg_platf_host_add_cb(workstation_parse_init); + sg_platf_link_add_cb(ptask_netlink_parse_init); + sg_platf_postparse_add_cb(workstation_add_traces); +} + +void surf_workstation_model_init_ptask_L07(void) +{ + XBT_INFO("surf_workstation_model_init_ptask_L07"); + xbt_assert(!surf_cpu_model_pm, "CPU model type already defined"); + xbt_assert(!surf_network_model, "network model type already defined"); + ptask_define_callbacks(); + surf_workstation_model = new WorkstationL07Model(); + ModelPtr model = surf_workstation_model; + xbt_dynar_push(model_list, &model); + xbt_dynar_push(model_list_invoke, &model); +} + + WorkstationL07Model::WorkstationL07Model() : WorkstationModel("Workstation ptask_L07") { if (!ptask_maxmin_system) ptask_maxmin_system = lmm_system_new(1); surf_workstation_model = NULL; surf_network_model = new NetworkL07Model(); surf_cpu_model_pm = new CpuL07Model(); - routing_model_create(static_cast(surf_network_model->createResource("__loopback__", + routing_model_create(static_cast(surf_network_model->createNetworkLink("__loopback__", 498000000, NULL, 0.000015, NULL, SURF_RESOURCE_ON, NULL, @@ -240,12 +272,7 @@ ActionPtr WorkstationL07Model::executeParallelTask(int workstation_nb, return static_cast(action); } -ResourcePtr WorkstationL07Model::createResource(const char *name, double /*power_scale*/, - double /*power_initial*/, - tmgr_trace_t /*power_trace*/, - e_surf_resource_state_t /*state_initial*/, - tmgr_trace_t /*state_trace*/, - xbt_dict_t /*cpu_properties*/) +WorkstationPtr WorkstationL07Model::createWorkstation(const char *name) { WorkstationL07Ptr wk = NULL; xbt_assert(!surf_workstation_resource_priv(surf_workstation_resource_by_name(name)), @@ -287,7 +314,7 @@ xbt_dynar_t WorkstationL07Model::getRoute(WorkstationPtr src, WorkstationPtr dst return route; } -CpuPtr CpuL07Model::createResource(const char *name, xbt_dynar_t powerPeak, +CpuPtr CpuL07Model::createCpu(const char *name, xbt_dynar_t powerPeak, int pstate, double power_scale, tmgr_trace_t power_trace, int core, e_surf_resource_state_t state_initial, @@ -309,7 +336,7 @@ CpuPtr CpuL07Model::createResource(const char *name, xbt_dynar_t powerPeak, return cpu;//FIXME:xbt_lib_get_elm_or_null(host_lib, name); } -NetworkLinkPtr NetworkL07Model::createResource(const char *name, +NetworkLinkPtr NetworkL07Model::createNetworkLink(const char *name, double bw_initial, tmgr_trace_t bw_trace, double lat_initial, @@ -698,113 +725,3 @@ double WorkstationL07Action::getRemains() XBT_OUT(); return m_remains; } - -/*FIXME:remove static void ptask_finalize(void) -{ - xbt_dict_free(&ptask_parallel_task_link_set); - - delete surf_workstation_model; - surf_workstation_model = NULL; - delete surf_network_model; - surf_network_model = NULL; - - ptask_host_count = 0; - - if (ptask_maxmin_system) { - lmm_system_free(ptask_maxmin_system); - ptask_maxmin_system = NULL; - } - }*/ - -/**************************************/ -/******* Resource Private **********/ -/**************************************/ - -/**************************************/ -/*** Resource Creation & Destruction **/ -/**************************************/ - -static void ptask_parse_workstation_init(sg_platf_host_cbarg_t host) -{ - double power_peak = xbt_dynar_get_as(host->power_peak, host->pstate, double); - //cpu->power_peak = power_peak; - xbt_dynar_free(&(host->power_peak)); /* kill memory leak */ - static_cast(surf_workstation_model)->createResource( - host->id, - power_peak, - host->power_scale, - host->power_trace, - host->initial_state, - host->state_trace, - host->properties); -} - -static void ptask_parse_link_init(sg_platf_link_cbarg_t link) -{ - if (link->policy == SURF_LINK_FULLDUPLEX) { - char *link_id; - link_id = bprintf("%s_UP", link->id); - static_cast(surf_network_model)->createResource(link_id, - link->bandwidth, - link->bandwidth_trace, - link->latency, - link->latency_trace, - link->state, - link->state_trace, - link->policy, - link->properties); - xbt_free(link_id); - link_id = bprintf("%s_DOWN", link->id); - static_cast(surf_network_model)->createResource(link_id, - link->bandwidth, - link->bandwidth_trace, - link->latency, - link->latency_trace, - link->state, - link->state_trace, - link->policy, - NULL); /* FIXME: We need to deep copy the - * properties or we won't be able to free - * it */ - xbt_free(link_id); - } else { - static_cast(surf_network_model)->createResource(link->id, - link->bandwidth, - link->bandwidth_trace, - link->latency, - link->latency_trace, - link->state, - link->state_trace, - link->policy, - link->properties); - } - - current_property_set = NULL; -} - -static void ptask_add_traces(){ - static_cast(surf_workstation_model)->addTraces(); -} - -static void ptask_define_callbacks() -{ - sg_platf_host_add_cb(parse_cpu_init); - sg_platf_host_add_cb(ptask_parse_workstation_init); - sg_platf_link_add_cb(ptask_parse_link_init); - sg_platf_postparse_add_cb(ptask_add_traces); -} - -/**************************************/ -/*************** Generic **************/ -/**************************************/ -void surf_workstation_model_init_ptask_L07(void) -{ - XBT_INFO("surf_workstation_model_init_ptask_L07"); - xbt_assert(!surf_cpu_model_pm, "CPU model type already defined"); - xbt_assert(!surf_network_model, "network model type already defined"); - ptask_define_callbacks(); - surf_workstation_model = new WorkstationL07Model(); - ModelPtr model = static_cast(surf_workstation_model); - xbt_dynar_push(model_list, &model); - xbt_dynar_push(model_list_invoke, &model); -} diff --git a/src/surf/workstation_ptask_L07.hpp b/src/surf/workstation_ptask_L07.hpp index 7dd269137c..364ed78a54 100644 --- a/src/surf/workstation_ptask_L07.hpp +++ b/src/surf/workstation_ptask_L07.hpp @@ -48,12 +48,7 @@ public: double shareResources(double now); void updateActionsState(double now, double delta); - ResourcePtr createResource(const char *name, double power_scale, - double power_initial, - tmgr_trace_t power_trace, - e_surf_resource_state_t state_initial, - tmgr_trace_t state_trace, - xbt_dict_t cpu_properties); + WorkstationPtr createWorkstation(const char *name); ActionPtr executeParallelTask(int workstation_nb, void **workstation_list, double *computation_amount, @@ -69,13 +64,7 @@ class CpuL07Model : public CpuModel { public: CpuL07Model() : CpuModel("cpuL07") {}; ~CpuL07Model() {surf_cpu_model_pm = NULL;}; - ResourcePtr createResource(const char *name, double power_scale, - double power_initial, - tmgr_trace_t power_trace, - e_surf_resource_state_t state_initial, - tmgr_trace_t state_trace, - xbt_dict_t cpu_properties); - CpuPtr createResource(const char *name, xbt_dynar_t powerPeak, + CpuPtr createCpu(const char *name, xbt_dynar_t powerPeak, int pstate, double power_scale, tmgr_trace_t power_trace, int core, e_surf_resource_state_t state_initial, @@ -90,7 +79,7 @@ class NetworkL07Model : public NetworkModel { public: NetworkL07Model() : NetworkModel() {}; ~NetworkL07Model() {surf_network_model = NULL;}; - NetworkLinkPtr createResource(const char *name, + NetworkLinkPtr createNetworkLink(const char *name, double bw_initial, tmgr_trace_t bw_trace, double lat_initial, -- 2.20.1