Alternative for smpi/or, smpi/os and smpi/ois configuration options.
Documentation:
- * SimGrid MPI calibration of a Grid5000 cluster" presenting how to properly
- calibrate MPI communications in SimGrid.
+ - New section: "SimGrid MPI calibration of a Grid5000 cluster"
+ presenting how to properly calibrate MPI communications in SimGrid.
Python:
- Thread contexts are used by default with Python bindings. Other kinds of
include teshsuite/s4u/wait-all-for/wait-all-for.tesh
include teshsuite/s4u/wait-any-for/wait-any-for.cpp
include teshsuite/s4u/wait-any-for/wait-any-for.tesh
-include teshsuite/simdag/availability/availability.c
-include teshsuite/simdag/availability/availability.tesh
include teshsuite/simdag/flatifier/bogus_missing_gateway.tesh
include teshsuite/simdag/flatifier/bogus_two_hosts_asymetric.tesh
include teshsuite/simdag/flatifier/flatifier.cpp
\_/ \___|_| |___/_|\___/|_| |_| |____(_)____/ \___/
(unreleased)
+ * SimDAG is finally removed, fully superseeded by S4U.
+ * New documentation on calibrating MPI.
+ *
+ * (+ many bug fixes and internal refactoring)
_ _____ ____ ___
__ _____ _ __ ___(_) ___ _ __ |___ / |___ \ / _ \
\ \ / / _ \ '__/ __| |/ _ \| '_ \ |_ \ __) | (_) |
set(_${example}_factories "^thread")
endforeach()
-if(HAVE_GRAPHVIZ)
- add_executable (s4u-dag-from-dot EXCLUDE_FROM_ALL dag-from-dot/s4u-dag-from-dot.cpp)
- target_link_libraries(s4u-dag-from-dot simgrid)
- set_target_properties(s4u-dag-from-dot PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/dag-from-dot)
- add_dependencies(tests s4u-dag-from-dot)
-
- ADD_TESH(s4u-dag-from-dot --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/cpp/dag-from-dot
- --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms
- --cd ${CMAKE_BINARY_DIR}/examples/cpp/dag-from-dot
- ${CMAKE_HOME_DIRECTORY}/examples/cpp/dag-from-dot/s4u-dag-from-dot.tesh)
- endif()
- set(examples_src ${examples_src} ${CMAKE_CURRENT_SOURCE_DIR}/dag-from-dot/s4u-dag-from-dot.cpp)
- set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/dag-from-dot/s4u-dag-from-dot.tesh)
-
-
if(SIMGRID_HAVE_MC)
add_executable (s4u-mc-bugged1-liveness EXCLUDE_FROM_ALL mc-bugged1-liveness/s4u-mc-bugged1-liveness.cpp)
target_link_libraries(s4u-mc-bugged1-liveness simgrid)
endif()
endif()
-if(SIMGRID_HAVE_NS3)
- add_executable (s4u-network-ns3 EXCLUDE_FROM_ALL network-ns3/s4u-network-ns3.cpp)
- target_link_libraries(s4u-network-ns3 simgrid)
- set_target_properties(s4u-network-ns3 PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/network-ns3)
- add_dependencies(tests s4u-network-ns3)
- add_executable (s4u-network-ns3-wifi EXCLUDE_FROM_ALL network-ns3-wifi/s4u-network-ns3-wifi.cpp)
- target_link_libraries(s4u-network-ns3-wifi simgrid)
- set_target_properties(s4u-network-ns3-wifi PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/network-ns3-wifi)
- add_dependencies(tests s4u-network-ns3-wifi)
+if(NOT HAVE_GRAPHVIZ)
+ set(_s4u-dag-from-dot_disable 1)
+endif()
+
+if(NOT SIMGRID_HAVE_NS3)
+ foreach (example network-ns3 network-ns3-wifi)
+ set(_${example}_disable 1)
+ endforeach()
endif()
# Deal with each example
comm-pingpong comm-ready comm-serialize comm-suspend comm-wait comm-waitany comm-waitall comm-waituntil
comm-dependent comm-host2host comm-failure comm-throttling
cloud-capping cloud-migration cloud-simple
- dag-comm dag-failure dag-io dag-simple
+ dag-comm dag-from-dot dag-failure dag-io dag-simple
dht-chord dht-kademlia
energy-exec energy-boot energy-link energy-vm energy-exec-ptask energy-wifi
engine-filtering engine-run-partial
exec-ptask-multicore exec-cpu-nonlinear exec-cpu-factors exec-failure
maestro-set
mc-bugged1 mc-bugged2 mc-electric-fence mc-failing-assert
- network-wifi
+ network-ns3 network-ns3-wifi network-wifi
io-async io-priority io-degradation io-file-system io-file-remote io-disk-raw io-dependent
platform-failures platform-profile platform-properties
plugin-host-load plugin-link-load plugin-prodcons
--setenv bindir=${CMAKE_CURRENT_BINARY_DIR}/${example}
--setenv libdir=${CMAKE_BINARY_DIR}/lib
--setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms
+ --setenv srcdir=${CMAKE_CURRENT_SOURCE_DIR}/${example}
--cd ${CMAKE_CURRENT_SOURCE_DIR}/${example}
${CMAKE_HOME_DIRECTORY}/examples/cpp/${example}/s4u-${example}.tesh)
else()
${CMAKE_HOME_DIRECTORY}/examples/cpp/${example}/s4u-${example}.tesh)
endforeach()
-# ns3-tests
-if(SIMGRID_HAVE_NS3)
- ADD_TESH_FACTORIES(s4u-network-ns3 "*"
- --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/cpp
- --setenv bindir=${CMAKE_BINARY_DIR}/examples/cpp
- --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms
- ${CMAKE_HOME_DIRECTORY}/examples/cpp/network-ns3/s4u-network-ns3.tesh)
- ADD_TESH_FACTORIES(s4u-network-ns3-wifi "*"
- --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/cpp
- --setenv bindir=${CMAKE_BINARY_DIR}/examples/cpp
- --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms
- ${CMAKE_HOME_DIRECTORY}/examples/cpp/network-ns3-wifi/s4u-network-ns3-wifi.tesh)
-endif()
# Examples not accepting factories
##################################
# Add all extra files to the archive
####################################
-set(examples_src ${examples_src} ${CMAKE_CURRENT_SOURCE_DIR}/mc-bugged1-liveness/s4u-mc-bugged1-liveness.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/network-ns3/s4u-network-ns3.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/network-ns3-wifi/s4u-network-ns3-wifi.cpp PARENT_SCOPE)
+set(examples_src ${examples_src} ${CMAKE_CURRENT_SOURCE_DIR}/mc-bugged1-liveness/s4u-mc-bugged1-liveness.cpp PARENT_SCOPE)
set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/comm-pingpong/simix-breakpoint.tesh
${CMAKE_CURRENT_SOURCE_DIR}/mc-bugged1-liveness/s4u-mc-bugged1-liveness.tesh
- ${CMAKE_CURRENT_SOURCE_DIR}/mc-bugged1-liveness/s4u-mc-bugged1-liveness-visited.tesh
- ${CMAKE_CURRENT_SOURCE_DIR}/network-ns3/s4u-network-ns3.tesh
- ${CMAKE_CURRENT_SOURCE_DIR}/network-ns3-wifi/s4u-network-ns3-wifi.tesh PARENT_SCOPE)
+ ${CMAKE_CURRENT_SOURCE_DIR}/mc-bugged1-liveness/s4u-mc-bugged1-liveness-visited.tesh PARENT_SCOPE)
set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/actor-create/s4u-actor-create_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/actor-lifetime/s4u-actor-lifetime_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/actor-yield/s4u-actor-yield_d.xml
#!/usr/bin/env tesh
-$ ${bindir:=.}/network-ns3-wifi/s4u-network-ns3-wifi ${platfdir}/wifi_ns3.xml "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
+$ ${bindir:=.}/s4u-network-ns3-wifi ${platfdir}/wifi_ns3.xml "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'ns-3'
> [STA0-1:receiver(2)] [ns3_wifi_example/INFO] [1] STA0-1 received 100000 bytes from STA0-0
> [STA0-0:receiver(4)] [ns3_wifi_example/INFO] [2] STA0-0 received 100000 bytes from STA0-1
p 3hosts 2links
-$ ${bindir:=.}/network-ns3/s4u-network-ns3 ${platfdir}/small_platform_one_link_routes.xml ${srcdir}/network-ns3/3hosts_2links_d.xml --cfg=network/model:ns-3 "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
+$ ${bindir:=.}/s4u-network-ns3 ${platfdir}/small_platform_one_link_routes.xml ${srcdir}/3hosts_2links_d.xml --cfg=network/model:ns-3 "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'ns-3'
> [Jupiter:worker(2)] [s4u_test/INFO] FLOW[1] : Receive 100 bytes from Tremblay to Jupiter
p 6hosts 3links
-$ ${bindir:=.}/network-ns3/s4u-network-ns3 ${platfdir}/small_platform_one_link_routes.xml ${srcdir}/network-ns3/3links_d.xml --cfg=network/model:ns-3 "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
+$ ${bindir:=.}/s4u-network-ns3 ${platfdir}/small_platform_one_link_routes.xml ${srcdir}/3links_d.xml --cfg=network/model:ns-3 "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'ns-3'
> [Jupiter:worker(2)] [s4u_test/INFO] FLOW[1] : Receive 10000 bytes from Tremblay to Jupiter
> [Ginette:worker(4)] [s4u_test/INFO] FLOW[2] : Receive 10000 bytes from Fafard to Ginette
> [Lovelace:worker(6)] [s4u_test/INFO] FLOW[3] : Receive 10000 bytes from Bourassa to Lovelace
-$ ${bindir:=.}/network-ns3/s4u-network-ns3 ${platfdir}/small_platform_one_link_routes.xml ${srcdir}/network-ns3/3links-timer_d.xml --cfg=network/model:ns-3 "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
+$ ${bindir:=.}/s4u-network-ns3 ${platfdir}/small_platform_one_link_routes.xml ${srcdir}/3links-timer_d.xml --cfg=network/model:ns-3 "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'ns-3'
> [Jupiter:worker(2)] [s4u_test/INFO] FLOW[1] : Receive 10000 bytes from Tremblay to Jupiter
> [Ginette:worker(4)] [s4u_test/INFO] FLOW[2] : Receive 10000 bytes from Fafard to Ginette
p One cluster
-$ ${bindir:=.}/network-ns3/s4u-network-ns3 ${platfdir}/cluster_backbone.xml ${srcdir}/network-ns3/one_cluster_d.xml --cfg=network/model:ns-3 "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
+$ ${bindir:=.}/s4u-network-ns3 ${platfdir}/cluster_backbone.xml ${srcdir}/one_cluster_d.xml --cfg=network/model:ns-3 "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'ns-3'
> [node-6.simgrid.org:worker(2)] [s4u_test/INFO] FLOW[1] : Receive 100 bytes from node-2.simgrid.org to node-6.simgrid.org
p Dogbone
! timeout 10
-$ ${bindir:=.}/network-ns3/s4u-network-ns3 ${platfdir}/dogbone.xml ${srcdir}/network-ns3/dogbone_d.xml --cfg=network/model:ns-3 "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
+$ ${bindir:=.}/s4u-network-ns3 ${platfdir}/dogbone.xml ${srcdir}/dogbone_d.xml --cfg=network/model:ns-3 "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'ns-3'
> [:maestro(0)] [res_ns3/WARNING] Ignoring a route between S1 and C1 of length 3: Only routes of length 1 are considered with ns-3.
> WARNING: You can ignore this warning if your hosts can still communicate when only considering routes of length 1.
p 2hosts 1link
-$ ${bindir:=.}/network-ns3/s4u-network-ns3 ${platfdir}/onelink.xml ${srcdir}/network-ns3/onelink_d.xml --cfg=network/model:ns-3 "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
+$ ${bindir:=.}/s4u-network-ns3 ${platfdir}/onelink.xml ${srcdir}/onelink_d.xml --cfg=network/model:ns-3 "--log=root.fmt:[%h:%a(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'ns-3'
> [C1:worker(2)] [s4u_test/INFO] FLOW[1] : Receive 10000 bytes from S1 to C1
p Crosstraffic TCP option DISABLED
! output ignore
-$ ${bindir:=.}/network-ns3/s4u-network-ns3 ${platfdir}/crosstraffic.xml ${srcdir}/network-ns3/crosstraffic_d.xml --cfg=network/model:ns-3 --cfg=network/crosstraffic:0
+$ ${bindir:=.}/s4u-network-ns3 ${platfdir}/crosstraffic.xml ${srcdir}/crosstraffic_d.xml --cfg=network/model:ns-3 --cfg=network/crosstraffic:0
p Crosstraffic TCP option ENABLED
! output ignore
-$ ${bindir:=.}/network-ns3/s4u-network-ns3 ${platfdir}/crosstraffic.xml ${srcdir}/network-ns3/crosstraffic_d.xml --cfg=network/model:ns-3 --cfg=network/crosstraffic:1
+$ ${bindir:=.}/s4u-network-ns3 ${platfdir}/crosstraffic.xml ${srcdir}/crosstraffic_d.xml --cfg=network/model:ns-3 --cfg=network/crosstraffic:1
-foreach(x availability )
- add_executable (${x} EXCLUDE_FROM_ALL ${x}/${x}.c)
- target_link_libraries(${x} simgrid)
- set_target_properties(${x} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${x})
- add_dependencies(tests ${x})
-
- set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/${x}/${x}.tesh)
- set(teshsuite_src ${teshsuite_src} ${CMAKE_CURRENT_SOURCE_DIR}/${x}/${x}.c)
-endforeach()
-
foreach(x flatifier)
add_executable (${x} EXCLUDE_FROM_ALL ${x}/${x}.cpp)
target_link_libraries(${x} simgrid)
${CMAKE_CURRENT_SOURCE_DIR}/platforms/link.fail
${CMAKE_CURRENT_SOURCE_DIR}/platforms/link.lat PARENT_SCOPE)
-foreach(x availability flatifier)
+foreach(x flatifier)
ADD_TESH(tesh-simdag-${x} --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/simdag/${x} --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/${x} ${x}.tesh)
endforeach()
+++ /dev/null
-/* Copyright (c) 2013-2021. The SimGrid Team.
- * All rights reserved. */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include <string.h>
-#include <simgrid/simdag.h>
-#include <xbt/log.h>
-
-XBT_LOG_NEW_DEFAULT_CATEGORY(test,"Logging for the current example");
-
-static int name_compare_hosts(const void *n1, const void *n2)
-{
- return strcmp(sg_host_get_name(*(const sg_host_t*)n1), sg_host_get_name(*(const sg_host_t*)n2));
-}
-
-static void scheduleDAX(const_xbt_dynar_t dax)
-{
- unsigned int cursor;
- SD_task_t task;
-
- sg_host_t *hosts = sg_host_list();
- size_t totalHosts = sg_host_count();
- qsort(hosts, totalHosts, sizeof(sg_host_t), name_compare_hosts);
-
- xbt_dynar_foreach(dax, cursor, task) {
- if (SD_task_get_kind(task) == SD_TASK_COMP_SEQ) {
- if (!strcmp(SD_task_get_name(task), "end") || !strcmp(SD_task_get_name(task), "root")) {
- XBT_INFO("Scheduling %s to node: %s", SD_task_get_name(task), sg_host_get_name(hosts[0]));
- SD_task_schedulel(task, 1, hosts[0]);
- } else {
- XBT_INFO("Scheduling %s to node: %s", SD_task_get_name(task), sg_host_get_name(hosts[(cursor) % totalHosts]));
- SD_task_schedulel(task, 1, hosts[cursor % totalHosts]);
- }
- }
- }
- xbt_free(hosts);
-}
-
-int main(int argc, char *argv[])
-{
- SD_init(&argc, argv);
- xbt_assert(argc > 2, "Usage: %s platform_file dax_file\n"
- "\tExample: %s simulacrum_7_hosts.xml Montage_25.xml", argv[0], argv[0]);
-
- SD_create_environment(argv[1]);
- xbt_dynar_t dax = SD_daxload(argv[2]);
-
- XBT_INFO("Scheduling DAX...");
- scheduleDAX(dax);
- XBT_INFO("DAX scheduled");
- SD_simulate(-1);
-
- XBT_INFO("Simulation done.");
-
- // Free memory
- while (!xbt_dynar_is_empty(dax)) {
- SD_task_t task = xbt_dynar_pop_as(dax, SD_task_t);
- SD_task_destroy(task);
- }
- xbt_dynar_free(&dax);
- return 0;
-}
+++ /dev/null
-$ ${bindir:=.}/availability ../../../examples/platforms/simulacrum_7_hosts.xml ../../../examples/deprecated/simdag/scheduling/Montage_25.xml --log=sd_daxparse.thresh:critical
-> [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
-> [0.000000] [test/INFO] Scheduling DAX...
-> [0.000000] [test/INFO] Scheduling root to node: Host 26
-> [0.000000] [test/INFO] Scheduling ID00000@mProjectPP to node: Host 27
-> [0.000000] [test/INFO] Scheduling ID00001@mProjectPP to node: Host 28
-> [0.000000] [test/INFO] Scheduling ID00002@mProjectPP to node: Host 29
-> [0.000000] [test/INFO] Scheduling ID00003@mProjectPP to node: Host 30
-> [0.000000] [test/INFO] Scheduling ID00004@mProjectPP to node: Host 31
-> [0.000000] [test/INFO] Scheduling ID00005@mDiffFit to node: Host 32
-> [0.000000] [test/INFO] Scheduling ID00006@mDiffFit to node: Host 26
-> [0.000000] [test/INFO] Scheduling ID00007@mDiffFit to node: Host 27
-> [0.000000] [test/INFO] Scheduling ID00008@mDiffFit to node: Host 28
-> [0.000000] [test/INFO] Scheduling ID00009@mDiffFit to node: Host 29
-> [0.000000] [test/INFO] Scheduling ID00010@mDiffFit to node: Host 30
-> [0.000000] [test/INFO] Scheduling ID00011@mDiffFit to node: Host 31
-> [0.000000] [test/INFO] Scheduling ID00012@mDiffFit to node: Host 32
-> [0.000000] [test/INFO] Scheduling ID00013@mDiffFit to node: Host 26
-> [0.000000] [test/INFO] Scheduling ID00014@mConcatFit to node: Host 27
-> [0.000000] [test/INFO] Scheduling ID00015@mBgModel to node: Host 28
-> [0.000000] [test/INFO] Scheduling ID00016@mBackground to node: Host 29
-> [0.000000] [test/INFO] Scheduling ID00017@mBackground to node: Host 30
-> [0.000000] [test/INFO] Scheduling ID00018@mBackground to node: Host 31
-> [0.000000] [test/INFO] Scheduling ID00019@mBackground to node: Host 32
-> [0.000000] [test/INFO] Scheduling ID00020@mBackground to node: Host 26
-> [0.000000] [test/INFO] Scheduling ID00021@mImgTbl to node: Host 27
-> [0.000000] [test/INFO] Scheduling ID00022@mAdd to node: Host 28
-> [0.000000] [test/INFO] Scheduling ID00023@mShrink to node: Host 29
-> [0.000000] [test/INFO] Scheduling ID00024@mJPEG to node: Host 30
-> [0.000000] [test/INFO] Scheduling end to node: Host 26
-> [0.000000] [test/INFO] DAX scheduled
-> [163.990688] [test/INFO] Simulation done.
-