--- /dev/null
+/*
+ * datatypes.h
+ *
+ * Created on: Nov 28, 2013
+ * Author: bedaride
+ */
+
+#ifndef SIMGRID_DATATYPES_H_
+#define SIMGRID_DATATYPES_H_
+
+typedef struct ws_params {
+ int ncpus;
+ sg_size_t ramsize;
+ int overcommit;
+
+ /* The size of other states than memory pages, which is out-of-scope of dirty
+ * page tracking. */
+ long devsize;
+ int skip_stage1;
+ int skip_stage2;
+ double max_downtime;
+
+ double dp_rate;
+ double dp_cap; /* bytes per 1 flop execution */
+
+ double xfer_cpu_overhead;
+ double dpt_cpu_overhead;
+
+ /* set migration speed */
+ double mig_speed;
+} s_ws_params_t, *ws_params_t;
+
+#endif /* SIMGRID_DATATYPES_H_ */
#include "xbt/parmap.h"
#include "xbt/swag.h"
#include "simgrid/platf.h"
-#include "surf/surf.h"
+#include "simgrid/datatypes.h"
SG_BEGIN_DECL()
} e_smx_state_t;
/** @} */
-
typedef struct s_smx_timer* smx_timer_t;
/* ******************************** Synchro ************************************ */
#include "xbt/lib.h"
#include "surf/surf_routing.h"
#include "simgrid/platf_interface.h"
+#include "simgrid/datatypes.h"
SG_BEGIN_DECL()
/* Actions and models are highly connected structures... */
} e_surf_vm_state_t;
-typedef struct ws_params {
- int ncpus;
- sg_size_t ramsize;
- int overcommit;
-
- /* The size of other states than memory pages, which is out-of-scope of dirty
- * page tracking. */
- long devsize;
- int skip_stage1;
- int skip_stage2;
- double max_downtime;
-
- double dp_rate;
- double dp_cap; /* bytes per 1 flop execution */
-
- double xfer_cpu_overhead;
- double dpt_cpu_overhead;
-
- /* set migration speed */
- double mig_speed;
-} s_ws_params_t, *ws_params_t;
-
/***************************/
/* Generic model object */
/***************************/
xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
}
+NetworkSmpiModel::NetworkSmpiModel()
+ : NetworkCm02Model() {
+ m_haveGap=true;
+}
+
+NetworkSmpiModel::~NetworkSmpiModel(){
+ if (gap_lookup) {
+ xbt_dict_free(&gap_lookup);
+ }
+}
+
void NetworkSmpiModel::gapAppend(double size, const NetworkCm02LinkLmmPtr link, NetworkCm02ActionLmmPtr action)
{
const char *src = link->m_name;
xbt_dynar_foreach(smpi_lat_factor, iter, fact) {
if (size <= fact.factor) {
XBT_DEBUG("%f <= %ld return %f", size, fact.factor, current);
+ xbt_dynar_free(&smpi_lat_factor);
return current;
}else
current=fact.value;
}
XBT_DEBUG("%f > %ld return %f", size, fact.factor, current);
-
+ xbt_dynar_free(&smpi_lat_factor);
return current;
}
class NetworkSmpiModel : public NetworkCm02Model {
public:
- NetworkSmpiModel() : NetworkCm02Model() {m_haveGap=true;};
+ NetworkSmpiModel();
+ ~NetworkSmpiModel();
+
void gapAppend(double size, const NetworkCm02LinkLmmPtr link, NetworkCm02ActionLmmPtr action);
void gapRemove(ActionLmmPtr action);
double latencyFactor(double size);