replace xbt_dynar_member by xbt_dynar_search_or_negative in this test.
There is a weird bug with xbt_dynar_member on some systems.
When an exception is raised, backtracking mechanism of libc6 can cause segfaults (and valgrind complains quite a lot, even on systems where it does not crash)
Is this related to https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=735090 ?
example obtained stack
Invalid read of size 4
at 0x476E383: backtrace (backtrace.c:141)
by 0x43DC03B: xbt_backtrace_current (backtrace_linux.c:84)
by 0x43DB200: xbt_dynar_search (dynar.c:474)
by 0x43DB31F: xbt_dynar_member (dynar.c:511)
by 0x80494A3: test_launcher (host_on_off_processes.c:35)
by 0x43C889E: smx_ctx_sysv_wrapper (smx_context_sysv.c:187)
by 0x46B2BDA: makecontext (makecontext.S:87)
As functionality is the same, using the exception-less version of xbt_dynar_member should avoid the problem, until we find out more about it
Add preliminary support for MPI_Pack, MPI_Pack_size, and MPI_Unpack.
Activate tests for these functions. Somes cases with too complex imbricated datatypes are not supported (yet).
Add MPI_Info_* support.
This adds MPI_Info_create, MPI_Info_free, MPI_Info_get, MPI_Info_dup, MPI_Info_delete, MPI_Info_get_nkeys, MPI_Info_get_nthkey, MPI_Info_get_valuelen functions.
This is just basically a xbt dict wrapper.
We may have issues with the get_nthkey, as the xbt dict does not really keep the order.. but this mpi call is hum ... stupid? aniway.
Gabriel Corona [Mon, 3 Nov 2014 12:04:18 +0000 (13:04 +0100)]
[mc] Do nto clean the main stack
We only need to clean the stacks of the application processes.
Otherwise, we spend a *lot* of time cleaniong the stack in the MC code
which slows SimGridMC a lot and is useless anyway.
The way we check if we need to clean the stack is currently quite
haskish and could be improved.
Martin Quinson [Sun, 2 Nov 2014 23:42:58 +0000 (00:42 +0100)]
[popping] allow to omit the handler
simcalls handlers are good to get extra arguments from the simcall
(such as the issuer) or to check the parameters, but when there is no
such thing to do, they just load the picture for nothing.
Martin Quinson [Sun, 2 Nov 2014 22:58:33 +0000 (23:58 +0100)]
rename smx_action_t to smx_synchro_t
This is an old idea, that I want to implement since at least 3 years.
It removes an ambiguity with surf_action_t, and makes it explicit that
these things are a way to synchronize the processes with their
environment.
Martin Quinson [Sun, 2 Nov 2014 01:23:31 +0000 (02:23 +0100)]
Generate automatically the simcall_HANDLER_* prototypes
- Writing this code manually was burdensome
- This allows to check that the definition in simcall.in actually
match the handler prototype (safer as we are casting wildly)
- This allows to detect (and destroy) some now unused simcalls
Martin Quinson [Sat, 1 Nov 2014 21:25:06 +0000 (22:25 +0100)]
Remove the 'TUTORIAL: New API' chunks
This loads the code, and I'm not sure that it is of any help,
actually. Adding a new API is rather uncommon, and the existing ones
are clean enough to serve as an example, nowadays.
Gabriel Corona [Fri, 31 Oct 2014 12:37:45 +0000 (13:37 +0100)]
[mc] Make MC_resolve_subtype() and MC_resolve_subtype() static functions of mc_dwarf.c
Those functions belong to the mc_dwarf.c layer and are only used there
anyway. Move them here, mark them as static in order to reduce the
number of exported symbols and reduce the cross-layers dependencies.
Augustin Degomme [Tue, 21 Oct 2014 12:21:15 +0000 (14:21 +0200)]
Apply patch suggested by fabien Chaix. This avoids issues with reqq being deleted in replay waitall
This also removes the MPI barrier in replay finalize, which was not needed anymore
Gabriel Corona [Fri, 17 Oct 2014 12:50:21 +0000 (14:50 +0200)]
[smpi+mc] When restoring a snapshot, always remap the SMPI privatisation segment
After restoring the global variables in a snapshot, the global
variable containing the currently active SMPI privatization segment is
overwritten. As a consequence, the segment SMPI thinks active might be
inconsistent with the currently active segment (which the kernels
knows about).
In this case, we want to remap the segment regardless of what SMPI
thinks.
We might be more clever to avoid unecessary segment switch if the
segment which is really mapped is the same as the one we want.
Augustin Degomme [Thu, 16 Oct 2014 11:35:26 +0000 (13:35 +0200)]
Add a new Infiniband network model, based on the works of Jerome Vienne.
This computes penalties on communications to account for the slowdowns experimented on real systems, and modeled by jerome
check http://mescal.imag.fr/membres/jean-marc.vincent/index.html/PhD/Vienne.pdf for details
known issue: doesn't work yet with permanent receive mode, as some surf actions are not released properly