SimGrid (3.8) NOT RELEASED; urgency=low
- The "SimGrid makes psssshiiiit and jumps into the cloud" release.
+ The Psssshiiiit release: SimGrid jumps into the Cloud.
MSG:
* Add an experimental interface to manipulate VMs. They are mainly
process groups with very few intrinsic semantic, but they should
allow you to build the semantic you want easily.
* New function: MSG_host_set_property_value()
- * Deprecate functions MSG_global_init() / MSG_global_init_args()
- Please use MSG_init() instead. (reducing the amount of entry
- points in the library helps us).
- * Make it impossible to link against the wrong version of the lib
+ * New function: MSG_process_on_exit(). To clean memory in all cases.
* Bug fixes that made the host (and link) failures unusable.
* Add a way to auto-restart process when the host in which they are
executing comes back (ON_FAILURE="RESTART" on deployment file,
- MSG_process_auto_restart_set).
+ MSG_process_auto_restart_set).
* Use the "msg_" prefix for all datatypes (instead of m_, msg_ and MSG_),
please stop using the old ones, they are DEPRECATED.
+
+ * Deprecate functions MSG_global_init() / MSG_global_init_args()
+ Please use MSG_init() instead. (reducing the amount of entry
+ points in the library helps us).
+ * Make it impossible to link against the wrong version of the lib
* Deprecate MSG_clean(). No need to call it anymore.
* Function MSG_get_host_number() is not deprecated anymore.
Documentation:
* Split the doc into a user guide and a reference guide.
+ * Start a developper guide to help people hacking on SimGrid.
Cmake:
+ * Enable tracing by default. This modules rocks you should use it.
* Remove option custom_flags. Now use environment variables CFLAGS
and LDFLAGS.
- * Enable tracing by default. This modules rocks you should use it.
* Use default cmake things to detect lua instead of home grown ones.
* New option "enable_mallocators" to disable mallocators, for debugging
purpose ("on" by default).
Simix:
* Bug fixes around the resource failures: don't let the processes
survive the host they are running onto.
- * Add an interface to execute cleanup functions when a process is killed,
- to avoid memory leaks.
* Add an interface to auto-restart processes when the host in which they are
executing comes back.
* Ensures that SIMIX_clean is called automatically. It's not part of
[Khalid Hasanov & Jean-Noel Quintin] Thanks for the patch, guys.
* Correct behavior of smpi/sender_gap and set its default value to 0
* Add option to asynchronously send small messages to allow better
- simulation of pt2pt communications. --cfg=smpi/async_small_threshold:value
- specifies the size in bytes under which messages will be asynchronously sent.
+ simulation of pt2pt communications. --cfg=smpi/async_small_threshold:value
+ specifies the size in bytes under which messages will be asynchronously sent.
* Add support of MPI_Iprobe, MPI_Probe, MPI_Testall, MPI_Wtick functions
* SMPI now handles more MPI specific values in input. Closes [#14389] and [#14388]
-
-
+
SimGrid:
+ * New C interface to define a platform: XML is now optional.
+ For more info, please check include/simgrid/platf.h.
+ * New interface to define random platforms from the C:
+ For more info, please check include/simgrid/platf_generator.h and
+ examples/msg/masterslave/masterslave_platfgen.c
* Export a sg_cmdline dynar containing all the arguments we got from
the command line.
\ V / __/ | \__ \ | (_) | | | | ___) | (_) |
\_/ \___|_| |___/_|\___/|_| |_| |____(_)___/
-(to complete)
+The Psssshiiiit release: SimGrid jumps into the Cloud.
+
+ * Experimental interface to manipulate VMs, EC2-style.
+ * Fixes around process restart and stochastic workloads
+ * platf: New C interface to create fixed or random platforms
+ * SimDag: Many fixes and improvements of typed tasks
+ * SMPI now covers more of the MPI interface.
+ More datatypes, more functions, more robust.
+ * Model-checking: mmalloc is more robust to user errors.
_ _____ _____ _
__ _____ _ __ ___(_) ___ _ __ |___ /|___ / |
\ \ / / _ \ '__/ __| |/ _ \| '_ \ |_ \ / /| |
# teshsuite/xbt
ADD_TEST(xbt-log-large ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/xbt/log_large_test.tesh)
ADD_TEST(xbt-log-parallel ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/xbt/parallel_log_crashtest.tesh)
- IF(${ARCH_32_BITS})
- ADD_TEST(xbt-mmalloc-32 ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/xbt/mmalloc_32.tesh)
- ELSE(${ARCH_32_BITS})
- ADD_TEST(xbt-mmalloc-64 ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/xbt/mmalloc_64.tesh)
- ENDIF(${ARCH_32_BITS})
+ IF(HAVE_MMAP)
+ IF(${ARCH_32_BITS})
+ ADD_TEST(xbt-mmalloc-32 ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/xbt/mmalloc_32.tesh)
+ ELSE(${ARCH_32_BITS})
+ ADD_TEST(xbt-mmalloc-64 ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/xbt/mmalloc_64.tesh)
+ ENDIF(${ARCH_32_BITS})
+ ENDIF(HAVE_MMAP)
# teshsuite/gras/datadesc directory
ADD_TEST(tesh-gras-dd-mem ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/gras/datadesc/datadesc_mem.tesh)
> [ 0.000000] (8:peer@McGee) Hi, I'm joining the network with id 8
> [ 3000.000000] (1:tracker@Jacquelin) Tracker is leaving
> [ 5000.005340] (5:peer@Geoff) Here is my current status: 1111111111
-> [ 5000.012389] (7:peer@iRMX) Here is my current status: 1111111111
+> [ 5000.013261] (7:peer@iRMX) Here is my current status: 1111111111
> [ 5000.048881] (2:peer@Boivin) Here is my current status: 1111111111
-> [ 5000.827195] (8:peer@McGee) Here is my current status: 1111111111
-> [ 5000.832370] (3:peer@Jean_Yves) Here is my current status: 1111111111
-> [ 5000.897047] (4:peer@TeX) Here is my current status: 1111111111
-> [ 5000.897047] (6:peer@Disney) Here is my current status: 1111111111
+> [ 5000.827966] (8:peer@McGee) Here is my current status: 1111111111
+> [ 5000.833962] (3:peer@Jean_Yves) Here is my current status: 1111111111
+> [ 5000.897269] (4:peer@TeX) Here is my current status: 1111111111
+> [ 5000.897269] (6:peer@Disney) Here is my current status: 1111111111
XBT_LOG_NEW_DEFAULT_CATEGORY(msg_messages, "Messages specific for the message factory");
-#define BYTES_TO_MB(x) ((long double)x/1048576.0)
#define BITS_TO_BYTES(x) ((x / 8) + (x % 8) ? 1 : 0)
/**
msg_task_t task_message_new(e_message_type type, const char *issuer_host_name,
const char *mailbox, int peer_id, int size)
{
- long double size_mb = BYTES_TO_MB(size);
message_t message = xbt_new(s_message_t, 1);
message->issuer_host_name = issuer_host_name;
message->peer_id = peer_id;
message->mailbox = mailbox;
message->type = type;
- msg_task_t task = MSG_task_create(NULL, 0, size_mb, message);
- XBT_DEBUG("type: %d size: %.20Lg (%d)", type, size_mb, size);
+ msg_task_t task = MSG_task_create(NULL, 0, size, message);
+ XBT_DEBUG("type: %d size: %d", (int)type, size);
return task;
}
case MESSAGE_BITFIELD: size = MESSAGE_BITFIELD_SIZE; break;
case MESSAGE_REQUEST: size = MESSAGE_REQUEST_SIZE; break;
case MESSAGE_PIECE: size = MESSAGE_PIECE_SIZE; break;
+ case MESSAGE_CANCEL: size = MESSAGE_CANCEL_SIZE; break;
}
return size;
}
MESSAGE_HAVE,
MESSAGE_BITFIELD,
MESSAGE_REQUEST,
- MESSAGE_PIECE
+ MESSAGE_PIECE,
+ MESSAGE_CANCEL
} e_message_type;
/**
}
}
break;
+ case MESSAGE_CANCEL:
+ break;
}
//Update the peer speed.
if (remote_peer) {
XBT_DEBUG("Received a task (%p)", task_received);
task_data_t ans_data = MSG_task_get_data(task_received);
- if (MC_is_active()) {
- // the model-checker is expected to find a counter-example here.
- //
- // As you can see in the test right below, task_received is not always equal to task_sent
- // (as messages from differing round can interleave). But the previous version of this code
- // wrongly assumed that, leading to problems. But this only occured on large platforms,
- // leading to hardly usable traces. So we used the model-checker to track down the issue,
- // and we came down to this test, that explained the bug in a snap.
- MC_assert(task_received == task_sent);
- }
+ // Once upon a time, our code assumed that here, task_received != task_sent all the time
+ //
+ // This assumption is wrong (as messages from differing round can interleave), leading to a bug in our code.
+ // We failed to find this bug directly, as it only occured on large platforms, leading to hardly usable traces.
+ // Instead, we used the model-checker to track down the issue by adding the following test here in the code:
+ // if (MC_is_active()) {
+ // MC_assert(task_received == task_sent);
+ // }
+ // That explained the bug in a snap, with a very cool example and everything.
+ //
+ // This MC_assert is now desactivated as the case is now properly handled in our code and we don't want the
+ // MC to fail any further under that condition, but this comment is here to as a memorial for this first
+ // brillant victory of the model-checking in the SimGrid community :)
if (task_received != task_sent) {
// this is not the expected answer
add_executable(log_large_test log_large_test.c)
add_executable(parallel_log_crashtest parallel_log_crashtest.c)
-add_executable(mmalloc_test mmalloc_test.c)
+if(HAVE_MMAP)
+ add_executable(mmalloc_test mmalloc_test.c)
+endif(HAVE_MMAP)
### Add definitions for compile
if(NOT WIN32)
target_link_libraries(log_large_test gras m pthread )
target_link_libraries(parallel_log_crashtest gras m pthread )
- target_link_libraries(mmalloc_test gras m pthread )
+ if(HAVE_MMAP)
+ target_link_libraries(mmalloc_test gras m pthread )
+ endif(HAVE_MMAP)
else(NOT WIN32)
target_link_libraries(log_large_test gras)
target_link_libraries(parallel_log_crashtest gras)
- target_link_libraries(mmalloc_test gras)
+ if(HAVE_MMAP)
+ target_link_libraries(mmalloc_test gras)
+ endif(HAVE_MMAP)
endif(NOT WIN32)
set(tesh_files