Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
setter function only need a simcall in MC or with parallel execs
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Sun, 6 Nov 2022 00:17:57 +0000 (01:17 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Sun, 6 Nov 2022 00:24:31 +0000 (01:24 +0100)
commit7672ae43c2b49a7dcdc0976cc89a05cc87ae534c
tree579510226a7bc229283ad028f6fd39d9ab7fb462
parentb27427e74deb7f4f121f441d889d03449c4345d6
setter function only need a simcall in MC or with parallel execs

This change introduce a new kind of simcalls alongside
simcall_answered and simcall_blocking: simcall_run_object_access that
is dedicated to object setter functions.

This is an answered simcall if running in // or in MC, and just a
regular function call if runnning a plain simulation.

This may speed up large simulations with a huge amount of activities,
but the perf improvement is not evaluated yet.

The performance could be further improved with a SIMGRID_HAVE_PARALLEL
option allowing the compiler to know beforhand that the simcall branch
will never be taken. But such an option would require to be tested and
I'm too lazy for that.
26 files changed:
examples/c/exec-dvfs/exec-dvfs.tesh
examples/cpp/exec-dvfs/s4u-exec-dvfs.tesh
examples/python/exec-dvfs/exec-dvfs.tesh
include/simgrid/forward.h
include/simgrid/simix.hpp
src/kernel/activity/ActivityImpl.hpp
src/kernel/actor/ActorImpl.hpp
src/kernel/actor/CommObserver.cpp
src/kernel/actor/Simcall.cpp
src/kernel/actor/Simcall.hpp
src/kernel/actor/SimcallObserver.cpp
src/kernel/actor/SimcallObserver.hpp
src/kernel/resource/Resource.hpp
src/mc/compare.cpp
src/mc/transition/Transition.cpp
src/mc/transition/Transition.hpp
src/s4u/s4u_ConditionVariable.cpp
src/s4u/s4u_Disk.cpp
src/s4u/s4u_Exec.cpp
src/s4u/s4u_Host.cpp
src/s4u/s4u_Io.cpp
src/s4u/s4u_Link.cpp
src/s4u/s4u_VirtualMachine.cpp
src/simix/libsmx.cpp
src/surf/HostImpl.hpp
teshsuite/s4u/storage_client_server/storage_client_server.tesh