X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c3890db8638c24b07758f57081aed4932379b5de..155a1e0df5db6960042e06036b942b9f93378b05:/src/surf/surf_interface.cpp diff --git a/src/surf/surf_interface.cpp b/src/surf/surf_interface.cpp index cc093ad3ce..2e799547f8 100644 --- a/src/surf/surf_interface.cpp +++ b/src/surf/surf_interface.cpp @@ -117,6 +117,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 +586,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 +674,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 +875,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 +1010,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);