X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ce1289d4421b08ce6f69d8203784ee648671972e..2bd9a37bbb72eac4ed613b3d6953aba6555e2e92:/src/surf/surf_interface.cpp diff --git a/src/surf/surf_interface.cpp b/src/surf/surf_interface.cpp index cc093ad3ce..c3adc90047 100644 --- a/src/surf/surf_interface.cpp +++ b/src/surf/surf_interface.cpp @@ -99,9 +99,7 @@ xbt_dict_t watched_hosts_lib; surf_callback(void, void) surfExitCallbacks; s_surf_model_description_t surf_plugin_description[] = { - {"Energy", - "Cpu energy consumption.", - sg_energy_plugin_init}, + {"Energy", "Cpu energy consumption.", sg_energy_plugin_init}, {NULL, NULL, NULL} /* this array must be NULL terminated */ }; @@ -117,6 +115,9 @@ s_surf_model_description_t surf_network_model_description[] = { {"SMPI", "Realistic network model specifically tailored for HPC settings (accurate modeling of slow start with correction factors on three intervals: < 1KiB, < 64 KiB, >= 64 KiB)", surf_network_model_init_SMPI}, + {"IB", + "Realistic network model specifically tailored for HPC settings, with Infiniband contention model", + surf_network_model_init_IB}, {"CM02", "Legacy network analytic model (Very similar to LV08, but without corrective factors. The timings of small messages are thus poorly modeled).", surf_network_model_init_CM02}, @@ -583,8 +584,7 @@ double Model::shareResourcesLazy(double now) action->getMaxDuration()); if (min != -1) { - action->heapRemove(p_actionHeap); - action->heapInsert(p_actionHeap, min, max_dur_flag ? MAX_DURATION : NORMAL); + action->heapUpdate(p_actionHeap, min, max_dur_flag ? MAX_DURATION : NORMAL); XBT_DEBUG("Insert at heap action(%p) min %f now %f", action, min, now); } else DIE_IMPOSSIBLE; @@ -672,10 +672,12 @@ void Model::updateActionsState(double now, double delta) void Model::updateActionsStateLazy(double /*now*/, double /*delta*/) { + THROW_UNIMPLEMENTED; } void Model::updateActionsStateFull(double /*now*/, double /*delta*/) { + THROW_UNIMPLEMENTED; } /************ @@ -871,7 +873,7 @@ void Action::setBound(double bound) { XBT_IN("(%p,%g)", this, bound); if (p_variable) - lmm_update_variable_bound(getModel()->getMaxminSystem(), getVariable(), bound); + lmm_update_variable_bound(getModel()->getMaxminSystem(), p_variable, bound); if (getModel()->getUpdateMechanism() == UM_LAZY && getLastUpdate()!=surf_get_clock()) heapRemove(getModel()->getActionHeap()); @@ -1006,6 +1008,16 @@ void Action::heapRemove(xbt_heap_t heap) } } +void Action::heapUpdate(xbt_heap_t heap, double key, enum heap_action_type hat) +{ + m_hat = hat; + if (m_indexHeap >= 0) { + xbt_heap_update(heap, m_indexHeap, key); + }else{ + xbt_heap_push(heap, this, key); + } +} + /* added to manage the communication action's heap */ void surf_action_lmm_update_index_heap(void *action, int i) { ((ActionPtr)action)->updateIndexHeap(i); @@ -1087,4 +1099,3 @@ void Action::updateRemainingLazy(double now) m_lastUpdate = now; m_lastValue = lmm_variable_getvalue(getVariable()); } -