* Re-implement time-independent trace replay using SMPI (at the
smpi_smp_* level) instead of MSG. This should replace
examples/msg/actions/actions.c
+ * Implement support of MPI Datatypes (vectors, hvectors, indexed,
+ hindexed and structs)
* Implement the exchange of non-contiguous data.
[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.
+ * 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:
* Export a sg_cmdline dynar containing all the arguments we got from
the command line.
if(HAVE_MC)
# The availability of libunwind was checked in CompleteInFiles.cmake
# (that includes FindLibunwind.cmake), so simply load it now.
+
+ # This supposes that the host machine is either an AMD or a X86.
+ # This is deeply wrong, and should be fixed by manually loading -lunwind-PLAT (FIXME)
if(PROCESSOR_x86_64)
SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind-x86_64")
- else(PROCESSOR_x86_64)
- SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind")
+ else(PROCESSOR_x86_64)
+ SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind-x86")
endif(PROCESSOR_x86_64)
endif(HAVE_MC)
XBT_INFO("\tOpen file '%s'",file->name);
read = MSG_file_read(ptr,10000000,sizeof(char*),file); // Read for 10Mo
- XBT_INFO("\tHaving read %.1f \ton %s",read,file->name);
+ XBT_INFO("\tHave read %8.1f on %s",read,file->name);
write = MSG_file_write(ptr,100000,sizeof(char*),file); // Write for 100Ko
- XBT_INFO("\tHaving write %.1f \ton %s",write,file->name);
+ XBT_INFO("\tHave written %8.1f on %s",write,file->name);
read = MSG_file_read(ptr,10000000,sizeof(char*),file); // Read for 10Mo
- XBT_INFO("\tHaving read %.1f \ton %s",read,file->name);
+ XBT_INFO("\tHave read %8.1f on %s",read,file->name);
MSG_file_stat(file,&stat);
XBT_INFO("\tFile stat %s Size %.1f",file->name,stat.size);
// Write into the new file
write = MSG_file_write(ptr,100000,sizeof(char*),file); // Write for 100Ko
- XBT_INFO("\tHaving write %.1f \ton %s",write,file->name);
+ XBT_INFO("\tHave written %8.1f on %s",write,file->name);
// Print the stat
MSG_file_stat(file,&stat);
> [ 0.000000] (2:1@alice) Open file './doc/simgrid/examples/platforms/One_cluster_no_backbone.xml'
> [ 0.000000] (3:2@carl) Open file './doc/simgrid/examples/platforms/g5k_cabinets.xml'
> [ 0.000000] (4:3@bob) Open file './doc/simgrid/examples/platforms/nancy.xml'
-> [ 0.000005] (2:1@alice) Having read 482.0 on ./doc/simgrid/examples/platforms/One_cluster_no_backbone.xml
-> [ 0.000040] (4:3@bob) Having read 4028.0 on ./doc/simgrid/examples/platforms/nancy.xml
-> [ 0.000170] (1:0@denise) Having read 17028.0 on ./doc/simgrid/examples/platforms/g5k.xml
-> [ 0.000226] (3:2@carl) Having read 22645.0 on ./doc/simgrid/examples/platforms/g5k_cabinets.xml
-> [ 0.003338] (2:1@alice) Having write 100000.0 on ./doc/simgrid/examples/platforms/One_cluster_no_backbone.xml
-> [ 0.003374] (4:3@bob) Having write 100000.0 on ./doc/simgrid/examples/platforms/nancy.xml
-> [ 0.003504] (1:0@denise) Having write 100000.0 on ./doc/simgrid/examples/platforms/g5k.xml
-> [ 0.003560] (3:2@carl) Having write 100000.0 on ./doc/simgrid/examples/platforms/g5k_cabinets.xml
-> [ 0.004343] (2:1@alice) Having read 100482.0 on ./doc/simgrid/examples/platforms/One_cluster_no_backbone.xml
+> [ 0.000005] (2:1@alice) Have read 482.0 on ./doc/simgrid/examples/platforms/One_cluster_no_backbone.xml
+> [ 0.000040] (4:3@bob) Have read 4028.0 on ./doc/simgrid/examples/platforms/nancy.xml
+> [ 0.000170] (1:0@denise) Have read 17028.0 on ./doc/simgrid/examples/platforms/g5k.xml
+> [ 0.000226] (3:2@carl) Have read 22645.0 on ./doc/simgrid/examples/platforms/g5k_cabinets.xml
+> [ 0.003338] (2:1@alice) Have written 100000.0 on ./doc/simgrid/examples/platforms/One_cluster_no_backbone.xml
+> [ 0.003374] (4:3@bob) Have written 100000.0 on ./doc/simgrid/examples/platforms/nancy.xml
+> [ 0.003504] (1:0@denise) Have written 100000.0 on ./doc/simgrid/examples/platforms/g5k.xml
+> [ 0.003560] (3:2@carl) Have written 100000.0 on ./doc/simgrid/examples/platforms/g5k_cabinets.xml
+> [ 0.004343] (2:1@alice) Have read 100482.0 on ./doc/simgrid/examples/platforms/One_cluster_no_backbone.xml
> [ 0.004343] (2:1@alice) File stat ./doc/simgrid/examples/platforms/One_cluster_no_backbone.xml Size 100482.0
> [ 0.004343] (2:1@alice) Close file './doc/simgrid/examples/platforms/One_cluster_no_backbone.xml'
-> [ 0.004414] (4:3@bob) Having read 104028.0 on ./doc/simgrid/examples/platforms/nancy.xml
+> [ 0.004414] (4:3@bob) Have read 104028.0 on ./doc/simgrid/examples/platforms/nancy.xml
> [ 0.004414] (4:3@bob) File stat ./doc/simgrid/examples/platforms/nancy.xml Size 104028.0
> [ 0.004414] (4:3@bob) Close file './doc/simgrid/examples/platforms/nancy.xml'
-> [ 0.004674] (1:0@denise) Having read 117028.0 on ./doc/simgrid/examples/platforms/g5k.xml
+> [ 0.004674] (1:0@denise) Have read 117028.0 on ./doc/simgrid/examples/platforms/g5k.xml
> [ 0.004674] (1:0@denise) File stat ./doc/simgrid/examples/platforms/g5k.xml Size 117028.0
> [ 0.004674] (1:0@denise) Close file './doc/simgrid/examples/platforms/g5k.xml'
-> [ 0.004786] (3:2@carl) Having read 122645.0 on ./doc/simgrid/examples/platforms/g5k_cabinets.xml
+> [ 0.004786] (3:2@carl) Have read 122645.0 on ./doc/simgrid/examples/platforms/g5k_cabinets.xml
> [ 0.004786] (3:2@carl) File stat ./doc/simgrid/examples/platforms/g5k_cabinets.xml Size 122645.0
> [ 0.004786] (3:2@carl) Close file './doc/simgrid/examples/platforms/g5k_cabinets.xml'
> [ 0.004786] (0:@) Simulation time 0.00478623
> [ 0.000000] (1:0@denise) Unlink file './doc/simgrid/examples/platforms/g5k.xml'
> [ 0.000000] (1:0@denise) Open file './doc/simgrid/examples/platforms/g5k.xml'
> [ 0.000000] (1:0@denise) File stat ./doc/simgrid/examples/platforms/g5k.xml Size 0.0
-> [ 0.003333] (1:0@denise) Having write 100000.0 on ./doc/simgrid/examples/platforms/g5k.xml
+> [ 0.003333] (1:0@denise) Have written 100000.0 on ./doc/simgrid/examples/platforms/g5k.xml
> [ 0.003333] (1:0@denise) File stat ./doc/simgrid/examples/platforms/g5k.xml Size 100000.0
> [ 0.003333] (1:0@denise) Close file './doc/simgrid/examples/platforms/g5k.xml'
> [ 0.003333] (1:0@denise)
#ifdef FLEXML_NEED_BUFFERLIT
static void dax__bufferliteral(char c, int* pp, const char* text)
{
- const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
- assert(s <= e); BUFFERSET(*pp);
- while (++s<e) {
- if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
- else BUFFERPUTC(*s);
- }
- BUFFERDONE;
+ BUFFERSET(*pp);
+ if (c) {
+ const char *s = strchr(text, c), *e = strrchr(text, c);
+ assert(s && e && s <= e);
+ ++s;
+ while (s < e) {
+ if (isspace(*s)) {
+ BUFFERPUTC(' ');
+ do ++s; while (s < e && isspace(*s));
+ } else
+ BUFFERPUTC(*s++);
+ }
+ } else {
+ const char *s = text;
+ while (*s)
+ BUFFERPUTC(*s++);
+ }
+ BUFFERDONE;
}
#endif
#ifdef FLEXML_NEED_BUFFERLIT
static void surfxml_bufferliteral(char c, int* pp, const char* text)
{
- const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
- assert(s <= e); BUFFERSET(*pp);
- while (++s<e) {
- if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
- else BUFFERPUTC(*s);
- }
- BUFFERDONE;
+ BUFFERSET(*pp);
+ if (c) {
+ const char *s = strchr(text, c), *e = strrchr(text, c);
+ assert(s && e && s <= e);
+ ++s;
+ while (s < e) {
+ if (isspace(*s)) {
+ BUFFERPUTC(' ');
+ do ++s; while (s < e && isspace(*s));
+ } else
+ BUFFERPUTC(*s++);
+ }
+ } else {
+ const char *s = text;
+ while (*s)
+ BUFFERPUTC(*s++);
+ }
+ BUFFERDONE;
}
#endif
#ifdef FLEXML_NEED_BUFFERLIT
static void graphxml_bufferliteral(char c, int* pp, const char* text)
{
- const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
- assert(s <= e); BUFFERSET(*pp);
- while (++s<e) {
- if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
- else BUFFERPUTC(*s);
- }
- BUFFERDONE;
+ BUFFERSET(*pp);
+ if (c) {
+ const char *s = strchr(text, c), *e = strrchr(text, c);
+ assert(s && e && s <= e);
+ ++s;
+ while (s < e) {
+ if (isspace(*s)) {
+ BUFFERPUTC(' ');
+ do ++s; while (s < e && isspace(*s));
+ } else
+ BUFFERPUTC(*s++);
+ }
+ } else {
+ const char *s = text;
+ while (*s)
+ BUFFERPUTC(*s++);
+ }
+ BUFFERDONE;
}
#endif