- Add a xbt_heap_update function, to avoid costly xbt_heap_remove+xbt_heap_insert use
- Add a xbt wrapper for simcall_mutex_trylock (asked in [#17878])
- Add two new log appenders : rollfile and splitfile. Patch by Fabien Chaix.
-
+ Build System
+ * Tracing is now always enabled (no way to turn it out)
+ * Move headers around to sort them out on installed systems:
+ - instr/instr.h -> simgrid/instr.h
+ - instr/jedule/* -> simgrid/jedule
-- $date Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
# test for code coverage
ADD_TEST(test-help ${CMAKE_BINARY_DIR}/teshsuite/simdag/platforms/basic_parsing_test --help)
ADD_TEST(test-help-models ${CMAKE_BINARY_DIR}/teshsuite/simdag/platforms/basic_parsing_test --help-models)
- IF(HAVE_TRACING)
- ADD_TEST(test-tracing-help ${CMAKE_BINARY_DIR}/teshsuite/simdag/platforms/basic_parsing_test --help-tracing)
- ADD_TESH(graphicator --setenv srcdir=${CMAKE_HOME_DIRECTORY} --setenv bindir=${CMAKE_BINARY_DIR}/bin --cd ${CMAKE_HOME_DIRECTORY}/tools/graphicator graphicator.tesh)
- ENDIF()
+ ADD_TEST(test-tracing-help ${CMAKE_BINARY_DIR}/teshsuite/simdag/platforms/basic_parsing_test --help-tracing)
+ ADD_TESH(graphicator --setenv srcdir=${CMAKE_HOME_DIRECTORY} --setenv bindir=${CMAKE_BINARY_DIR}/bin --cd ${CMAKE_HOME_DIRECTORY}/tools/graphicator graphicator.tesh)
# END TESH TESTS
ADD_TESH(mc-replay-random-bug --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/mc/replay --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/mc/replay --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/mc/replay random_bug_replay.tesh)
ADD_TESH_FACTORIES(msg-gtnets-onelink "thread;ucontext;raw" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/gtnets-onelink-gtnets.tesh)
ADD_TESH_FACTORIES(msg-gtnets-dogbone-lv08 "thread;ucontext;raw" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/gtnets-dogbone-lv08.tesh)
ADD_TESH_FACTORIES(msg-gtnets-onelink-lv08 "thread;ucontext;raw" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/gtnets-onelink-lv08.tesh)
- IF(HAVE_TRACING)
- ADD_TESH(msg-tracing-gtnets-waxman --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/tracing-gtnets-waxman.tesh)
- ADD_TESH(msg-tracing-gtnets-dogbone --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/tracing-gtnets-dogbone-gtnets.tesh)
- ADD_TESH(msg-tracing-gtnets-onelink --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/tracing-gtnets-onelink-gtnets.tesh)
- ADD_TESH(msg-tracing-gtnets-dogbone-lv08 --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/tracing-gtnets-dogbone-lv08.tesh)
- ADD_TESH(msg-tracing-gtnets-onelink-lv08 --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/tracing-gtnets-onelink-lv08.tesh)
- ENDIF()
+ ADD_TESH(msg-tracing-gtnets-waxman --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/tracing-gtnets-waxman.tesh)
+ ADD_TESH(msg-tracing-gtnets-dogbone --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/tracing-gtnets-dogbone-gtnets.tesh)
+ ADD_TESH(msg-tracing-gtnets-onelink --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/tracing-gtnets-onelink-gtnets.tesh)
+ ADD_TESH(msg-tracing-gtnets-dogbone-lv08 --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/tracing-gtnets-dogbone-lv08.tesh)
+ ADD_TESH(msg-tracing-gtnets-onelink-lv08 --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets/tracing-gtnets-onelink-lv08.tesh)
ENDIF()
IF(HAVE_NS3)
ADD_TESH_FACTORIES(msg-ns3 "thread;ucontext;raw" --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/ns3/ns3.tesh)
ENDIF()
- IF(HAVE_TRACING)
- ADD_TESH(tracing-ms --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/ms.tesh)
- ADD_TESH(tracing-trace-platform --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/trace_platform.tesh)
- ADD_TESH(tracing-user-variables --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/user_variables.tesh)
- ADD_TESH(tracing-link-user-variables --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/link_user_variables.tesh)
- ADD_TESH(tracing-link-srcdst-user-variables --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/link_srcdst_user_variables.tesh)
- ADD_TESH(tracing-categories --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/categories.tesh)
- ADD_TESH(tracing-process-migration --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/procmig.tesh)
- ENDIF()
+
+ ADD_TESH(tracing-ms --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/ms.tesh)
+ ADD_TESH(tracing-trace-platform --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/trace_platform.tesh)
+ ADD_TESH(tracing-user-variables --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/user_variables.tesh)
+ ADD_TESH(tracing-link-user-variables --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/link_user_variables.tesh)
+ ADD_TESH(tracing-link-srcdst-user-variables --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/link_srcdst_user_variables.tesh)
+ ADD_TESH(tracing-categories --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/categories.tesh)
+ ADD_TESH(tracing-process-migration --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/procmig.tesh)
ADD_TEST(msg-icomms-waitany ${CMAKE_BINARY_DIR}/examples/msg/icomms/peer3 ${CMAKE_HOME_DIRECTORY}/examples/platforms/small_platform.xml ${CMAKE_HOME_DIRECTORY}/examples/msg/icomms/deployment_peer05.xml)
# END TESH TESTS
ADD_TESH(tesh-parser-bogus-disk-attachment --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/simdag/platforms --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/platforms bogus_disk_attachment.tesh)
#These tests fail on Windows as the signal returned is not the same as Unix would send.
- IF(HAVE_TRACING AND WIN32)
+ IF(WIN32)
set_property(TEST tesh-parser-bogus-symmetric PROPERTY WILL_FAIL TRUE)
set_property(TEST tesh-parser-bogus-missing-gw PROPERTY WILL_FAIL TRUE)
set_property(TEST tesh-parser-bogus-disk-attachment PROPERTY WILL_FAIL TRUE)
# BEGIN TESH TESTS
IF(HAVE_GRAPHVIZ)
- IF(HAVE_TRACING)
- ADD_TESH(simdag-dotload --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/simdag/dot --cd ${CMAKE_BINARY_DIR}/examples/simdag/dot ${CMAKE_HOME_DIRECTORY}/examples/simdag/dot/test_simdag_dotload.tesh)
- ELSE()
- ADD_TESH(simdag-dotload --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/simdag/dot --cd ${CMAKE_BINARY_DIR}/examples/simdag/dot ${CMAKE_HOME_DIRECTORY}/examples/simdag/dot/test_simdag_dotload_notrace.tesh)
- ENDIF()
+ ADD_TESH(simdag-dotload --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/simdag/dot --cd ${CMAKE_BINARY_DIR}/examples/simdag/dot ${CMAKE_HOME_DIRECTORY}/examples/simdag/dot/test_simdag_dotload.tesh)
ENDIF()
ADD_TESH(simdag-simdag --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/simdag --cd ${CMAKE_BINARY_DIR}/examples/simdag ${CMAKE_HOME_DIRECTORY}/examples/simdag/test_simdag.tesh)
ADD_TESH(simdag-simdag2 --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/simdag --cd ${CMAKE_BINARY_DIR}/examples/simdag ${CMAKE_HOME_DIRECTORY}/examples/simdag/test_simdag2.tesh)
ADD_TESH(simdag-seq-access --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/simdag --cd ${CMAKE_BINARY_DIR}/examples/simdag ${CMAKE_HOME_DIRECTORY}/examples/simdag/test_simdag_seq_access.tesh)
ADD_TESH(simdag-typed-tasks --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/simdag --cd ${CMAKE_BINARY_DIR}/examples/simdag ${CMAKE_HOME_DIRECTORY}/examples/simdag/test_simdag_typed_tasks.tesh)
- IF(HAVE_TRACING)
- ADD_TESH(simdag-fail --setenv bindir=${CMAKE_BINARY_DIR}/examples/simdag --cd ${CMAKE_HOME_DIRECTORY}/examples/simdag test_simdag_fail.tesh)
- ELSE()
- ADD_TESH(simdag-fail --setenv bindir=${CMAKE_BINARY_DIR}/examples/simdag --cd ${CMAKE_HOME_DIRECTORY}/examples/simdag test_simdag_fail_notrace.tesh)
- ENDIF()
+ ADD_TESH(simdag-fail --setenv bindir=${CMAKE_BINARY_DIR}/examples/simdag --cd ${CMAKE_HOME_DIRECTORY}/examples/simdag test_simdag_fail.tesh)
ADD_TESH(simdag-avail --setenv bindir=${CMAKE_BINARY_DIR}/examples/simdag --cd ${CMAKE_HOME_DIRECTORY}/examples/simdag test_simdag_avail.tesh)
ADD_TESH(simdag-comm-throttling --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/simdag --cd ${CMAKE_BINARY_DIR}/examples/simdag ${CMAKE_HOME_DIRECTORY}/examples/simdag/test_simdag_comm_throttling.tesh)
- IF(HAVE_TRACING)
- ADD_TESH(simdag-dax --setenv bindir=${CMAKE_BINARY_DIR}/examples/simdag/dax --cd ${CMAKE_HOME_DIRECTORY}/examples/simdag/dax smalldax.tesh)
- ELSE()
- ADD_TESH(simdag-dax --setenv bindir=${CMAKE_BINARY_DIR}/examples/simdag/dax --cd ${CMAKE_HOME_DIRECTORY}/examples/simdag/dax smalldax_notrace.tesh)
- ENDIF()
+ ADD_TESH(simdag-dax --setenv bindir=${CMAKE_BINARY_DIR}/examples/simdag/dax --cd ${CMAKE_HOME_DIRECTORY}/examples/simdag/dax smalldax.tesh)
ADD_TESH(simdag-dax-cycle --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/simdag/dax --cd ${CMAKE_BINARY_DIR}/examples/simdag/dax ${CMAKE_HOME_DIRECTORY}/examples/simdag/dax/simple_dax_with_cycle.tesh)
ADD_TESH(simdag-prop --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/simdag --cd ${CMAKE_BINARY_DIR}/examples/simdag ${CMAKE_HOME_DIRECTORY}/examples/simdag/properties/test_prop.tesh)
ADD_TESH(simdag-minmin-scheduling --setenv bindir=${CMAKE_BINARY_DIR}/examples/simdag/scheduling --cd ${CMAKE_HOME_DIRECTORY}/examples/simdag/scheduling test_minmin.tesh)
ADD_TESH(simdag-io --setenv bindir=${CMAKE_BINARY_DIR}/examples/simdag/ --setenv srcdir=${CMAKE_HOME_DIRECTORY}/ --cd ${CMAKE_HOME_DIRECTORY}/examples/ ${CMAKE_HOME_DIRECTORY}/examples/simdag/io/io.tesh)
- IF(HAVE_TRACING)
- ADD_TESH(tracing-simdag --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/simdag --cd ${CMAKE_BINARY_DIR}/examples/simdag ${CMAKE_HOME_DIRECTORY}/examples/simdag/test_simdag_tracing.tesh)
- ENDIF()
+ ADD_TESH(tracing-simdag --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/simdag --cd ${CMAKE_BINARY_DIR}/examples/simdag ${CMAKE_HOME_DIRECTORY}/examples/simdag/test_simdag_tracing.tesh)
# END TESH TESTS
- IF(HAVE_TRACING AND WIN32)
+ IF(WIN32)
# expect this one to fail on Windows, as generated random colors will be different
set_property(TEST tracing-simdag PROPERTY WILL_FAIL TRUE)
ENDIF()
IF(enable_debug)
ADD_TESH_FACTORIES(tesh-smpi-bug-17132-surf-debug "thread" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/bug-17132 --cd ${CMAKE_BINARY_DIR}/teshsuite/bug-17132 ${CMAKE_HOME_DIRECTORY}/teshsuite/bug-17132/bug-17132-surf-debug.tesh)
ENDIF()
- IF(HAVE_TRACING)
- ADD_TESH(tesh-smpi-replay-ti-tracing --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/pingpong --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/pingpong TI_output.tesh)
- ENDIF()
+ ADD_TESH(tesh-smpi-replay-ti-tracing --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/pingpong --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/pingpong TI_output.tesh)
FOREACH (GATHER_COLL default ompi mpich ompi_basic_linear ompi_linear_sync ompi_binomial mvapich2 mvapich2_two_level impi)
ADD_TESH(tesh-smpi-gather-coll-${GATHER_COLL} --cfg smpi/gather:${GATHER_COLL} --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/gather --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/gather gather_coll.tesh)
ENDFOREACH()
IF(NOT HAVE_MC)
ADD_TESH(smpi-replay-multiple --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/replay_multiple --cd ${CMAKE_BINARY_DIR}/examples/smpi/replay_multiple ${CMAKE_HOME_DIRECTORY}/examples/smpi/replay_multiple/replay_multiple.tesh)
ENDIF()
- IF(HAVE_TRACING)
- ADD_TESH(smpi-tracing-ptp --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi --cd ${CMAKE_BINARY_DIR}/examples/smpi ${CMAKE_HOME_DIRECTORY}/examples/smpi/tracing/smpi_traced.tesh)
- ADD_TESH(smpi-replay --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi --cd ${CMAKE_BINARY_DIR}/examples/smpi ${CMAKE_HOME_DIRECTORY}/examples/smpi/replay/smpi_replay.tesh)
- ENDIF()
+ ADD_TESH(smpi-tracing-ptp --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi --cd ${CMAKE_BINARY_DIR}/examples/smpi ${CMAKE_HOME_DIRECTORY}/examples/smpi/tracing/smpi_traced.tesh)
+ ADD_TESH(smpi-replay --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi --cd ${CMAKE_BINARY_DIR}/examples/smpi ${CMAKE_HOME_DIRECTORY}/examples/smpi/replay/smpi_replay.tesh)
IF(HAVE_MC)
ADD_TESH(smpi-mc-only-send-determinism --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/mc --cd ${CMAKE_BINARY_DIR}/examples/smpi/mc ${CMAKE_HOME_DIRECTORY}/examples/smpi/mc/only_send_deterministic.tesh)
ENDIF()
ADD_TESH(java-surf-cpu-model --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/surfCpuModel/surf_cpu_model.tesh)
ADD_TESH(java-surf-plugin --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/surfPlugin/surf_plugin.tesh)
ADD_TESH(java-suspend --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/suspend/suspend.tesh)
- IF(HAVE_TRACING)
- ADD_TESH(java-tracing --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/tracing/tracingPingPong.tesh)
- ENDIF()
+ ADD_TESH(java-tracing --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/tracing/tracingPingPong.tesh)
# teshsuite ones
ADD_TESH(tesh-java-sleep-host-off --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/teshsuite/java ${CMAKE_HOME_DIRECTORY}/teshsuite/java/sleep_host_off/sleep_host_off.tesh)
set(CONTEXT_UCONTEXT 0)
SET(CONTEXT_THREADS 0)
-SET(HAVE_TRACING 1)
-
-if(enable_tracing)
- SET(HAVE_TRACING 1)
-else()
- SET(HAVE_TRACING 0)
-endif()
if(enable_jedule)
SET(HAVE_JEDULE 1)
src/bindings/java/org/simgrid/trace/Trace.java
)
-if(HAVE_TRACING)
- list(APPEND JMSG_C_SRC ${JTRACE_C_SRC})
- list(APPEND JMSG_JAVA_SRC ${JTRACE_JAVA_SRC})
-else()
- list(APPEND EXTRA_DIST ${JTRACE_C_SRC})
- list(APPEND EXTRA_DIST ${JTRACE_JAVA_SRC})
-endif()
+list(APPEND JMSG_C_SRC ${JTRACE_C_SRC})
+list(APPEND JMSG_JAVA_SRC ${JTRACE_JAVA_SRC})
set(LUA_SRC
src/bindings/lua/lua_comm.c
)
endif()
-if(${HAVE_TRACING})
- set(simgrid_sources
+set(simgrid_sources
${simgrid_sources}
${TRACING_SRC}
)
-else()
- set(EXTRA_DIST
- ${EXTRA_DIST}
- ${TRACING_SRC}
- )
-endif()
set(simgrid_sources
${simgrid_sources}
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#cmakedefine TIME_WITH_SYS_TIME @TIME_WITH_SYS_TIME@
-/* Tracing SimGrid */
-#cmakedefine HAVE_TRACING @HAVE_TRACING@
-
/* Tracking of latency bound */
#cmakedefine HAVE_LATENCY_BOUND_TRACKING @HAVE_LATENCY_BOUND_TRACKING@
XBT_PUBLIC_DATA(type)="extern type" \
XBT_PUBLIC_CLASS=class \
XBT_INLINE= \
- HAVE_TRACING \
MSG_USE_DEPRECATED
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
cmake_minimum_required(VERSION 2.6)
-if(HAVE_TRACING)
- set(example java_tracing)
- set(sources
- ${CMAKE_CURRENT_SOURCE_DIR}/PingPongTask.java
- ${CMAKE_CURRENT_SOURCE_DIR}/Receiver.java
- ${CMAKE_CURRENT_SOURCE_DIR}/Sender.java
- ${CMAKE_CURRENT_SOURCE_DIR}/TracingTest.java
- )
+set(example java_tracing)
+set(sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/PingPongTask.java
+ ${CMAKE_CURRENT_SOURCE_DIR}/Receiver.java
+ ${CMAKE_CURRENT_SOURCE_DIR}/Sender.java
+ ${CMAKE_CURRENT_SOURCE_DIR}/TracingTest.java
+ )
- if(enable_java)
- add_custom_command(
- COMMENT "Building ${example}..."
- OUTPUT ${example}_compiled
- DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
- -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
- COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
- COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
- )
- add_custom_target(${example} ALL DEPENDS ${example}_compiled)
- endif()
+if(enable_java)
+ add_custom_command(
+ COMMENT "Building ${example}..."
+ OUTPUT ${example}_compiled
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
+ -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
+ COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
+ COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
+ )
+ add_custom_target(${example} ALL DEPENDS ${example}_compiled)
endif()
set(tesh_files
cmake_minimum_required(VERSION 2.6)
-if(HAVE_TRACING)
- set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}")
- set(LIBRARY_OUTPUT_PATH "${CMAKE_HOME_DIRECTORY}/lib")
+set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}")
+set(LIBRARY_OUTPUT_PATH "${CMAKE_HOME_DIRECTORY}/lib")
- add_executable(ms ${CMAKE_CURRENT_SOURCE_DIR}/ms.c)
- add_executable(categories ${CMAKE_CURRENT_SOURCE_DIR}/categories.c)
- add_executable(procmig ${CMAKE_CURRENT_SOURCE_DIR}/procmig.c)
- add_executable(simple ${CMAKE_CURRENT_SOURCE_DIR}/simple.c)
- add_executable(trace_platform ${CMAKE_CURRENT_SOURCE_DIR}/trace_platform.c)
- add_executable(user_variables ${CMAKE_CURRENT_SOURCE_DIR}/user_variables.c)
- add_executable(link_user_variables ${CMAKE_CURRENT_SOURCE_DIR}/link_user_variables.c)
- add_executable(link_srcdst_user_variables ${CMAKE_CURRENT_SOURCE_DIR}/link_srcdst_user_variables.c)
+add_executable(ms ${CMAKE_CURRENT_SOURCE_DIR}/ms.c)
+add_executable(categories ${CMAKE_CURRENT_SOURCE_DIR}/categories.c)
+add_executable(procmig ${CMAKE_CURRENT_SOURCE_DIR}/procmig.c)
+add_executable(simple ${CMAKE_CURRENT_SOURCE_DIR}/simple.c)
+add_executable(trace_platform ${CMAKE_CURRENT_SOURCE_DIR}/trace_platform.c)
+add_executable(user_variables ${CMAKE_CURRENT_SOURCE_DIR}/user_variables.c)
+add_executable(link_user_variables ${CMAKE_CURRENT_SOURCE_DIR}/link_user_variables.c)
+add_executable(link_srcdst_user_variables ${CMAKE_CURRENT_SOURCE_DIR}/link_srcdst_user_variables.c)
- ### Add definitions for compile
- target_link_libraries(ms simgrid )
- target_link_libraries(categories simgrid )
- target_link_libraries(procmig simgrid )
- target_link_libraries(simple simgrid )
- target_link_libraries(trace_platform simgrid )
- target_link_libraries(user_variables simgrid )
- target_link_libraries(link_user_variables simgrid )
- target_link_libraries(link_srcdst_user_variables simgrid )
+### Add definitions for compile
+target_link_libraries(ms simgrid )
+target_link_libraries(categories simgrid )
+target_link_libraries(procmig simgrid )
+target_link_libraries(simple simgrid )
+target_link_libraries(trace_platform simgrid )
+target_link_libraries(user_variables simgrid )
+target_link_libraries(link_user_variables simgrid )
+target_link_libraries(link_srcdst_user_variables simgrid )
- ## Clean generated files
- get_directory_property(extra_clean_files ADDITIONAL_MAKE_CLEAN_FILES)
- set_directory_properties(
- PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
- "${extra_clean_files};${CMAKE_CURRENT_BINARY_DIR}/ms.cat.plist;${CMAKE_CURRENT_BINARY_DIR}/ms.trace;${CMAKE_CURRENT_BINARY_DIR}/ms.uncat.plist;"
- )
-endif()
+## Clean generated files
+get_directory_property(extra_clean_files ADDITIONAL_MAKE_CLEAN_FILES)
+set_directory_properties(
+ PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
+ "${extra_clean_files};${CMAKE_CURRENT_BINARY_DIR}/ms.cat.plist;${CMAKE_CURRENT_BINARY_DIR}/ms.trace;${CMAKE_CURRENT_BINARY_DIR}/ms.uncat.plist;"
+ )
set(tesh_files
${tesh_files}
add_executable(sd_comm_throttling sd_comm_throttling.c)
add_executable(sd_seq_access sd_seq_access.c)
-if (HAVE_TRACING)
- add_executable(simdag_tracing simdag_trace.c)
-endif()
+add_executable(simdag_tracing simdag_trace.c)
### Add definitions for compile
if(NOT WIN32)
target_link_libraries(sd_typed_tasks_test simgrid pthread )
target_link_libraries(sd_comm_throttling simgrid pthread )
target_link_libraries(sd_seq_access simgrid pthread )
- if (HAVE_TRACING)
target_link_libraries(simdag_tracing simgrid pthread )
- endif()
add_custom_command(TARGET ex_sd_test
POST_BUILD
target_link_libraries(sd_typed_tasks_test simgrid)
target_link_libraries(sd_comm_throttling simgrid)
target_link_libraries(sd_seq_access simgrid)
- if (HAVE_TRACING)
- target_link_libraries(simdag_tracing simgrid)
- endif()
+ target_link_libraries(simdag_tracing simgrid)
add_custom_command(TARGET ex_sd_test
POST_BUILD
+++ /dev/null
-#! ./tesh
-p Test the DAX loader on a small DAX instance
-
-$ $SG_TEST_EXENV ${bindir:=.}/dax_test --log=no_loc ../2clusters.xml ./smalldax.xml
-> [0.000000] [surf_workstation/INFO] surf_workstation_model_init_ptask_L07
-> [0.000000] [sd_daxparse/WARNING] Ignoring file o1 size redefinition from 1000000 to 304
-> [0.000000] [sd_daxparse/WARNING] Ignoring file o2 size redefinition from 1000000 to 304
-> [0.000000] [test/INFO] ------------------- Display all tasks of the loaded DAG ---------------------------
-> [0.000000] [sd_task/INFO] Displaying task root
-> [0.000000] [sd_task/INFO] - state: schedulable not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 0
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 0
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] root_i2_2@task2
-> [0.000000] [sd_task/INFO] root_i1_1@task1
-> [0.000000] [sd_task/INFO] Displaying task 1@task1
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 42000000000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] root_i1_1@task1
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 3@task1
-> [0.000000] [sd_task/INFO] 1@task1_o1_3@task1
-> [0.000000] [sd_task/INFO] Displaying task 2@task2
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 42000000000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] root_i2_2@task2
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 3@task1
-> [0.000000] [sd_task/INFO] 2@task2_o2_3@task1
-> [0.000000] [sd_task/INFO] Displaying task 3@task1
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 42000000000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 4
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 1@task1
-> [0.000000] [sd_task/INFO] 2@task2
-> [0.000000] [sd_task/INFO] 1@task1_o1_3@task1
-> [0.000000] [sd_task/INFO] 2@task2_o2_3@task1
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 3@task1_o3_end
-> [0.000000] [sd_task/INFO] Displaying task root_i2_2@task2
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 1000000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] root
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 2@task2
-> [0.000000] [sd_task/INFO] Displaying task 1@task1_o1_3@task1
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 1000000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 1@task1
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 3@task1
-> [0.000000] [sd_task/INFO] Displaying task 2@task2_o2_3@task1
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 1000000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 2@task2
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 3@task1
-> [0.000000] [sd_task/INFO] Displaying task 3@task1_o3_end
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 4167312
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 3@task1
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] end
-> [0.000000] [sd_task/INFO] Displaying task root_i1_1@task1
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 1000000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] root
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 1@task1
-> [0.000000] [sd_task/INFO] Displaying task end
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 0
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 3@task1_o3_end
-> [0.000000] [test/INFO] ------------------- Schedule tasks ---------------------------
-> [0.000000] [test/INFO] ------------------- Run the schedule ---------------------------
-> [84.066238] [test/INFO] ------------------- Produce the trace file---------------------------
-> [84.066238] [test/INFO] Producing the trace of the run into ./smalldax.trace
-
-$ cat ./smalldax.trace
-> [0.000000] C1-00 compute 0.000000 # root
-> [0.016300] C1-01 compute 42000000000.000000 # 1@task1
-> [0.016300] C1-02 compute 42000000000.000000 # 2@task2
-> [42.032600] C1-03 compute 42000000000.000000 # 3@task1
-> [0.000000] C1-00 send C1-02 1000000.000000 # root_i2_2@task2
-> [0.016300] C1-02 recv C1-00 1000000.000000 # root_i2_2@task2
-> [42.016300] C1-01 send C1-03 1000000.000000 # 1@task1_o1_3@task1
-> [42.032600] C1-03 recv C1-01 1000000.000000 # 1@task1_o1_3@task1
-> [42.016300] C1-02 send C1-03 1000000.000000 # 2@task2_o2_3@task1
-> [42.032600] C1-03 recv C1-02 1000000.000000 # 2@task2_o2_3@task1
-> [84.032600] C1-03 send C1-00 4167312.000000 # 3@task1_o3_end
-> [84.066238] C1-00 recv C1-03 4167312.000000 # 3@task1_o3_end
-> [0.000000] C1-00 send C1-01 1000000.000000 # root_i1_1@task1
-> [0.016300] C1-01 recv C1-00 1000000.000000 # root_i1_1@task1
-> [84.066238] C1-00 compute 0.000000 # end
-
-$ cmake -E remove -f ./dax.dot ./smalldax.trace
+++ /dev/null
-#! ./tesh
-p Test the loader of DAG written in the DOT format
-
-$ $SG_TEST_EXENV ./dot_test --log=no_loc ${srcdir:=.}/../2clusters.xml ${srcdir:=.}/dag.dot
-> [0.000000] [surf_workstation/INFO] surf_workstation_model_init_ptask_L07
-> [0.000000] [test/INFO] ------------------- Display all tasks of the loaded DAG ---------------------------
-> [0.000000] [sd_task/INFO] Displaying task root
-> [0.000000] [sd_task/INFO] - state: schedulable not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 0
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 0
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] root->5
-> [0.000000] [sd_task/INFO] 0
-> [0.000000] [sd_task/INFO] Displaying task 0
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000129
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] root
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 0->1
-> [0.000000] [sd_task/INFO] Displaying task 1
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000131
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 0->1
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 1->2
-> [0.000000] [sd_task/INFO] Displaying task 2
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000121
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 1->2
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 2->3
-> [0.000000] [sd_task/INFO] Displaying task 3
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000231
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 2->3
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 4
-> [0.000000] [sd_task/INFO] Displaying task 4
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000005
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 3
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 4->5
-> [0.000000] [sd_task/INFO] Displaying task 5
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000046
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 2
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 4->5
-> [0.000000] [sd_task/INFO] root->5
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 6
-> [0.000000] [sd_task/INFO] Displaying task 6
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000092
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 5
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 6->7
-> [0.000000] [sd_task/INFO] Displaying task 7
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000041
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 6->7
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 7->8
-> [0.000000] [sd_task/INFO] 7->end
-> [0.000000] [sd_task/INFO] Displaying task 8
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000250
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 7->8
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 9
-> [0.000000] [sd_task/INFO] Displaying task 9
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000079
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 8
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] end
-> [0.000000] [sd_task/INFO] Displaying task 0->1
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10001
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 0
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 1
-> [0.000000] [sd_task/INFO] Displaying task 1->2
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10004
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 1
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 2
-> [0.000000] [sd_task/INFO] Displaying task 2->3
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10002
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 2
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 3
-> [0.000000] [sd_task/INFO] Displaying task 4->5
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10029
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 4
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 5
-> [0.000000] [sd_task/INFO] Displaying task 6->7
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10005
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 6
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 7
-> [0.000000] [sd_task/INFO] Displaying task 7->8
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 7
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 8
-> [0.000000] [sd_task/INFO] Displaying task 7->end
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10014000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 7
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] end
-> [0.000000] [sd_task/INFO] Displaying task root->5
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10014000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] root
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 5
-> [0.000000] [sd_task/INFO] Displaying task end
-> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000129
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 2
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 7->end
-> [0.000000] [sd_task/INFO] 9
-> [0.000000] [test/INFO] ------------------- Schedule tasks ---------------------------
-> [0.000000] [test/INFO] ------------------- Run the schedule ---------------------------
-> [62.002281] [test/INFO] ------------------- Produce the trace file---------------------------
-> [62.002281] [test/INFO] Producing the trace of the run into dag.trace
-
-$ cat ${srcdir:=.}/dag.trace
-> [0.000000->0.000000] C2-05 compute 0.000000 flops # root
-> [0.000000->2.000000] C2-06 compute 10000000129.452715 flops # 0
-> [2.000380->4.000380] C2-07 compute 10000000131.133657 flops # 1
-> [4.000760->6.000760] C2-08 compute 10000000121.124870 flops # 2
-> [6.001140->8.001140] C2-09 compute 10000000230.608025 flops # 3
-> [8.001140->18.001140] C1-00 compute 10000000004.994019 flops # 4
-> [18.001520->28.001520] C1-01 compute 10000000046.016401 flops # 5
-> [28.001520->38.001521] C1-02 compute 10000000091.598791 flops # 6
-> [38.001901->48.001901] C1-03 compute 10000000040.679438 flops # 7
-> [48.002281->58.002281] C1-04 compute 10000000250.490017 flops # 8
-> [58.002281->60.002281] C2-05 compute 10000000079.267649 flops # 9
-> [2.000000 -> 2.000380] C2-06 -> C2-07 transfer of 10001 bytes # 0->1
-> [4.000380 -> 4.000760] C2-07 -> C2-08 transfer of 10004 bytes # 1->2
-> [6.000760 -> 6.001140] C2-08 -> C2-09 transfer of 10002 bytes # 2->3
-> [18.001140 -> 18.001520] C1-00 -> C1-01 transfer of 10029 bytes # 4->5
-> [38.001521 -> 38.001901] C1-02 -> C1-03 transfer of 10005 bytes # 6->7
-> [48.001901 -> 48.002281] C1-03 -> C1-04 transfer of 10000 bytes # 7->8
-> [48.001901 -> 48.294118] C1-03 -> C2-05 transfer of 10014000 bytes # 7->end
-> [0.000000 -> 0.292217] C2-05 -> C1-01 transfer of 10014000 bytes # root->5
-> [60.002281->62.002281] C2-05 compute 10000000129.452715 flops # end
-
-$ rm -f dag.trace
-
-! expect return 2
-$ $SG_TEST_EXENV ./simulate_dot --log=no_loc "--log=sd_dotparse.thres:verbose" ${srcdir:=.}/../2clusters.xml ${srcdir:=.}/dag_with_bad_schedule.dot
-> [0.000000] [surf_workstation/INFO] surf_workstation_model_init_ptask_L07
-> [0.000000] [sd_dotparse/VERBOSE] The schedule is ignored, the task end is not correctly scheduled
-> [0.000000] [sd_dotparse/VERBOSE] The schedule is ignored, the task 1 is not correctly scheduled
-> [0.000000] [sd_dotparse/VERBOSE] The task 0 starts on the computer 1 at the position : 1 like the task 2
-> [0.000000] [sd_dotparse/VERBOSE] The schedule is ignored, the task 3 is not correctly scheduled
-> [0.000000] [sd_dotparse/VERBOSE] The schedule is ignored, the task root is not correctly scheduled
-> [0.000000] [sd_dotparse/WARNING] The scheduling is ignored
-> [0.000000] [test/CRITICAL] The dot file with the provided scheduling is wrong, more information with the option : --log=sd_dotparse.thres:verbose
-
-$ $SG_TEST_EXENV ./simulate_dot --log=no_loc ${srcdir:=.}/../2clusters.xml ${srcdir:=.}/dag_with_good_schedule.dot
-> [0.000000] [surf_workstation/INFO] surf_workstation_model_init_ptask_L07
-> [0.000000] [test/INFO] ------------------- Display all tasks of the loaded DAG ---------------------------
-> [0.000000] [sd_task/INFO] Displaying task root
-> [0.000000] [sd_task/INFO] - state: runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 0
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 0
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] root->5
-> [0.000000] [sd_task/INFO] 0
-> [0.000000] [sd_task/INFO] 1
-> [0.000000] [sd_task/INFO] Displaying task 0
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000129
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] root
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 0->2
-> [0.000000] [sd_task/INFO] 2
-> [0.000000] [sd_task/INFO] Displaying task 1
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000131
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] root
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 1->2
-> [0.000000] [sd_task/INFO] 4
-> [0.000000] [sd_task/INFO] Displaying task 2
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000121
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 3
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 0->2
-> [0.000000] [sd_task/INFO] 1->2
-> [0.000000] [sd_task/INFO] 0
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 2->3
-> [0.000000] [sd_task/INFO] 3
-> [0.000000] [sd_task/INFO] Displaying task 3
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000231
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 2
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 2->3
-> [0.000000] [sd_task/INFO] 2
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 4
-> [0.000000] [sd_task/INFO] 8
-> [0.000000] [sd_task/INFO] Displaying task 4
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000005
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 2
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 3
-> [0.000000] [sd_task/INFO] 1
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 4->5
-> [0.000000] [sd_task/INFO] 5
-> [0.000000] [sd_task/INFO] Displaying task 5
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000046
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 3
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] root->5
-> [0.000000] [sd_task/INFO] 4->5
-> [0.000000] [sd_task/INFO] 4
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 6
-> [0.000000] [sd_task/INFO] Displaying task 6
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000092
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 5
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 6->7
-> [0.000000] [sd_task/INFO] 7
-> [0.000000] [sd_task/INFO] Displaying task 7
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000041
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 2
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 6->7
-> [0.000000] [sd_task/INFO] 6
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 7->8
-> [0.000000] [sd_task/INFO] 7->end
-> [0.000000] [sd_task/INFO] end
-> [0.000000] [sd_task/INFO] Displaying task 8
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000250
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 2
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 7->8
-> [0.000000] [sd_task/INFO] 3
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 9
-> [0.000000] [sd_task/INFO] Displaying task 9
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000079
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 8
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] end
-> [0.000000] [sd_task/INFO] Displaying task root->5
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10014000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] root
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 5
-> [0.000000] [sd_task/INFO] Displaying task 0->2
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10001
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 0
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 2
-> [0.000000] [sd_task/INFO] Displaying task 1->2
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10004
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 1
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 2
-> [0.000000] [sd_task/INFO] Displaying task 2->3
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10002
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 2
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 3
-> [0.000000] [sd_task/INFO] Displaying task 4->5
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10029
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 4
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 5
-> [0.000000] [sd_task/INFO] Displaying task 6->7
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10005
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 6
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 7
-> [0.000000] [sd_task/INFO] Displaying task 7->8
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 7
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] 8
-> [0.000000] [sd_task/INFO] Displaying task 7->end
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: end-to-end communication
-> [0.000000] [sd_task/INFO] - amount: 10014000
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 7
-> [0.000000] [sd_task/INFO] - post-dependencies:
-> [0.000000] [sd_task/INFO] end
-> [0.000000] [sd_task/INFO] Displaying task end
-> [0.000000] [sd_task/INFO] - state: scheduled not runnable
-> [0.000000] [sd_task/INFO] - kind: sequential computation
-> [0.000000] [sd_task/INFO] - amount: 10000000129
-> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 3
-> [0.000000] [sd_task/INFO] - pre-dependencies:
-> [0.000000] [sd_task/INFO] 7->end
-> [0.000000] [sd_task/INFO] 9
-> [0.000000] [sd_task/INFO] 7
-> [0.000000] [test/INFO] ------------------- Run the schedule ---------------------------
-> [20.000866] [test/INFO] ------------------- Produce the trace file---------------------------
-> [20.000866] [test/INFO] Producing the trace of the run into dag_with_good_schedule.trace
-
-$ cat ${srcdir:=.}/dag_with_good_schedule.trace
-> [0.000000->0.000000] C2-05 compute 0.000000 flops # root
-> [0.000000->2.000000] C2-06 compute 10000000129.452715 flops # 0
-> [0.000000->2.000000] C2-05 compute 10000000131.133657 flops # 1
-> [2.000380->4.000380] C2-06 compute 10000000121.124870 flops # 2
-> [4.000415->6.000415] C2-06 compute 10000000230.608025 flops # 3
-> [6.000415->8.000415] C2-05 compute 10000000004.994019 flops # 4
-> [8.000450->10.000450] C2-05 compute 10000000046.016401 flops # 5
-> [10.000450->12.000450] C2-05 compute 10000000091.598791 flops # 6
-> [12.000485->14.000485] C2-05 compute 10000000040.679438 flops # 7
-> [14.000865->16.000866] C2-06 compute 10000000250.490017 flops # 8
-> [16.000866->18.000866] C2-06 compute 10000000079.267649 flops # 9
-> [0.000000 -> 0.020123] C2-05 -> C2-05 transfer of 10014000 bytes # root->5
-> [2.000000 -> 2.000035] C2-06 -> C2-06 transfer of 10001 bytes # 0->2
-> [2.000000 -> 2.000380] C2-05 -> C2-06 transfer of 10004 bytes # 1->2
-> [4.000380 -> 4.000415] C2-06 -> C2-06 transfer of 10002 bytes # 2->3
-> [8.000415 -> 8.000450] C2-05 -> C2-05 transfer of 10029 bytes # 4->5
-> [12.000450 -> 12.000485] C2-05 -> C2-05 transfer of 10005 bytes # 6->7
-> [14.000485 -> 14.000865] C2-05 -> C2-06 transfer of 10000 bytes # 7->8
-> [14.000485 -> 14.020609] C2-05 -> C2-05 transfer of 10014000 bytes # 7->end
-> [18.000866->20.000866] C2-05 compute 10000000129.452715 flops # end
-
-$ rm -f ${srcdir:=.}/dag_with_good_schedule.trace
-
-! expect return 2
-$ $SG_TEST_EXENV ./dot_test --log=no_loc ${srcdir:=.}/../2clusters.xml ${srcdir:=.}/dag_with_cycle.dot
-> [0.000000] [surf_workstation/INFO] surf_workstation_model_init_ptask_L07
-> [0.000000] [sd_daxparse/WARNING] the task root is not marked
-> [0.000000] [sd_daxparse/WARNING] the task 0 is in a cycle
-> [0.000000] [sd_daxparse/WARNING] the task 1 is in a cycle
-> [0.000000] [sd_daxparse/WARNING] the task 2 is in a cycle
-> [0.000000] [sd_daxparse/WARNING] the task 3 is in a cycle
-> [0.000000] [sd_daxparse/WARNING] the task 4 is in a cycle
-> [0.000000] [sd_daxparse/WARNING] the task 5 is in a cycle
-> [0.000000] [sd_daxparse/WARNING] the task 6 is in a cycle
-> [0.000000] [sd_dotparse/ERROR] The DOT described in dag_with_cycle.dot is not a DAG. It contains a cycle.
-> [0.000000] [test/CRITICAL] No dot loaded. Do you have a cycle in your graph?
+++ /dev/null
-#! ./tesh
-
-p Test of the management of failed tasks simdag
-
-$ $SG_TEST_EXENV ${bindir:=.}/sd_fail
-> [0.000000] [surf_workstation/INFO] surf_workstation_model_init_ptask_L07
-> [0.000000] [sd_fail/INFO] First test: COMP_SEQ task
-> [0.000000] [sd_fail/INFO] Schedule task 'Poor task' on workstation 'Faulty Host'
-> [10.000000] [sd_task/INFO] Displaying task Poor task
-> [10.000000] [sd_task/INFO] - state: not runnable failed
-> [10.000000] [sd_task/INFO] - kind: sequential computation
-> [10.000000] [sd_task/INFO] - amount: 20000000000
-> [10.000000] [sd_task/INFO] - Dependencies to satisfy: 0
-> [10.000000] [sd_fail/INFO] Task 'Poor task' has failed. 20000000000 flops remain to be done
-> [10.000000] [sd_fail/INFO] let's unschedule task 'Poor task' and reschedule it on the 'Safe Host'
-> [10.000000] [sd_fail/INFO] Run the simulation again
-> [50.000000] [sd_task/INFO] Displaying task Poor task
-> [50.000000] [sd_task/INFO] - state: not runnable done
-> [50.000000] [sd_task/INFO] - kind: sequential computation
-> [50.000000] [sd_task/INFO] - amount: 20000000000
-> [50.000000] [sd_task/INFO] - Dependencies to satisfy: 0
-> [50.000000] [sd_fail/INFO] Task 'Poor task' start time: 10.000000, finish time: 50.000000
-> [50.000000] [sd_fail/INFO] Second test: NON TYPED task
-> [50.000000] [sd_fail/INFO] Schedule task 'Poor parallel task' on workstation 'Faulty Host'
-> [60.000000] [sd_task/INFO] Displaying task Poor parallel task
-> [60.000000] [sd_task/INFO] - state: not runnable failed
-> [60.000000] [sd_task/INFO] - amount: 20000000000
-> [60.000000] [sd_task/INFO] - Dependencies to satisfy: 0
-> [60.000000] [sd_fail/INFO] Task 'Poor parallel task' has failed. 20000000000 flops remain to be done
-> [60.000000] [sd_fail/INFO] let's unschedule task 'Poor parallel task' and reschedule it on the 'Safe Host'
-> [60.000000] [sd_fail/INFO] Run the simulation again
-> [100.000000] [sd_task/INFO] Displaying task Poor parallel task
-> [100.000000] [sd_task/INFO] - state: not runnable done
-> [100.000000] [sd_task/INFO] - amount: 20000000000
-> [100.000000] [sd_task/INFO] - Dependencies to satisfy: 0
-> [100.000000] [sd_fail/INFO] Task 'Poor parallel task' start time: 60.000000, finish time: 100.000000
#include "mpi.h"
#include "npbparams.h"
-#include "instr/instr.h" //TRACE_
+#include "simgrid/instr.h" //TRACE_
#ifndef CLASS
#define CLASS 'S'
#include "mpi.h"
#include "npbparams.h"
-#include "instr/instr.h" //TRACE_
+#include "simgrid/instr.h" //TRACE_
#include "randlc.h"
#include <stdlib.h>
#include <stdio.h>
-#include "instr/instr.h" //TRACE_
+#include "simgrid/instr.h" //TRACE_
/******************/
/* default values */
#include <stdio.h>
#include "mpi.h"
-#include "instr/instr.h"
+#include "simgrid/instr.h"
#define DATATOSENT 100000
#include "xbt/misc.h"
#include "xbt/lib.h"
#include "simgrid/simix.h"
-#include "simgrid_config.h" // for HAVE_TRACING
SG_BEGIN_DECL()
char *name; /**< @brief task name if any */
simdata_task_t simdata; /**< @brief simulator data */
void *data; /**< @brief user data */
-#ifdef HAVE_TRACING
long long int counter; /* task unique identifier for instrumentation */
char *category; /* task category for instrumentation */
-#endif
} s_msg_task_t;
/** @brief Task datatype.
typedef struct msg_gpu_task {
char *name; /**< @brief task name if any */
simdata_gpu_task_t simdata; /**< @brief simulator data */
-#ifdef HAVE_TRACING
long long int counter; /* task unique identifier for instrumentation */
char *category; /* task category for instrumentation */
-#endif
} s_msg_gpu_task_t;
/** @brief GPU task datatype.
xbt_dynar_t<msg_vm_t> MSG_vm_get_list_from_hosts(msg_dynar_t<msg_host_t>)
+ des fonctions de filtrage sur les dynar
*/
-#include "instr/instr.h"
+#include "simgrid/instr.h"
/** @} */
-#include "instr/instr.h"
+#include "simgrid/instr.h"
SG_END_DECL()
#endif
#include "simgrid_config.h"
-#ifdef HAVE_TRACING
-
#include "xbt.h"
#include "xbt/graph.h"
#include "msg/msg.h"
XBT_PUBLIC(void) TRACE_pause (void);
XBT_PUBLIC(void) TRACE_resume (void);
-
-#else /* HAVE_TRACING */
-
-#define TRACE_category(category)
-#define TRACE_category_with_color(category,color)
-#define TRACE_get_categories()
-#define TRACE_smpi_set_category(category)
-
-#define TRACE_declare_mark(mark_type)
-#define TRACE_mark(mark_type,mark_value)
-#define TRACE_get_marks()
-
-#define TRACE_platform_graph_export_graphviz(filename)
-
-#define TRACE_vm_variable_declare(var)
-#define TRACE_vm_variable_declare_with_color(var,color)
-#define TRACE_vm_variable_set(vm,var,value)
-#define TRACE_vm_variable_add(vm,var,value)
-#define TRACE_vm_variable_sub(vm,var,value)
-#define TRACE_vm_variable_set_with_time(time,vm,var,value)
-#define TRACE_vm_variable_add_with_time(time,vm,var,value)
-#define TRACE_vm_variable_sub_with_time(time,vm,var,value)
-#define TRACE_get_vm_variables()
-
-#define TRACE_host_variable_declare(var)
-#define TRACE_host_variable_declare_with_color(var,color)
-#define TRACE_host_variable_set(host,var,value)
-#define TRACE_host_variable_add(host,var,value)
-#define TRACE_host_variable_sub(host,var,value)
-#define TRACE_host_variable_set_with_time(time,host,var,value)
-#define TRACE_host_variable_add_with_time(time,host,var,value)
-#define TRACE_host_variable_sub_with_time(time,host,var,value)
-#define TRACE_get_host_variables()
-
-#define TRACE_link_variable_declare(var)
-#define TRACE_link_variable_declare_with_color(var,color)
-#define TRACE_link_variable_set(link,var,value)
-#define TRACE_link_variable_add(link,var,value)
-#define TRACE_link_variable_sub(link,var,value)
-#define TRACE_link_variable_set_with_time(time,link,var,value)
-#define TRACE_link_variable_add_with_time(time,link,var,value)
-#define TRACE_link_variable_sub_with_time(time,link,var,value)
-
-#define TRACE_link_srcdst_variable_set(src,dst,var,value)
-#define TRACE_link_srcdst_variable_add(src,dst,var,value)
-#define TRACE_link_srcdst_variable_sub(src,dst,var,value)
-#define TRACE_link_srcdst_variable_set_with_time(time,src,dst,var,value)
-#define TRACE_link_srcdst_variable_add_with_time(time,src,dst,var,value)
-#define TRACE_link_srcdst_variable_sub_with_time(time,src,dst,var,value)
-#define TRACE_get_host_variables()
-
-#define TRACE_get_node_types()
-#define TRACE_get_edge_types()
-
-#endif /* HAVE_TRACING */
-
#endif /* INSTR_H_ */
XBT_PUBLIC(int) simcall_comm_is_latency_bounded(smx_synchro_t comm);
#endif
-#ifdef HAVE_TRACING
/************************** Tracing handling **********************************/
XBT_PUBLIC(void) simcall_set_category(smx_synchro_t synchro, const char *category);
-#endif
/************************** Synchro simcalls **********************************/
-
XBT_PUBLIC(smx_mutex_t) simcall_mutex_init(void);
XBT_PUBLIC(void) simcall_mutex_destroy(smx_mutex_t mutex);
XBT_PUBLIC(void) simcall_mutex_lock(smx_mutex_t mutex);
/* Define if xbt contexts are based on our threads implementation or not */
#cmakedefine CONTEXT_THREADS @CONTEXT_THREADS@
-/* Tracing SimGrid */
-#cmakedefine HAVE_TRACING @HAVE_TRACING@
-
/* Jedule output */
#cmakedefine HAVE_JEDULE @HAVE_JEDULE@
const char *tmp;
XBT_LOG_CONNECT(jmsg);
-#ifdef HAVE_TRACING
XBT_LOG_CONNECT(jtrace);
-#endif
(*env)->GetJavaVM(env, &__java_vm);
// It will be great that a JNI expert gives a look to validate it - Adrien ;)
#include "jtrace.h"
-#include <instr/instr.h>
+#include <simgrid/instr.h>
/* Shut up some errors in eclipse online compiler. I wish such a pimple wouldn't be needed */
#ifndef JNIEXPORT
* @brief Get a var associated to a constraint
* @details Get the first variable of the next variable of elem if elem is not NULL
*
- * @param sys The system associated to the variable (not used)
* @param cnst A constraint
* @param elem A element of constraint of the constraint or NULL
* @param nextelem A element of constraint of the constraint or NULL, the one after elem
#include "simgrid/sg_config.h"
#include "surf/surf.h"
-#ifdef HAVE_TRACING
-
XBT_LOG_NEW_CATEGORY(instr, "Logging the behavior of the tracing system (used for Visualization/Analysis of simulations)");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration");
#undef OPT_TRACING_COMMENT_FILE
#undef OPT_VIVA_UNCAT_CONF
#undef OPT_VIVA_CAT_CONF
-
-#endif /* HAVE_TRACING */
#include "simgrid_config.h"
-#ifdef HAVE_TRACING
#include "instr/instr_private.h"
#include "surf/surf.h"
#include "surf/surf_private.h"
{
instr_resume_tracing();
}
-
-#endif /* HAVE_TRACING */
#include "surf/surf.h"
#include "surf/surf_routing.h"
-#ifdef HAVE_TRACING
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_paje_containers, instr, "Paje tracing event system (containers)");
static container_t rootContainer = NULL; /* the root container */
THROWF(tracing_error, 0, "some containers still present even after destroying all of them");
}
}
-
-#endif /* HAVE_TRACING */
#include "instr/instr_private.h"
-#ifdef HAVE_TRACING
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_header, instr, "Paje tracing event system (header)");
extern FILE *tracing_file;
TRACE_header_PajeEndLink (basic, size);
TRACE_header_PajeNewEvent (basic, size);
}
-
-#endif
-
#include "instr/instr_private.h"
-#ifdef HAVE_TRACING
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_paje_types, instr, "Paje tracing event system (types)");
static type_t rootType = NULL; /* the root type */
new_pajeDefineStateType(ret);
return ret;
}
-
-#endif
#include "instr/instr_private.h"
-#ifdef HAVE_TRACING
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_paje_values, instr, "Paje tracing event system (values)");
val_t PJ_value_new (const char *name, const char *color, type_t father)
xbt_free(((val_t)value)->id);
xbt_free(value);
}
-
-
-#endif
#ifndef INSTR_PRIVATE_H_
#define INSTR_PRIVATE_H_
-#include "instr/instr.h"
+#include "simgrid/instr.h"
#include "instr/instr_interface.h"
#include "internal_config.h"
#include "simgrid_config.h"
-#ifdef HAVE_TRACING
-
SG_BEGIN_DECL()
/* Need to define function drand48 for Windows */
SG_END_DECL()
-#endif /* HAVE_TRACING */
-
#ifdef HAVE_JEDULE
#include "instr/jedule/jedule_sd_binding.h"
#endif
#include "instr/instr_private.h"
-#ifdef HAVE_TRACING
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_resource, instr, "tracing (un)-categorized resource utilization");
//to check if variables were previously set to 0, otherwise paje won't simulate them
{
xbt_dict_free(&platform_variables);
}
-#endif /* HAVE_TRACING */
#include "instr/instr_private.h"
#include "xbt/virtu.h" /* sg_cmdline */
-#ifdef HAVE_TRACING
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_trace, instr, "tracing event system");
insert_into_buffer (event);
}
-
-#endif /* HAVE_TRACING */
#include "msg/datatypes.h"
#include "simix/smx_process_private.h"
-#ifdef HAVE_TRACING
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_msg_process, instr, "MSG process");
char *instr_process_id (msg_process_t proc, char *str, int len)
PJ_container_free (container);
}
}
-
-#endif /* HAVE_TRACING */
#include "msg/datatypes.h"
#include "mc/mc.h"
-
-#ifdef HAVE_TRACING
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_msg, instr, "MSG");
void TRACE_msg_set_task_category(msg_task_t task, const char *category)
new_pajePopState (MSG_get_clock(), process_container, type);
}
}
-
-#endif /* HAVE_TRACING */
#include "msg_private.h"
-#ifdef HAVE_TRACING
XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_msg_vm, instr, "MSG VM");
PJ_container_free (container);
}
}
-
-#endif /* HAVE_TRACING */
*/
void MSG_init_nocheck(int *argc, char **argv) {
-#ifdef HAVE_TRACING
TRACE_global_init(argc, argv);
-#endif
xbt_getpid = MSG_process_self_PID;
if (!msg_global) {
if (msg_global==NULL)
return;
-#ifdef HAVE_TRACING
TRACE_surf_resource_utilization_release();
TRACE_end();
-#endif
-
free(msg_global);
msg_global = NULL;
}
e_smx_state_t comp_state;
msg_error_t status = MSG_OK;
-#ifdef HAVE_TRACING
TRACE_msg_task_execute_start(task);
-#endif
xbt_assert((!simdata->compute) && (task->simdata->isused == 0),
"This task is executed somewhere else. Go fix your code! %d",
XBT_DEBUG("Computing on %s", MSG_process_get_name(MSG_process_self()));
if (simdata->flops_amount == 0 && !simdata->host_nb) {
-#ifdef HAVE_TRACING
TRACE_msg_task_execute_end(task);
-#endif
return MSG_OK;
}
);
}
-#ifdef HAVE_TRACING
simcall_set_category(simdata->compute, task->category);
-#endif
p_simdata->waiting_action = simdata->compute;
comp_state = simcall_host_execution_wait(simdata->compute);
simdata->flops_amount = 0.0;
simdata->comm = NULL;
simdata->compute = NULL;
-#ifdef HAVE_TRACING
TRACE_msg_task_execute_end(task);
-#endif
MSG_RETURN(status);
}
msg_error_t status = MSG_OK;
/*msg_process_t proc = MSG_process_self();*/
-#ifdef HAVE_TRACING
TRACE_msg_process_sleep_in(MSG_process_self());
-#endif
-
- /* create action to sleep */
-
- /*proc->simdata->waiting_action = act_sleep;
-
- FIXME: check if not setting the waiting_action breaks something on msg
-
- proc->simdata->waiting_action = NULL;*/
TRY {
simcall_process_sleep(nb_sec);
xbt_ex_free(e);
}
- #ifdef HAVE_TRACING
- TRACE_msg_process_sleep_out(MSG_process_self());
- #endif
+ TRACE_msg_process_sleep_out(MSG_process_self());
MSG_RETURN(status);
}
simdata_task_t t_simdata = NULL;
msg_process_t process = MSG_process_self();
msg_mailbox_t mailbox = MSG_mailbox_get_by_alias(alias);
-
-#ifdef HAVE_TRACING
int call_end = TRACE_msg_task_put_start(task);
-#endif
/* Prepare the task to send */
t_simdata = task->simdata;
comm->s_comm = act;
}
-#ifdef HAVE_TRACING
- if (TRACE_is_enabled()) {
+ if (TRACE_is_enabled())
simcall_set_category(act, task->category);
- }
-
if (call_end)
TRACE_msg_task_put_end();
-#endif
return comm;
}
*/
void MSG_task_set_category (msg_task_t task, const char *category)
{
-#ifdef HAVE_TRACING
TRACE_msg_set_task_category (task, category);
-#endif
}
/** \ingroup msg_task_usage
*/
const char *MSG_task_get_category (msg_task_t task)
{
-#ifdef HAVE_TRACING
return task->category;
-#else
- return NULL;
-#endif
}
/**
if (host)
THROW_UNIMPLEMENTED;
-#ifdef HAVE_TRACING
TRACE_msg_task_get_start();
double start_time = MSG_get_clock();
-#endif
/* Sanity check */
xbt_assert(task, "Null pointer for the task storage");
xbt_ex_free(e);
}
-#ifdef HAVE_TRACING
if (ret != MSG_HOST_FAILURE &&
ret != MSG_TRANSFER_FAILURE &&
ret != MSG_TIMEOUT) {
TRACE_msg_task_get_end(start_time, *task);
}
-#endif
MSG_RETURN(ret);
}
msg_process_t process = MSG_process_self();
simdata_process_t p_simdata = SIMIX_process_self_get_data(process);
-#ifdef HAVE_TRACING
int call_end = TRACE_msg_task_put_start(task); //must be after CHECK_HOST()
-#endif
/* Prepare the task to send */
t_simdata = task->simdata;
comm = simcall_comm_isend(SIMIX_process_self(), mailbox,t_simdata->bytes_amount,
t_simdata->rate, task, sizeof(void *),
NULL, NULL, NULL, task, 0);
-#ifdef HAVE_TRACING
- if (TRACE_is_enabled()) {
+ if (TRACE_is_enabled())
simcall_set_category(comm, task->category);
- }
-#endif
t_simdata->comm = comm;
simcall_comm_wait(comm, timeout);
}
p_simdata->waiting_task = NULL;
-#ifdef HAVE_TRACING
if (call_end)
TRACE_msg_task_put_end();
-#endif
MSG_RETURN(ret);
}
simcall_process_set_data(smx_proc, NULL);
}
-#ifdef HAVE_TRACING
TRACE_msg_process_end(smx_proc);
-#endif
// free the data if a function was provided
if (msg_proc && msg_proc->data && msg_global->process_data_cleanup) {
msg_global->process_data_cleanup(msg_proc->data);
simcall_process_create(&process, name, code, simdata, sg_host_name(host), -1,
argc, argv, properties,0);
-#ifdef HAVE_TRACING
TRACE_msg_process_create(name, SIMIX_process_get_PID(process), host);
-#endif
if (!process) {
/* Undo everything we have just changed */
return NULL;
}
else {
- #ifdef HAVE_TRACING
simcall_process_on_exit(process,(int_f_pvoid_pvoid_t)TRACE_msg_process_kill,process);
- #endif
}
return process;
}
{
simdata_process_t simdata = simcall_process_get_data(process);
simdata->m_host = host;
-#ifdef HAVE_TRACING
msg_host_t now = simdata->m_host;
TRACE_msg_process_change_host(process, now, host);
-#endif
simcall_process_change_host(process, host);
return MSG_OK;
}
{
xbt_assert(process != NULL, "Invalid parameter");
-#ifdef HAVE_TRACING
TRACE_msg_process_suspend(process);
-#endif
-
simcall_process_suspend(process);
MSG_RETURN(MSG_OK);
}
{
xbt_assert(process != NULL, "Invalid parameter");
-#ifdef HAVE_TRACING
TRACE_msg_process_resume(process);
-#endif
-
simcall_process_resume(process);
MSG_RETURN(MSG_OK);
}
simdata->host_list = NULL;
simdata->flops_parallel_amount = NULL;
simdata->bytes_parallel_amount = NULL;
-#ifdef HAVE_TRACING
TRACE_msg_task_create(task);
-#endif
return task;
}
simdata->dispatch_latency = dispatch_latency;
simdata->collect_latency = collect_latency;
-#ifdef HAVE_TRACING
- //FIXME
- /* TRACE_msg_gpu_task_create(task); */
-#endif
+ /* TRACE_msg_gpu_task_create(task); FIXME*/
return task;
}
/* the task is being sent or executed: cancel it first */
MSG_task_cancel(task);
}
-#ifdef HAVE_TRACING
TRACE_msg_task_destroy(task);
-#endif
xbt_free(task->name);
* \brief Returns the computation amount needed to process a task #msg_task_t.
*
* Once a task has been processed, this amount is set to 0. If you want, you
- * can reset this value with #MSG_task_set_compute_duration before restarting the task.
+ * can reset this value with #MSG_task_set_flops_amount before restarting the task.
*/
double MSG_task_get_compute_duration(msg_task_t task)
{
XBT_DEBUG("A new VM (%s) has been created", name);
- #ifdef HAVE_TRACING
TRACE_msg_vm_create(name, ind_pm);
- #endif
return ind_vm;
}
__MSG_host_destroy(vm);
- #ifdef HAVE_TRACING
TRACE_msg_vm_end(vm);
- #endif
}
{
simcall_vm_start(vm);
- #ifdef HAVE_TRACING
TRACE_msg_vm_start(vm);
- #endif
}
/* msg_vm_t equals to msg_host_t */
simcall_vm_shutdown(vm);
- // #ifdef HAVE_TRACING
// TRACE_msg_vm_(vm);
- // #endif
}
msg_host_priv_t priv = msg_host_resource_priv(vm);
priv->is_migrating = 0;
XBT_DEBUG("VM(%s) moved from PM(%s) to PM(%s)", ms->vm->key, ms->src_pm->key, ms->dst_pm->key);
- #ifdef HAVE_TRACING
- TRACE_msg_vm_change_host(ms->vm, ms->src_pm, ms->dst_pm);
- #endif
-
+ TRACE_msg_vm_change_host(ms->vm, ms->src_pm, ms->dst_pm);
}
// Inform the SRC that the migration has been correctly performed
{
// This part is done in the RX code, to handle the corner case where SRC can crash just at the end of the migration process
// In that case, the VM has been already assigned to the DST node.
//XBT_DEBUG("VM(%s) moved from PM(%s) to PM(%s)", vm->key, old_pm->key, new_pm->key);
- //#ifdef HAVE_TRACING
//TRACE_msg_vm_change_host(vm, old_pm, new_pm);
- //#endif
}
XBT_DEBUG("vm_suspend done");
- #ifdef HAVE_TRACING
TRACE_msg_vm_suspend(vm);
- #endif
}
{
simcall_vm_resume(vm);
- #ifdef HAVE_TRACING
TRACE_msg_vm_resume(vm);
- #endif
}
THROWF(vm_error, 0, "VM(%s) is migrating", sg_host_name(vm));
simcall_vm_save(vm);
- #ifdef HAVE_TRACING
TRACE_msg_vm_save(vm);
- #endif
}
/** @brief Restore the execution of the VM. All processes on the VM run again.
{
simcall_vm_restore(vm);
- #ifdef HAVE_TRACING
TRACE_msg_vm_restore(vm);
- #endif
}
#include "private.h"
#include "simdag/datatypes.h"
-#ifdef HAVE_TRACING
XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_sd, instr, "SD");
return;
}
-#endif /* HAVE_TRACING */
double *bytes_amount;
double rate;
-#ifdef HAVE_TRACING
long long int counter; /* task unique identifier for instrumentation */
char *category; /* sd task category for instrumentation */
-#endif
} s_SD_task_t;
/* Task dependencies */
newfile = SD_task_create_comm_e2e(file->name, NULL, file->amount);
SD_task_dependency_add(NULL, NULL, root_task, newfile);
SD_task_dependency_add(NULL, NULL, newfile, depafter->dst);
-#ifdef HAVE_TRACING
if (depafter->src){
const char *category = depafter->src->category;
if (category){
TRACE_sd_set_task_category(newfile, category);
}
}
-#endif
xbt_dynar_push(result, &newfile);
}
} else if (xbt_dynar_is_empty(file->tasks_after)) {
newfile = SD_task_create_comm_e2e(file->name, NULL, file->amount);
SD_task_dependency_add(NULL, NULL, depbefore->src, newfile);
SD_task_dependency_add(NULL, NULL, newfile, end_task);
-#ifdef HAVE_TRACING
if (depbefore->src){
const char *category = depbefore->src->category;
if (category){
TRACE_sd_set_task_category(newfile, category);
}
}
-#endif
xbt_dynar_push(result, &newfile);
}
} else {
newfile = SD_task_create_comm_e2e(file->name, NULL, file->amount);
SD_task_dependency_add(NULL, NULL, depbefore->src, newfile);
SD_task_dependency_add(NULL, NULL, newfile, depafter->dst);
-#ifdef HAVE_TRACING
if (depbefore->src){
const char *category = depbefore->src->category;
if (category){
TRACE_sd_set_task_category(newfile, category);
}
}
-#endif
xbt_dynar_push(result, &newfile);
}
}
runtime *= 4200000000.; /* Assume that timings were done on a 4.2GFlops machine. I mean, why not? */
// XBT_INFO("See <job id=%s runtime=%s %.0f>",A_dax__job_id,A_dax__job_runtime,runtime);
current_job = SD_task_create_comp_seq(name, NULL, runtime);
-#ifdef HAVE_TRACING
char *category = A_dax__job_name;
if (category){
TRACE_category (category);
TRACE_sd_set_task_category(current_job, category);
}
-#endif
xbt_dict_set(jobs, A_dax__job_id, current_job, NULL);
free(name);
xbt_dynar_push(result, ¤t_job);
SD_task_destroy(*t);
}
-#ifdef HAVE_TRACING
static void TRACE_sd_dotloader (SD_task_t task, const char *category) {
if (category && strlen (category)){
if (task->category)
TRACE_sd_set_task_category(task, category);
}
}
-#endif
/** @brief loads a DOT file describing a DAG
*
} else {
task = SD_task_create_comp_par_amdahl(name, NULL , amount, alpha);
}
-#ifdef HAVE_TRACING
TRACE_sd_dotloader (task, agget (node, (char*)"category"));
-#endif
xbt_dict_set(jobs, name, task, NULL);
if (!strcmp(name, "root")){
/* by design the root task is always SCHEDULABLE */
task = SD_task_create_comm_e2e(name, NULL , size);
else
task = SD_task_create_comm_par_mxn_1d_block(name, NULL , size);
-#ifdef HAVE_TRACING
TRACE_sd_dotloader (task, agget (node, (char*)"category"));
-#endif
SD_task_dependency_add(NULL, NULL, src, task);
SD_task_dependency_add(NULL, NULL, task, dst);
xbt_dict_set(jobs, name, task, NULL);
*/
void SD_init(int *argc, char **argv)
{
-#ifdef HAVE_TRACING
TRACE_global_init(argc, argv);
-#endif
s_SD_task_t task;
*/
void SD_exit(void)
{
-#ifdef HAVE_TRACING
TRACE_surf_resource_utilization_release();
-#endif
xbt_mallocator_free(sd_global->task_mallocator);
xbt_swag_free(sd_global->failed_task_set);
xbt_swag_free(sd_global->return_set);
-#ifdef HAVE_TRACING
TRACE_end();
-#endif
xbt_free(sd_global);
sd_global = NULL;
sd_global->task_number++;
-#ifdef HAVE_TRACING
TRACE_sd_task_create(task);
-#endif
return task;
}
res->bytes_amount[2] = amount;
res->kind = SD_TASK_COMM_E2E;
-#ifdef HAVE_TRACING
TRACE_category("COMM_E2E");
TRACE_sd_set_task_category(res, "COMM_E2E");
-#endif
return res;
}
res->flops_amount[0] = flops_amount;
res->kind = SD_TASK_COMP_SEQ;
-#ifdef HAVE_TRACING
TRACE_category("COMP_SEQ");
TRACE_sd_set_task_category(res, "COMP_SEQ");
-#endif
-return res;
+ return res;
}
/** @brief create a parallel computation task that can then be auto-scheduled
res->alpha = alpha;
res->kind = SD_TASK_COMP_PAR_AMDAHL;
-#ifdef HAVE_TRACING
TRACE_category("COMP_PAR_AMDAHL");
TRACE_sd_set_task_category(res, "COMP_PAR_AMDAHL");
-#endif
return res;
}
res->workstation_list=NULL;
res->kind = SD_TASK_COMM_PAR_MXN_1D_BLOCK;
-#ifdef HAVE_TRACING
TRACE_category("COMM_PAR_MXN_1D_BLOCK");
TRACE_sd_set_task_category(res, "COMM_PAR_MXN_1D_BLOCK");
-#endif
return res;
}
xbt_free(task->bytes_amount);
xbt_free(task->flops_amount);
-#ifdef HAVE_TRACING
TRACE_sd_task_destroy(task);
-#endif
xbt_mallocator_release(sd_global->task_mallocator,task);
sd_global->task_number--;
}
}
-#ifdef HAVE_TRACING
if (task->category)
XBT_INFO(" - tracing category: %s", task->category);
-#endif
XBT_INFO(" - amount: %.0f", SD_task_get_amount(task));
if (task->kind == SD_TASK_COMP_PAR_AMDAHL)
XBT_DEBUG("surf_action = %p", task->surf_action);
-#ifdef HAVE_TRACING
if (task->category)
TRACE_surf_action(task->surf_action, task->category);
-#endif
__SD_task_destroy_scheduling_data(task); /* now the scheduling data are not useful anymore */
__SD_task_set_state(task, SD_RUNNING);
#include "smpi/smpi_interface.h"
#include "mc/mc.h"
#include "mc/mc_record.h"
-#include "instr/instr.h"
+#include "simgrid/instr.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_config, surf,
"About the configuration of simgrid");
"to the command line.\n"
"\n"
"You can also use --help-models to see the details of all models known by this simulator.\n"
-#ifdef HAVE_TRACING
"\n"
"You can also use --help-tracing to see the details of all tracing options known by this simulator.\n"
-#endif
"\n"
"You can also use --help-logs and --help-log-categories to see the details of logging output.\n"
"\n"
surf_optimization_mode_description[k].description);
printf("Both network and CPU models have 'Lazy' as default optimization level\n\n");
shall_exit = 1;
-#ifdef HAVE_TRACING
} else if (!strcmp(argv[i], "--help-tracing")) {
TRACE_help (1);
shall_exit = 1;
-#endif
} else {
argv[j++] = argv[i];
}
simcall_BODY_comm_wait(comm, timeout);
}
-#ifdef HAVE_TRACING
/**
* \brief Set the category of an synchro.
*
}
simcall_BODY_set_category(synchro, category);
}
-#endif
/**
* \ingroup simix_comm_management
static inline void simcall_mc_random__set__result(smx_simcall_t simcall, int result){
simcall->result.i = result;
}
-#ifdef HAVE_LATENCY_BOUND_TRACKING
-static inline smx_synchro_t simcall_comm_is_latency_bounded__get__comm(smx_simcall_t simcall) {
+static inline smx_synchro_t simcall_set_category__get__synchro(smx_simcall_t simcall) {
return (smx_synchro_t) simcall->args[0].dp;
}
-static inline void simcall_comm_is_latency_bounded__set__comm(smx_simcall_t simcall, void* arg) {
+static inline void simcall_set_category__set__synchro(smx_simcall_t simcall, void* arg) {
simcall->args[0].dp = arg;
}
-static inline int simcall_comm_is_latency_bounded__get__result(smx_simcall_t simcall){
- return simcall->result.i;
+static inline const char* simcall_set_category__get__category(smx_simcall_t simcall) {
+ return simcall->args[1].cc;
}
-static inline void simcall_comm_is_latency_bounded__set__result(smx_simcall_t simcall, int result){
- simcall->result.i = result;
+static inline void simcall_set_category__set__category(smx_simcall_t simcall, const char* arg) {
+ simcall->args[1].cc = arg;
}
-#endif
-
-#ifdef HAVE_TRACING
+#ifdef HAVE_LATENCY_BOUND_TRACKING
-static inline smx_synchro_t simcall_set_category__get__synchro(smx_simcall_t simcall) {
+static inline smx_synchro_t simcall_comm_is_latency_bounded__get__comm(smx_simcall_t simcall) {
return (smx_synchro_t) simcall->args[0].dp;
}
-static inline void simcall_set_category__set__synchro(smx_simcall_t simcall, void* arg) {
+static inline void simcall_comm_is_latency_bounded__set__comm(smx_simcall_t simcall, void* arg) {
simcall->args[0].dp = arg;
}
-static inline const char* simcall_set_category__get__category(smx_simcall_t simcall) {
- return simcall->args[1].cc;
+static inline int simcall_comm_is_latency_bounded__get__result(smx_simcall_t simcall){
+ return simcall->result.i;
}
-static inline void simcall_set_category__set__category(smx_simcall_t simcall, const char* arg) {
- simcall->args[1].cc = arg;
+static inline void simcall_comm_is_latency_bounded__set__result(smx_simcall_t simcall, int result){
+ simcall->result.i = result;
}
#endif
#endif
-#ifdef HAVE_TRACING
-
-#endif
-
#ifdef HAVE_MC
mc_snapshot_t simcall_HANDLER_mc_snapshot(smx_simcall_t simcall);
int simcall_HANDLER_mc_compare_snapshots(smx_simcall_t simcall, mc_snapshot_t s1, mc_snapshot_t s2);
}
return self->simcall.result.i;
}
-#ifdef HAVE_LATENCY_BOUND_TRACKING
-inline static int simcall_BODY_comm_is_latency_bounded(smx_synchro_t comm) {
+inline static void simcall_BODY_set_category(smx_synchro_t synchro, const char* category) {
smx_process_t self = SIMIX_process_self();
/* Go to that function to follow the code flow through the simcall barrier */
- if (0) SIMIX_comm_is_latency_bounded(comm);
+ if (0) SIMIX_set_category(synchro, category);
/* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
- self->simcall.call = SIMCALL_COMM_IS_LATENCY_BOUNDED;
+ self->simcall.call = SIMCALL_SET_CATEGORY;
memset(&self->simcall.result, 0, sizeof(self->simcall.result));
memset(self->simcall.args, 0, sizeof(self->simcall.args));
- self->simcall.args[0].dp = (void*) comm;
+ self->simcall.args[0].dp = (void*) synchro;
+ self->simcall.args[1].cc = (const char*) category;
if (self != simix_global->maestro_process) {
XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
} else {
SIMIX_simcall_handle(&self->simcall, 0);
}
- return self->simcall.result.i;
+
}
-#endif
-
-#ifdef HAVE_TRACING
+#ifdef HAVE_LATENCY_BOUND_TRACKING
-inline static void simcall_BODY_set_category(smx_synchro_t synchro, const char* category) {
+inline static int simcall_BODY_comm_is_latency_bounded(smx_synchro_t comm) {
smx_process_t self = SIMIX_process_self();
/* Go to that function to follow the code flow through the simcall barrier */
- if (0) SIMIX_set_category(synchro, category);
+ if (0) SIMIX_comm_is_latency_bounded(comm);
/* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
- self->simcall.call = SIMCALL_SET_CATEGORY;
+ self->simcall.call = SIMCALL_COMM_IS_LATENCY_BOUNDED;
memset(&self->simcall.result, 0, sizeof(self->simcall.result));
memset(self->simcall.args, 0, sizeof(self->simcall.args));
- self->simcall.args[0].dp = (void*) synchro;
- self->simcall.args[1].cc = (const char*) category;
+ self->simcall.args[0].dp = (void*) comm;
if (self != simix_global->maestro_process) {
XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
} else {
SIMIX_simcall_handle(&self->simcall, 0);
}
-
+ return self->simcall.result.i;
}
#endif
SIMCALL_STORAGE_GET_CONTENT,
SIMCALL_ASR_GET_PROPERTIES,
SIMCALL_MC_RANDOM,
+ SIMCALL_SET_CATEGORY,
#ifdef HAVE_LATENCY_BOUND_TRACKING
SIMCALL_COMM_IS_LATENCY_BOUNDED,
#endif
-#ifdef HAVE_TRACING
- SIMCALL_SET_CATEGORY,
-#endif
-
#ifdef HAVE_MC
SIMCALL_MC_SNAPSHOT,
SIMCALL_MC_COMPARE_SNAPSHOTS,
[SIMCALL_STORAGE_GET_CONTENT] = "SIMCALL_STORAGE_GET_CONTENT",
[SIMCALL_ASR_GET_PROPERTIES] = "SIMCALL_ASR_GET_PROPERTIES",
[SIMCALL_MC_RANDOM] = "SIMCALL_MC_RANDOM",
+ [SIMCALL_SET_CATEGORY] = "SIMCALL_SET_CATEGORY",
#ifdef HAVE_LATENCY_BOUND_TRACKING
[SIMCALL_COMM_IS_LATENCY_BOUNDED] = "SIMCALL_COMM_IS_LATENCY_BOUNDED",
#endif
-#ifdef HAVE_TRACING
- [SIMCALL_SET_CATEGORY] = "SIMCALL_SET_CATEGORY",
-#endif
-
#ifdef HAVE_MC
[SIMCALL_MC_SNAPSHOT] = "SIMCALL_MC_SNAPSHOT",
[SIMCALL_MC_COMPARE_SNAPSHOTS] = "SIMCALL_MC_COMPARE_SNAPSHOTS",
SIMIX_simcall_answer(simcall);
break;
-#ifdef HAVE_LATENCY_BOUND_TRACKING
-case SIMCALL_COMM_IS_LATENCY_BOUNDED:
- simcall->result.i = SIMIX_comm_is_latency_bounded((smx_synchro_t) simcall->args[0].dp);
+case SIMCALL_SET_CATEGORY:
+ SIMIX_set_category((smx_synchro_t) simcall->args[0].dp, simcall->args[1].cc);
SIMIX_simcall_answer(simcall);
break;
-#endif
-
-#ifdef HAVE_TRACING
-case SIMCALL_SET_CATEGORY:
- SIMIX_set_category((smx_synchro_t) simcall->args[0].dp, simcall->args[1].cc);
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+case SIMCALL_COMM_IS_LATENCY_BOUNDED:
+ simcall->result.i = SIMIX_comm_is_latency_bounded((smx_synchro_t) simcall->args[0].dp);
SIMIX_simcall_answer(simcall);
break;
Func - storage_get_content (void*, xbt_dict_t) (storage, void*, smx_storage_t)
Func H asr_get_properties (void*, xbt_dict_t) (name, const char*)
Func H mc_random (int) (min, int) (max, int)
+Proc - set_category (void) (synchro, void*, smx_synchro_t) (category, const char*)
## HAVE_LATENCY_BOUND_TRACKING
Func - comm_is_latency_bounded (int) (comm, void*, smx_synchro_t)
-## HAVE_TRACING
-Proc - set_category (void) (synchro, void*, smx_synchro_t) (category, const char*)
## HAVE_MC
Func H mc_snapshot (void*, mc_snapshot_t)
Func H mc_compare_snapshots (int) (s1, void*, mc_snapshot_t) (s2, void*, mc_snapshot_t)
if (xbt_swag_size(simix_global->process_list) != 0) {
-#ifdef HAVE_TRACING
- TRACE_end();
-#endif
+ TRACE_end();
XBT_CRITICAL("Oops ! Deadlock or code not perfectly clean.");
SIMIX_display_process_status();
synchro->name = xbt_strdup(name);
synchro->state = SIMIX_RUNNING;
synchro->execution.host = host;
-
-#ifdef HAVE_TRACING
synchro->category = NULL;
-#endif
/* set surf's action */
if (!MC_is_active() && !MC_record_replay_is_active()) {
synchro->name = xbt_strdup(name);
synchro->state = SIMIX_RUNNING;
synchro->execution.host = NULL; /* FIXME: do we need the list of hosts? */
-
-#ifdef HAVE_TRACING
synchro->category = NULL;
-#endif
/* set surf's synchro */
workstation_list = xbt_new0(void *, host_nb);
}
-#ifdef HAVE_TRACING
void SIMIX_set_category(smx_synchro_t synchro, const char *category)
{
if (synchro->state != SIMIX_RUNNING) return;
surf_action_set_category(synchro->comm.surf_comm, category);
}
}
-#endif
/**
* \brief Function to get the parameters of the given the SIMIX host.
void SIMIX_host_execution_resume(smx_synchro_t synchro);
void SIMIX_post_host_execute(smx_synchro_t synchro);
-#ifdef HAVE_TRACING
void SIMIX_set_category(smx_synchro_t synchro, const char *category);
-#endif
+
/* vm related stuff */
smx_host_t SIMIX_vm_create(const char *name, smx_host_t ind_phys_host);
synchro = xbt_mallocator_get(simix_global->synchro_mallocator);
synchro->type = SIMIX_SYNC_IO;
synchro->name = NULL;
-#ifdef HAVE_TRACING
synchro->category = NULL;
-#endif
synchro->io.host = host;
synchro->io.surf_io = surf_workstation_read(host, fd->surf_file, size);
synchro = xbt_mallocator_get(simix_global->synchro_mallocator);
synchro->type = SIMIX_SYNC_IO;
synchro->name = NULL;
-#ifdef HAVE_TRACING
synchro->category = NULL;
-#endif
synchro->io.host = host;
synchro->io.surf_io = surf_workstation_write(host, fd->surf_file, size);
synchro = xbt_mallocator_get(simix_global->synchro_mallocator);
synchro->type = SIMIX_SYNC_IO;
synchro->name = NULL;
-#ifdef HAVE_TRACING
synchro->category = NULL;
-#endif
synchro->io.host = host;
synchro->io.surf_io = surf_workstation_open(host, fullpath);
synchro = xbt_mallocator_get(simix_global->synchro_mallocator);
synchro->type = SIMIX_SYNC_IO;
synchro->name = NULL;
-#ifdef HAVE_TRACING
synchro->category = NULL;
-#endif
synchro->io.host = host;
synchro->io.surf_io = surf_workstation_close(host, fd->surf_file);
synchro->latency_limited = -1;
#endif
-#ifdef HAVE_TRACING
synchro->category = NULL;
-#endif
XBT_DEBUG("Create communicate synchro %p", synchro);
++smx_total_comms;
int latency_limited;
#endif
-#ifdef HAVE_TRACING
char *category; /* simix action category for instrumentation */
-#endif
} s_smx_synchro_t;
void SIMIX_context_mod_init(void);
synchro = xbt_mallocator_get(simix_global->synchro_mallocator);
synchro->type = SIMIX_SYNC_SLEEP;
synchro->name = NULL;
-#ifdef HAVE_TRACING
synchro->category = NULL;
-#endif
synchro->sleep.host = host;
synchro->sleep.surf_sleep =
//attempt to do a quick autotuning version of the collective,
-#ifdef HAVE_TRACING
#define TRACE_AUTO_COLL(cat) if (TRACE_is_enabled()){\
type_t type = PJ_type_get_or_null (#cat, PJ_type_get_root());\
if (!type){\
val_t value = PJ_value_get_or_new(mpi_coll_##cat##_description[i].name,"1.0 1.0 1.0", type);\
new_pajeNewEvent (SIMIX_get_clock(), PJ_container_get(cont_name), type, value);\
}
-#else
-#define TRACE_AUTO_COLL(cat)
-#endif
#define AUTOMATIC_COLL_BENCH(cat, ret, args, args2)\
#include <stdarg.h>
#include <simgrid/sg_config.h>
-
-#ifdef HAVE_TRACING
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_smpi, instr, "Tracing SMPI");
static xbt_dict_t keys;
new_pajeEndLink (SIMIX_get_clock(), PJ_container_get_root(), type, container, "PTP", key);
}
-#endif /* HAVE_TRACING */
MPI_Request detached_sender;
int refcount;
MPI_Op op;
-#ifdef HAVE_TRACING
int send;
int recv;
-#endif
} s_smpi_mpi_request_t;
typedef struct s_smpi_mpi_comm_key_elem {
void mpi_comm_get_parent_ ( int*parent, int* ierr);
-#ifdef HAVE_TRACING
/********** Tracing **********/
/* from smpi_instr.c */
void TRACE_internal_smpi_set_category (const char *category);
void TRACE_smpi_recv(int rank, int src, int dst);
void TRACE_smpi_init(int rank);
void TRACE_smpi_finalize(int rank);
-#endif
const char* encode_datatype(MPI_Datatype datatype, int* known);
else
request->refcount = 0;
request->op = MPI_REPLACE;
-#ifdef HAVE_TRACING
request->send = 0;
request->recv = 0;
-#endif
if (flags & SEND) smpi_datatype_unuse(datatype);
return request;
int receiver = request->dst;
- #ifdef HAVE_TRACING
- int rank = request->src;
- if (TRACE_smpi_view_internals()) {
- TRACE_smpi_send(rank, rank, receiver,request->size);
- }
- #endif
+ int rank = request->src;
+ if (TRACE_smpi_view_internals()) {
+ TRACE_smpi_send(rank, rank, receiver,request->size);
+ }
print_request("New send", request);
//if we are giving back the control to the user without waiting for completion, we have to inject timings
-#ifdef HAVE_TRACING
/* FIXME: detached sends are not traceable (request->action == NULL) */
if (request->action)
- simcall_set_category(request->action, TRACE_internal_smpi_get_category());
+ simcall_set_category(request->action, TRACE_internal_smpi_get_category());
-#endif
xbt_mutex_release(mut);
}
}
-#ifdef HAVE_TRACING
if (TRACE_smpi_view_internals()) {
if(req->flags & RECV){
int rank = smpi_process_index();
TRACE_smpi_recv(rank, src_traced, rank);
}
}
-#endif
if(req->detached_sender!=NULL){
smpi_mpi_request_free(&(req->detached_sender));
host = SIMIX_host_self();
XBT_DEBUG("Handle real computation time: %f flops", flops);
action = simcall_host_execute("computation", host, flops, 1, 0, 0);
-#ifdef HAVE_TRACING
simcall_set_category (action, TRACE_internal_smpi_get_category());
-#endif
simcall_host_execution_wait(action);
smpi_switch_data_segment(smpi_process_index());
}
if (duration >= smpi_cpu_threshold) {
XBT_DEBUG("Sleep for %g to handle real computation time", duration);
double flops = duration * smpi_running_power;
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type=TRACING_COMPUTING;
extra->comp_size=flops;
TRACE_smpi_computing_in(rank, extra);
-#endif
smpi_execute_flops(flops);
-#ifdef HAVE_TRACING
TRACE_smpi_computing_out(rank);
-#endif
} else {
XBT_DEBUG("Real computation took %g while option smpi/cpu_threshold is set to %g => ignore it",
smpi_bench_end();
XBT_DEBUG("Sleep for: %lf secs", secs);
- #ifdef HAVE_TRACING
int rank = smpi_comm_rank(MPI_COMM_WORLD);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type=TRACING_SLEEPING;
extra->sleep_duration=secs;
TRACE_smpi_sleeping_in(rank, extra);
-#endif
+
simcall_process_sleep(secs);
-#ifdef HAVE_TRACING
+
TRACE_smpi_sleeping_out(rank);
-#endif
smpi_bench_begin();
return 0;
function: xbt_log_appender_file.c depends on it
DO NOT connect this in XBT or so, or it will be
useless to xbt_log_appender_file.c */
-#ifdef HAVE_TRACING
XBT_LOG_CONNECT(instr_smpi);
-#endif
XBT_LOG_CONNECT(smpi_base);
XBT_LOG_CONNECT(smpi_bench);
XBT_LOG_CONNECT(smpi_coll);
smpi_init_logs();
-#ifdef HAVE_TRACING
TRACE_global_init(&argc, argv);
TRACE_add_start_function(TRACE_smpi_alloc);
TRACE_add_end_function(TRACE_smpi_release);
-#endif
SIMIX_global_init(&argc, argv);
smpi_global_destroy();
-#ifdef HAVE_TRACING
TRACE_end();
-#endif
return 0;
}
smpi_init_options();
smpi_global_init();
smpi_check_options();
-#ifdef HAVE_TRACING
- if (TRACE_is_enabled() && TRACE_is_configured()) {
+ if (TRACE_is_enabled() && TRACE_is_configured())
TRACE_smpi_alloc();
- }
-#endif
if(smpi_privatize_global_variables)
smpi_initialize_global_memory_segments();
}
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_pmpi, smpi,
"Logging specific to SMPI (pmpi)");
-#ifdef HAVE_TRACING
//this function need to be here because of the calls to smpi_bench
void TRACE_smpi_set_category(const char *category)
{
//begin bench after changing process's category
smpi_bench_begin();
}
-#endif
/* PMPI User level calls */
{
smpi_process_init(argc, argv);
smpi_process_mark_as_initialized();
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
TRACE_smpi_init(rank);
TRACE_smpi_computing_init(rank);
extra->type = TRACING_INIT;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
smpi_bench_begin();
return MPI_SUCCESS;
}
int PMPI_Finalize(void)
{
smpi_bench_end();
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_FINALIZE;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
-#endif
+
smpi_process_finalize();
-#ifdef HAVE_TRACING
+
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
TRACE_smpi_finalize(smpi_process_index());
-#endif
smpi_process_destroy();
return MPI_SUCCESS;
}
int PMPI_Get_library_version (char *version,int *len){
int retval = MPI_SUCCESS;
smpi_bench_end();
- snprintf(version,MPI_MAX_LIBRARY_VERSION_STRING,"SMPI Version %d.%d. Copyright The Simgrid Team 2007-2014",SIMGRID_VERSION_MAJOR,
+ snprintf(version,MPI_MAX_LIBRARY_VERSION_STRING,"SMPI Version %d.%d. Copyright The Simgrid Team 2007-2015",SIMGRID_VERSION_MAJOR,
SIMGRID_VERSION_MINOR);
*len = strlen(version) > MPI_MAX_LIBRARY_VERSION_STRING ? MPI_MAX_LIBRARY_VERSION_STRING : strlen(version);
smpi_bench_begin();
retval = MPI_ERR_TAG;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int src_traced = smpi_group_index(smpi_comm_group(comm), src);
dt_size_send = smpi_datatype_size(datatype);
extra->send_size = count*dt_size_send;
TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra);
-#endif
*request = smpi_mpi_irecv(buf, count, datatype, src, tag, comm);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
(*request)->recv = 1;
-#endif
}
smpi_bench_begin();
retval = MPI_ERR_TAG;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->send_size = count*dt_size_send;
TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced, count*smpi_datatype_size(datatype));
-#endif
*request = smpi_mpi_isend(buf, count, datatype, dst, tag, comm);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
(*request)->send = 1;
-#endif
}
smpi_bench_begin();
retval = MPI_ERR_TAG;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->send_size = count*dt_size_send;
TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced, count*smpi_datatype_size(datatype));
-#endif
*request = smpi_mpi_issend(buf, count, datatype, dst, tag, comm);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
(*request)->send = 1;
-#endif
}
smpi_bench_begin();
} else if(tag<0 && tag != MPI_ANY_TAG){
retval = MPI_ERR_TAG;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int src_traced = smpi_group_index(smpi_comm_group(comm), src);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
dt_size_send = smpi_datatype_size(datatype);
extra->send_size = count*dt_size_send;
TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra);
-#endif
smpi_mpi_recv(buf, count, datatype, src, tag, comm, status);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
//the src may not have been known at the beginning of the recv (MPI_ANY_SOURCE)
if(status!=MPI_STATUS_IGNORE){
src_traced = smpi_group_index(smpi_comm_group(comm), status->MPI_SOURCE);
TRACE_smpi_recv(rank, src_traced, rank);
}
TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
-#endif
}
smpi_bench_begin();
retval = MPI_ERR_TAG;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->send_size = count*dt_size_send;
TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype));
-#endif
smpi_mpi_send(buf, count, datatype, dst, tag, comm);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
-#endif
}
smpi_bench_begin();
retval = MPI_ERR_TAG;
} else {
- #ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
dt_size_send = smpi_datatype_size(datatype);
extra->send_size = count*dt_size_send;
TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra); TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype));
- #endif
smpi_mpi_ssend(buf, count, datatype, dst, tag, comm);
retval = MPI_SUCCESS;
- #ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
- #endif
}
smpi_bench_begin();
retval = MPI_ERR_TAG;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
int src_traced = smpi_group_index(smpi_comm_group(comm), src);
TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced,sendcount*smpi_datatype_size(sendtype));
-#endif
-
smpi_mpi_sendrecv(sendbuf, sendcount, sendtype, dst, sendtag, recvbuf,
recvcount, recvtype, src, recvtag, comm, status);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, src_traced, dst_traced, __FUNCTION__);
TRACE_smpi_recv(rank, src_traced, rank);
-#endif
-
}
smpi_bench_begin();
smpi_empty_status(status);
retval = MPI_SUCCESS;
} else {
-#ifdef HAVE_TRACING
int rank = request && (*request)->comm != MPI_COMM_NULL
? smpi_process_index()
: -1;
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_TEST;
TRACE_smpi_testing_in(rank, extra);
-#endif
+
*flag = smpi_mpi_test(request, status);
-#ifdef HAVE_TRACING
+
TRACE_smpi_testing_out(rank);
-#endif
retval = MPI_SUCCESS;
}
smpi_bench_begin();
retval = MPI_SUCCESS;
} else {
-#ifdef HAVE_TRACING
int rank = request && (*request)->comm != MPI_COMM_NULL
? smpi_process_index()
: -1;
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_WAIT;
TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, extra);
-#endif
smpi_mpi_wait(request, status);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
//the src may not have been known at the beginning of the recv (MPI_ANY_SOURCE)
TRACE_smpi_ptp_out(rank, src_traced, dst_traced, __FUNCTION__);
if (is_wait_for_receive) {
src_traced;
TRACE_smpi_recv(rank, src_traced, dst_traced);
}
-#endif
-
}
smpi_bench_begin();
return MPI_ERR_ARG;
smpi_bench_end();
-#ifdef HAVE_TRACING
//save requests information for tracing
int i;
int *srcs = xbt_new0(int, count);
extra->send_size=count;
TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,extra);
-#endif
*index = smpi_mpi_waitany(count, requests, status);
-#ifdef HAVE_TRACING
+
if(*index!=MPI_UNDEFINED){
int src_traced = srcs[*index];
//the src may not have been known at the beginning of the recv (MPI_ANY_SOURCE)
xbt_free(comms);
}
-#endif
smpi_bench_begin();
return MPI_SUCCESS;
}
{
smpi_bench_end();
-#ifdef HAVE_TRACING
//save information from requests
int i;
int *srcs = xbt_new0(int, count);
extra->type = TRACING_WAITALL;
extra->send_size=count;
TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,extra);
-#endif
+
int retval = smpi_mpi_waitall(count, requests, status);
-#ifdef HAVE_TRACING
+
for (i = 0; i < count; i++) {
if(valid[i]){
//int src_traced = srcs[*index];
xbt_free(valid);
xbt_free(comms);
-#endif
smpi_bench_begin();
return retval;
}
} else if (!is_datatype_valid(datatype)) {
retval = MPI_ERR_ARG;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
extra->send_size = count*dt_size_send;
TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra);
-#endif
mpi_coll_bcast_fun(buf, count, datatype, root, comm);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
- TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-#endif
+
+ TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
}
smpi_bench_begin();
if (comm == MPI_COMM_NULL) {
retval = MPI_ERR_COMM;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_BARRIER;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
-#endif
- mpi_coll_barrier_fun(comm);
- retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
+
+ mpi_coll_barrier_fun(comm);
+ retval = MPI_SUCCESS;
+
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
sendtmpcount=0;
sendtmptype=recvtype;
}
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->recv_size = recvcount*dt_size_recv;
TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra);
-#endif
- mpi_coll_gather_fun(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcount,
+
+ mpi_coll_gather_fun(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcount,
recvtype, root, comm);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-#endif
}
smpi_bench_begin();
sendtmptype=recvtype;
}
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
int i=0;
extra->recvcounts[i] = recvcounts[i]*dt_size_recv;
TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
-#endif
- smpi_mpi_gatherv(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcounts,
+
+ smpi_mpi_gatherv(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcounts,
displs, recvtype, root, comm);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-#endif
}
smpi_bench_begin();
sendcount=recvcount;
sendtype=recvtype;
}
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLGATHER;
extra->recv_size = recvcount*dt_size_recv;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
-#endif
- mpi_coll_allgather_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount,
+
+ mpi_coll_allgather_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount,
recvtype, comm);
retval = MPI_SUCCESS;
-
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
return retval;
sendcount=recvcounts[smpi_comm_rank(comm)];
sendtype=recvtype;
}
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int i=0;
int size = smpi_comm_size(comm);
extra->recvcounts[i] = recvcounts[i]*dt_size_recv;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
+
mpi_coll_allgatherv_fun(sendbuf, sendcount, sendtype, recvbuf, recvcounts,
displs, recvtype, comm);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
recvtype=sendtype;
recvcount=sendcount;
}
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
dt_size_recv = smpi_datatype_size(recvtype);
extra->recv_size = recvcount*dt_size_recv;
TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
-#endif
- mpi_coll_scatter_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount,
+
+ mpi_coll_scatter_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount,
recvtype, root, comm);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-#endif
}
smpi_bench_begin();
recvtype=sendtype;
recvcount=sendcounts[smpi_comm_rank(comm)];
}
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
int i=0;
extra->recv_size = recvcount*dt_size_recv;
TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
-#endif
smpi_mpi_scatterv(sendbuf, sendcounts, displs, sendtype, recvbuf,
recvcount, recvtype, root, comm);
+
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-#endif
}
smpi_bench_begin();
} else if (!is_datatype_valid(datatype) || op == MPI_OP_NULL) {
retval = MPI_ERR_ARG;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->root = root_traced;
TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
-#endif
- mpi_coll_reduce_fun(sendbuf, recvbuf, count, datatype, op, root, comm);
+
+ mpi_coll_reduce_fun(sendbuf, recvbuf, count, datatype, op, root, comm);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-#endif
}
smpi_bench_begin();
sendtmpbuf = (char *)xbt_malloc(count*smpi_datatype_get_extent(datatype));
smpi_datatype_copy(recvbuf, count, datatype,sendtmpbuf, count, datatype);
}
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLREDUCE;
extra->send_size = count*dt_size_send;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
- mpi_coll_allreduce_fun(sendtmpbuf, recvbuf, count, datatype, op, comm);
- if( sendbuf == MPI_IN_PLACE ) {
+ mpi_coll_allreduce_fun(sendtmpbuf, recvbuf, count, datatype, op, comm);
+
+ if( sendbuf == MPI_IN_PLACE )
xbt_free(sendtmpbuf);
- }
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
} else if (op == MPI_OP_NULL) {
retval = MPI_ERR_OP;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_SCAN;
extra->send_size = count*dt_size_send;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
- smpi_mpi_scan(sendbuf, recvbuf, count, datatype, op, comm);
- retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
+
+ smpi_mpi_scan(sendbuf, recvbuf, count, datatype, op, comm);
+
+ retval = MPI_SUCCESS;
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
} else if (op == MPI_OP_NULL) {
retval = MPI_ERR_OP;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_EXSCAN;
dt_size_send = smpi_datatype_size(datatype);
extra->send_size = count*dt_size_send;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
- smpi_mpi_exscan(sendbuf, recvbuf, count, datatype, op, comm);
+
+ smpi_mpi_exscan(sendbuf, recvbuf, count, datatype, op, comm);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
} else if (recvcounts == NULL) {
retval = MPI_ERR_ARG;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int i=0;
int size = smpi_comm_size(comm);
for(i=0; i< size; i++)//copy data to avoid bad free
extra->recvcounts[i] = recvcounts[i]*dt_size_send;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
- void* sendtmpbuf=sendbuf;
- if(sendbuf==MPI_IN_PLACE){
+
+ void* sendtmpbuf=sendbuf;
+ if(sendbuf==MPI_IN_PLACE)
sendtmpbuf=recvbuf;
- }
mpi_coll_reduce_scatter_fun(sendtmpbuf, recvbuf, recvcounts,
datatype, op, comm);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
} else {
int count=smpi_comm_size(comm);
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_REDUCE_SCATTER;
extra->recvcounts[i] = recvcount*dt_size_send;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
- int* recvcounts=(int*)xbt_malloc(count);
+
+ int* recvcounts=(int*)xbt_malloc(count);
for (i=0; i<count;i++)recvcounts[i]=recvcount;
mpi_coll_reduce_scatter_fun(sendbuf, recvbuf, recvcounts,
datatype, op, comm);
xbt_free(recvcounts);
retval = MPI_SUCCESS;
-#ifdef HAVE_TRACING
- TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
+
+ TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
}
smpi_bench_begin();
|| recvtype == MPI_DATATYPE_NULL) {
retval = MPI_ERR_TYPE;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLTOALL;
else
extra->recv_size = recvcount;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
- retval = mpi_coll_alltoall_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm);
-#ifdef HAVE_TRACING
+
+ retval = mpi_coll_alltoall_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm);
+
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
|| recvdisps == NULL) {
retval = MPI_ERR_ARG;
} else {
-#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int i=0;
int size = smpi_comm_size(comm);
}
extra->num_processes = size;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
- retval =
+
+ retval =
mpi_coll_alltoallv_fun(sendbuf, sendcounts, senddisps, sendtype,
recvbuf, recvcounts, recvdisps, recvtype,
comm);
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
if (win == MPI_WIN_NULL) {
retval = MPI_ERR_WIN;
} else {
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, NULL);
-#endif
retval = smpi_mpi_win_fence(assert, win);
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
(!is_datatype_valid(target_datatype))) {
retval = MPI_ERR_TYPE;
} else {
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
MPI_Group group;
smpi_mpi_win_get_group(win, &group);
int src_traced = smpi_group_index(group, target_rank);
TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, NULL);
-#endif
retval = smpi_mpi_get( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win);
-#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
-#endif
}
smpi_bench_begin();
return retval;
(!is_datatype_valid(target_datatype))) {
retval = MPI_ERR_TYPE;
} else {
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
MPI_Group group;
smpi_mpi_win_get_group(win, &group);
int dst_traced = smpi_group_index(group, target_rank);
TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, NULL);
TRACE_smpi_send(rank, rank, dst_traced, origin_count*smpi_datatype_size(origin_datatype));
-#endif
retval = smpi_mpi_put( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win);
-#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
-#endif
-
}
smpi_bench_begin();
return retval;
} else if (op == MPI_OP_NULL) {
retval = MPI_ERR_OP;
} else {
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
MPI_Group group;
smpi_mpi_win_get_group(win, &group);
int src_traced = smpi_group_index(group, target_rank);
TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, NULL);
-#endif
retval = smpi_mpi_accumulate( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, op, win);
-#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
-#endif
-
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_GROUP;
}
else {
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, NULL);
-#endif
retval = smpi_mpi_win_post(group,assert,win);
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_GROUP;
}
else {
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, NULL);
-#endif
retval = smpi_mpi_win_start(group,assert,win);
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_WIN;
}
else {
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, NULL);
-#endif
+
retval = smpi_mpi_win_complete(win);
-#ifdef HAVE_TRACING
+
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_WIN;
}
else {
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, NULL);
-#endif
+
retval = smpi_mpi_win_wait(win);
-#ifdef HAVE_TRACING
+
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
}
smpi_bench_begin();
return retval;
CHECK_ACTION_PARAMS(action, 1, 0);
double clock = smpi_process_simulated_elapsed();
double flops= parse_double(action[2]);
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type=TRACING_COMPUTING;
extra->comp_size=flops;
TRACE_smpi_computing_in(rank, extra);
-#endif
+
smpi_execute_flops(flops);
-#ifdef HAVE_TRACING
- TRACE_smpi_computing_out(rank);
-#endif
+ TRACE_smpi_computing_out(rank);
log_timed_action (action, clock);
}
MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE;
}
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
int dst_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), to);
extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, NULL);
TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced, size*smpi_datatype_size(MPI_CURRENT_TYPE));
-#endif
smpi_mpi_send(NULL, size, MPI_CURRENT_TYPE, to , 0, MPI_COMM_WORLD);
log_timed_action (action, clock);
- #ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
-#endif
-
}
static void action_Isend(const char *const *action)
if(action[4]) MPI_CURRENT_TYPE=decode_datatype(action[4]);
else MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE;
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
int dst_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), to);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, NULL);
TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced, size*smpi_datatype_size(MPI_CURRENT_TYPE));
-#endif
request = smpi_mpi_isend(NULL, size, MPI_CURRENT_TYPE, to, 0,MPI_COMM_WORLD);
-#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
request->send = 1;
-#endif
xbt_dynar_push(reqq[smpi_process_index()],&request);
if(action[4]) MPI_CURRENT_TYPE=decode_datatype(action[4]);
else MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE;
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
int src_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), from);
extra->dst = rank;
extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, NULL);
TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra);
-#endif
//unknow size from the receiver pov
if(size==-1){
smpi_mpi_recv(NULL, size, MPI_CURRENT_TYPE, from, 0, MPI_COMM_WORLD, &status);
-#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
TRACE_smpi_recv(rank, src_traced, rank);
-#endif
log_timed_action (action, clock);
}
if(action[4]) MPI_CURRENT_TYPE=decode_datatype(action[4]);
else MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE;
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
int src_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), from);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->dst = rank;
extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, NULL);
TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra);
-#endif
MPI_Status status;
//unknow size from the receiver pov
if(size==-1){
request = smpi_mpi_irecv(NULL, size, MPI_CURRENT_TYPE, from, 0, MPI_COMM_WORLD);
-#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
request->recv = 1;
-#endif
xbt_dynar_push(reqq[smpi_process_index()],&request);
log_timed_action (action, clock);
//Different times in traced application and replayed version may lead to this
//In this case, ignore the extra calls.
if(request){
-#ifdef HAVE_TRACING
- int rank = smpi_process_index();
- instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
- extra->type=TRACING_TEST;
- TRACE_smpi_testing_in(rank, extra);
-#endif
+ int rank = smpi_process_index();
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type=TRACING_TEST;
+ TRACE_smpi_testing_in(rank, extra);
- flag = smpi_mpi_test(&request, &status);
+ flag = smpi_mpi_test(&request, &status);
- XBT_DEBUG("MPI_Test result: %d", flag);
- /* push back request in dynar to be caught by a subsequent wait. if the test
- * did succeed, the request is now NULL.
- */
- xbt_dynar_push_as(reqq[smpi_process_index()],MPI_Request, request);
+ XBT_DEBUG("MPI_Test result: %d", flag);
+ /* push back request in dynar to be caught by a subsequent wait. if the test
+ * did succeed, the request is now NULL.
+ */
+ xbt_dynar_push_as(reqq[smpi_process_index()],MPI_Request, request);
-#ifdef HAVE_TRACING
- TRACE_smpi_testing_out(rank);
-#endif
+ TRACE_smpi_testing_out(rank);
}
log_timed_action (action, clock);
}
return;
}
-#ifdef HAVE_TRACING
int rank = request->comm != MPI_COMM_NULL
? smpi_comm_rank(request->comm)
: -1;
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_WAIT;
TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, extra);
-#endif
+
smpi_mpi_wait(&request, &status);
-#ifdef HAVE_TRACING
+
TRACE_smpi_ptp_out(rank, src_traced, dst_traced, __FUNCTION__);
- if (is_wait_for_receive) {
+ if (is_wait_for_receive)
TRACE_smpi_recv(rank, src_traced, dst_traced);
- }
-#endif
-
log_timed_action (action, clock);
}
Thus each rank saves its own requests to the array request. */
xbt_dynar_foreach(reqq[smpi_process_index()],i,requests[i]);
- #ifdef HAVE_TRACING
//save information from requests
xbt_dynar_t srcs = xbt_dynar_new(sizeof(int), NULL);
extra->type = TRACING_WAITALL;
extra->send_size=count_requests;
TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,extra);
- #endif
- smpi_mpi_waitall(count_requests, requests, status);
+ smpi_mpi_waitall(count_requests, requests, status);
- #ifdef HAVE_TRACING
for (i = 0; i < count_requests; i++) {
int src_traced, dst_traced, is_wait_for_receive;
xbt_dynar_get_cpy(srcs, i, &src_traced);
xbt_dynar_free(&srcs);
xbt_dynar_free(&dsts);
xbt_dynar_free(&recvs);
- #endif
int freedrank=smpi_process_index();
xbt_dynar_free_container(&(reqq[freedrank]));
static void action_barrier(const char *const *action){
double clock = smpi_process_simulated_elapsed();
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_BARRIER;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
-#endif
+
mpi_coll_barrier_fun(MPI_COMM_WORLD);
-#ifdef HAVE_TRACING
- TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
+ TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
log_timed_action (action, clock);
}
}
}
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
int root_traced = smpi_group_index(smpi_comm_group(MPI_COMM_WORLD), root);
extra->root = root_traced;
extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, NULL);
TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra);
+ void *sendbuf = smpi_get_tmp_sendbuffer(size* smpi_datatype_size(MPI_CURRENT_TYPE));
-#endif
- void *sendbuf = smpi_get_tmp_sendbuffer(size* smpi_datatype_size(MPI_CURRENT_TYPE));
mpi_coll_bcast_fun(sendbuf, size, MPI_CURRENT_TYPE, root, MPI_COMM_WORLD);
-#ifdef HAVE_TRACING
+
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-#endif
log_timed_action (action, clock);
}
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
int root_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), root);
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->root = root_traced;
TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
-#endif
- void *recvbuf = smpi_get_tmp_sendbuffer(comm_size* smpi_datatype_size(MPI_CURRENT_TYPE));
- void *sendbuf = smpi_get_tmp_sendbuffer(comm_size* smpi_datatype_size(MPI_CURRENT_TYPE));
+
+ void *recvbuf = smpi_get_tmp_sendbuffer(comm_size* smpi_datatype_size(MPI_CURRENT_TYPE));
+ void *sendbuf = smpi_get_tmp_sendbuffer(comm_size* smpi_datatype_size(MPI_CURRENT_TYPE));
mpi_coll_reduce_fun(sendbuf, recvbuf, comm_size, MPI_CURRENT_TYPE, MPI_OP_NULL, root, MPI_COMM_WORLD);
smpi_execute_flops(comp_size);
-#ifdef HAVE_TRACING
+
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-#endif
log_timed_action (action, clock);
}
else MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE;
double clock = smpi_process_simulated_elapsed();
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLREDUCE;
extra->send_size = comm_size;
extra->comp_size = comp_size;
extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE, NULL);
-
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
- void *recvbuf = smpi_get_tmp_sendbuffer(comm_size* smpi_datatype_size(MPI_CURRENT_TYPE));
- void *sendbuf = smpi_get_tmp_sendbuffer(comm_size* smpi_datatype_size(MPI_CURRENT_TYPE));
+
+ void *recvbuf = smpi_get_tmp_sendbuffer(comm_size* smpi_datatype_size(MPI_CURRENT_TYPE));
+ void *sendbuf = smpi_get_tmp_sendbuffer(comm_size* smpi_datatype_size(MPI_CURRENT_TYPE));
mpi_coll_allreduce_fun(sendbuf, recvbuf, comm_size, MPI_CURRENT_TYPE, MPI_OP_NULL, MPI_COMM_WORLD);
smpi_execute_flops(comp_size);
-#ifdef HAVE_TRACING
+
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
log_timed_action (action, clock);
}
void *send = smpi_get_tmp_sendbuffer(send_size*comm_size* smpi_datatype_size(MPI_CURRENT_TYPE));
void *recv = smpi_get_tmp_recvbuffer(recv_size*comm_size* smpi_datatype_size(MPI_CURRENT_TYPE2));
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLTOALL;
extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2, NULL);
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
mpi_coll_alltoall_fun(send, send_size, MPI_CURRENT_TYPE, recv, recv_size, MPI_CURRENT_TYPE2, MPI_COMM_WORLD);
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
log_timed_action (action, clock);
-
}
if(rank==root)
recv = smpi_get_tmp_recvbuffer(recv_size*comm_size* smpi_datatype_size(MPI_CURRENT_TYPE2));
-#ifdef HAVE_TRACING
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_GATHER;
extra->send_size = send_size;
extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2, NULL);
TRACE_smpi_collective_in(smpi_process_index(), root, __FUNCTION__, extra);
-#endif
+
mpi_coll_gather_fun(send, send_size, MPI_CURRENT_TYPE,
recv, recv_size, MPI_CURRENT_TYPE2,
root, MPI_COMM_WORLD);
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(smpi_process_index(), -1, __FUNCTION__);
-#endif
log_timed_action (action, clock);
-
}
if(rank==root)
recv = smpi_get_tmp_recvbuffer(recv_sum* smpi_datatype_size(MPI_CURRENT_TYPE2));
-#ifdef HAVE_TRACING
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_GATHERV;
extra->send_size = send_size;
extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2, NULL);
TRACE_smpi_collective_in(smpi_process_index(), root, __FUNCTION__, extra);
-#endif
-smpi_mpi_gatherv(send, send_size, MPI_CURRENT_TYPE,
+
+ smpi_mpi_gatherv(send, send_size, MPI_CURRENT_TYPE,
recv, recvcounts, disps, MPI_CURRENT_TYPE2,
root, MPI_COMM_WORLD);
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(smpi_process_index(), -1, __FUNCTION__);
-#endif
-
log_timed_action (action, clock);
xbt_free(recvcounts);
xbt_free(disps);
size+=recvcounts[i];
}
-#ifdef HAVE_TRACING
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_REDUCE_SCATTER;
extra->send_size = 0;
extra->num_processes = comm_size;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
+
void *sendbuf = smpi_get_tmp_sendbuffer(size* smpi_datatype_size(MPI_CURRENT_TYPE));
- void *recvbuf = smpi_get_tmp_recvbuffer(size* smpi_datatype_size(MPI_CURRENT_TYPE));
+ void *recvbuf = smpi_get_tmp_recvbuffer(size* smpi_datatype_size(MPI_CURRENT_TYPE));
mpi_coll_reduce_scatter_fun(sendbuf, recvbuf, recvcounts, MPI_CURRENT_TYPE, MPI_OP_NULL,
MPI_COMM_WORLD);
smpi_execute_flops(comp_size);
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
xbt_free(recvcounts);
xbt_free(disps);
log_timed_action (action, clock);
void *sendbuf = smpi_get_tmp_sendbuffer(sendcount* smpi_datatype_size(MPI_CURRENT_TYPE));
void *recvbuf = smpi_get_tmp_recvbuffer(recvcount* smpi_datatype_size(MPI_CURRENT_TYPE2));
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLGATHER;
extra->num_processes = smpi_comm_size(MPI_COMM_WORLD);
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
mpi_coll_allgather_fun(sendbuf, sendcount, MPI_CURRENT_TYPE, recvbuf, recvcount, MPI_CURRENT_TYPE2, MPI_COMM_WORLD);
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
-
log_timed_action (action, clock);
}
}
void *recvbuf = smpi_get_tmp_recvbuffer(recv_sum* smpi_datatype_size(MPI_CURRENT_TYPE2));
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLGATHERV;
extra->num_processes = comm_size;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
mpi_coll_allgatherv_fun(sendbuf, sendcount, MPI_CURRENT_TYPE, recvbuf, recvcounts, disps, MPI_CURRENT_TYPE2, MPI_COMM_WORLD);
-#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
-
log_timed_action (action, clock);
xbt_free(recvcounts);
xbt_free(disps);
}
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLTOALLV;
extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2, NULL);
TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
-#endif
+
mpi_coll_alltoallv_fun(sendbuf, sendcounts, senddisps, MPI_CURRENT_TYPE,
recvbuf, recvcounts, recvdisps, MPI_CURRENT_TYPE,
MPI_COMM_WORLD);
-#ifdef HAVE_TRACING
- TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
+ TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
log_timed_action (action, clock);
xbt_free(sendcounts);
xbt_free(recvcounts);
smpi_process_init(argc, argv);
smpi_process_mark_as_initialized();
smpi_process_set_replaying(1);
-#ifdef HAVE_TRACING
+
int rank = smpi_process_index();
TRACE_smpi_init(rank);
TRACE_smpi_computing_init(rank);
extra->type = TRACING_INIT;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-#endif
if (!smpi_process_index()){
_xbt_replay_action_init();
}
-#ifdef HAVE_TRACING
int rank = smpi_process_index();
instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_FINALIZE;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
-#endif
+
smpi_process_finalize();
-#ifdef HAVE_TRACING
+
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
TRACE_smpi_finalize(smpi_process_index());
-#endif
smpi_process_destroy();
return MPI_SUCCESS;
}
lmm_update_constraint_bound(getModel()->getMaxminSystem(), getConstraint(),
m_core * m_powerScale *
m_powerPeak);
-#ifdef HAVE_TRACING
TRACE_surf_host_set_power(date, getName(),
m_core * m_powerScale *
m_powerPeak);
-#endif
while ((var = lmm_get_var_from_cnst
(getModel()->getMaxminSystem(), getConstraint(), &elem))) {
CpuCas01ActionPtr action = static_cast<CpuCas01ActionPtr>(lmm_variable_id(var));
&& (double_equals(xbt_heap_maxkey(getActionHeap()), now, sg_surf_precision))) {
action = static_cast<CpuActionPtr>(xbt_heap_pop(getActionHeap()));
XBT_CDEBUG(surf_kernel, "Something happened to action %p", action);
-#ifdef HAVE_TRACING
if (TRACE_is_enabled()) {
CpuPtr cpu = static_cast<CpuPtr>(lmm_constraint_id(lmm_get_cnst_from_var(getMaxminSystem(), action->getVariable(), 0)));
TRACE_surf_host_set_utilization(cpu->getName(), action->getCategory(),
action->getLastUpdate(),
now - action->getLastUpdate());
}
-#endif
action->finish();
XBT_CDEBUG(surf_kernel, "Action %p finished", action);
action->setState(SURF_ACTION_DONE);
action->heapRemove(getActionHeap()); //FIXME: strange call since action was already popped
}
-#ifdef HAVE_TRACING
if (TRACE_is_enabled()) {
//defining the last timestamp that we can safely dump to trace file
//without losing the event ascending order (considering all CPU's)
TRACE_last_timestamp_to_dump = smaller;
}
}
-#endif
return;
}
; it != itend ; it=itNext) {
++itNext;
action = static_cast<CpuActionPtr>(&*it);
-#ifdef HAVE_TRACING
if (TRACE_is_enabled()) {
CpuPtr x = (CpuPtr) lmm_constraint_id(lmm_get_cnst_from_var
(getMaxminSystem(), action->getVariable(), 0));
delta);
TRACE_last_timestamp_to_dump = now - delta;
}
-#endif
action->updateRemains(lmm_variable_getvalue(action->getVariable()) * delta);
XBT_CDEBUG(surf_kernel, "Updating action(%p): remains was %f, last_update was: %f", this, m_remains, m_lastUpdate);
double_update(&(m_remains), m_lastValue * delta, sg_maxmin_precision*sg_surf_precision);
-#ifdef HAVE_TRACING
if (TRACE_is_enabled()) {
CpuPtr cpu = static_cast<CpuPtr>(lmm_constraint_id(lmm_get_cnst_from_var(getModel()->getMaxminSystem(), getVariable(), 0)));
TRACE_surf_host_set_utilization(cpu->getName(), getCategory(), m_lastValue, m_lastUpdate, now - m_lastUpdate);
}
-#endif
XBT_CDEBUG(surf_kernel, "Updating action(%p): remains is now %f", this, m_remains);
}
#include "instr/instr_private.h"
-#ifdef HAVE_TRACING
#include "surf/surf_private.h"
#include "xbt/graph.h"
fclose(file);
}
-
-#endif /* HAVE_TRACING */
-
#include "instr/instr_private.h"
#include "surf/surf_private.h"
-#ifdef HAVE_TRACING
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_surf, instr, "Tracing Surf");
void TRACE_surf_alloc(void)
surf_action_set_category(surf_action, category);
}
-#endif /* HAVE_TRACING */
&& (double_equals(xbt_heap_maxkey(p_actionHeap), now, sg_surf_precision))) {
action = (NetworkCm02ActionPtr) xbt_heap_pop(p_actionHeap);
XBT_DEBUG("Something happened to action %p", action);
-#ifdef HAVE_TRACING
if (TRACE_is_enabled()) {
int n = lmm_get_number_of_cnst_from_var(p_maxminSystem, action->getVariable());
int i;
now - action->getLastUpdate());
}
}
-#endif
// if I am wearing a latency hat
if (action->getHat() == LATENCY) {
lmm_update_variable_weight(p_maxminSystem, action->getVariable(),
action->m_weight);
}
- #ifdef HAVE_TRACING
if (TRACE_is_enabled()) {
int n = lmm_get_number_of_cnst_from_var(p_maxminSystem, action->getVariable());
int i;
now - action->getLastUpdate());
}
}
- #endif
if (!lmm_get_number_of_cnst_from_var
(p_maxminSystem, action->getVariable())) {
/* There is actually no link used, hence an infinite bandwidth.
getConstraint(),
sg_bandwidth_factor *
(p_power.peak * p_power.scale));
-#ifdef HAVE_TRACING
TRACE_surf_link_set_bandwidth(date, getName(), sg_bandwidth_factor * p_power.peak * p_power.scale);
-#endif
if (sg_weight_S_parameter > 0) {
while ((var = lmm_get_var_from_cnst_safe(getModel()->getMaxminSystem(), getConstraint(), &elem, &nextelem, &numelem))) {
action = (NetworkCm02ActionPtr) lmm_variable_id(var);
return;
}
-#ifdef HAVE_TRACING
void NetworkConstantAction::setCategory(const char */*category*/)
{
//ignore completely the categories in constant model, they are not traced
}
-#endif
void NetworkConstantAction::suspend()
{
double m_latency;
double m_latCurrent;
-#ifdef HAVE_TRACING
int m_lastRemains;
-#endif
lmm_variable_t p_variable;
double m_rate;
int m_suspended;
-#ifdef HAVE_TRACING
RoutingEdgePtr src;
RoutingEdgePtr dst;
-#endif //HAVE_TRACING
};
#endif /* NETWORK_GTNETS_HPP_ */
ns3_create_flow(src->getName(), dst->getName(), surf_get_clock(), size, action);
-#ifdef HAVE_TRACING
action->m_lastSent = 0;
action->p_srcElm = src;
action->p_dstElm = dst;
-#endif
surf_callback_emit(networkCommunicateCallbacks, action, src, dst, size, rate);
return (surf_action_t) action;
XBT_DEBUG("Processing socket %p (action %p)",data,action);
action->setRemains(action->getCost() - ns3_get_socket_sent(data));
- #ifdef HAVE_TRACING
- if (TRACE_is_enabled() &&
- action->getState() == SURF_ACTION_RUNNING){
- double data_sent = ns3_get_socket_sent(data);
- double data_delta_sent = data_sent - action->m_lastSent;
-
- xbt_dynar_t route = NULL;
-
- routing_get_route_and_latency (action->p_srcElm, action->p_dstElm, &route, NULL);
- unsigned int i;
- for (i = 0; i < xbt_dynar_length (route); i++){
- NetworkNS3LinkPtr link = ((NetworkNS3LinkPtr)xbt_dynar_get_ptr (route, i));
- TRACE_surf_link_set_utilization (link->getName(),
- action->getCategory(),
- (data_delta_sent)/delta,
- now-delta,
- delta);
- }
- action->m_lastSent = data_sent;
- }
- #endif
+ if (TRACE_is_enabled() &&
+ action->getState() == SURF_ACTION_RUNNING){
+ double data_sent = ns3_get_socket_sent(data);
+ double data_delta_sent = data_sent - action->m_lastSent;
+
+ xbt_dynar_t route = NULL;
+
+ routing_get_route_and_latency (action->p_srcElm, action->p_dstElm, &route, NULL);
+ unsigned int i;
+ for (i = 0; i < xbt_dynar_length (route); i++){
+ NetworkNS3LinkPtr link = ((NetworkNS3LinkPtr)xbt_dynar_get_ptr (route, i));
+ TRACE_surf_link_set_utilization (link->getName(),
+ action->getCategory(),
+ (data_delta_sent)/delta,
+ now-delta,
+ delta);
+ }
+ action->m_lastSent = data_sent;
+ }
if(ns3_get_socket_is_finished(data) == 1){
xbt_dynar_push(socket_to_destroy,&key);
void resume();
//private:
-#ifdef HAVE_TRACING
double m_lastSent;
RoutingEdgePtr p_srcElm;
RoutingEdgePtr p_dstElm;
-#endif //HAVE_TRACING
};
p_stateSet->erase(p_stateSet->iterator_to(*this));
if (getVariable())
lmm_variable_free(getModel()->getMaxminSystem(), getVariable());
-#ifdef HAVE_TRACING
xbt_free(getCategory());
-#endif
delete this;
return 1;
}
surf_update_actions_state(model);
}
-#ifdef HAVE_TRACING
TRACE_paje_dump_buffer (0);
-#endif
return surf_min;
}
action->setPriority(priority);
}
-#ifdef HAVE_TRACING
void surf_action_set_category(surf_action_t action, const char *category){
action->setCategory(category);
}
-#endif
void *surf_action_get_data(surf_action_t action){
return action->getData();
if (!history)
history = tmgr_history_new();
-#ifdef HAVE_TRACING
TRACE_add_start_function(TRACE_surf_alloc);
TRACE_add_end_function(TRACE_surf_release);
-#endif
sg_config_init(argc, argv);
unsigned int iter;
ModelPtr model = NULL;
-#ifdef HAVE_TRACING
TRACE_end(); /* Just in case it was not called by the upper
* layer (or there is no upper layer) */
-#endif
sg_config_finalize();
Action::Action(ModelPtr model, double cost, bool failed)
{
initialize(model, cost, failed);
- #ifdef HAVE_TRACING
- p_category = NULL;
- #endif
+ p_category = NULL;
p_stateHookup.prev = 0;
p_stateHookup.next = 0;
if (failed)
Action::Action(ModelPtr model, double cost, bool failed, lmm_variable_t var)
{
initialize(model, cost, failed, var);
- #ifdef HAVE_TRACING
- p_category = NULL;
- #endif
+ p_category = NULL;
p_stateHookup.prev = 0;
p_stateHookup.next = 0;
if (failed)
}
Action::~Action() {
-#ifdef HAVE_TRACING
xbt_free(p_category);
-#endif
}
void Action::finish() {
p_data = data;
}
-#ifdef HAVE_TRACING
void Action::setCategory(const char *category)
{
XBT_IN("(%p,%s)", this, category);
p_category = xbt_strdup(category);
XBT_OUT();
}
-#endif
void Action::ref(){
m_refcount++;
XBT_DEBUG("Updating action(%p): remains was %f, last_update was: %f", this, m_remains, m_lastUpdate);
double_update(&m_remains, m_lastValue * delta, sg_surf_precision*sg_maxmin_precision);
-#ifdef HAVE_TRACING
if (getModel() == surf_cpu_model_pm && TRACE_is_enabled()) {
ResourcePtr cpu = static_cast<ResourcePtr>(lmm_constraint_id(lmm_get_cnst_from_var(getModel()->getMaxminSystem(), getVariable(), 0)));
TRACE_surf_host_set_utilization(cpu->getName(), getCategory(), m_lastValue, m_lastUpdate, now - m_lastUpdate);
}
-#endif
XBT_DEBUG("Updating action(%p): remains is now %f", this, m_remains);
}
*/
virtual void setPriority(double priority);
-#ifdef HAVE_TRACING
/**
* @brief Set the category of the current Action
*
* @param category The new category of the current Action
*/
void setCategory(const char *category);
-#endif
/**
* @brief Get the remaining time of the current action after updating the resource
sg_platf_trace_add_cb(routing_parse_trace);
sg_platf_trace_connect_add_cb(routing_parse_trace_connect);
-#ifdef HAVE_TRACING
instr_routing_define_callbacks();
-#endif
}
/**
static int after_config_done;
void parse_after_config() {
if (!after_config_done) {
- //
- #ifdef HAVE_TRACING
- TRACE_start();
- #endif
+ TRACE_start();
/* Register classical callbacks */
storage_register_callbacks();
routing_register_callbacks();
+ gpu_register_callbacks();
/* ***************************************** */
/* TUTORIAL: New TAG */
- gpu_register_callbacks();
/* ***************************************** */
after_config_done = 1;
}
#endif
/* instr */
-#ifdef HAVE_TRACING
XBT_LOG_CONNECT(instr);
XBT_LOG_CONNECT(instr_api);
XBT_LOG_CONNECT(instr_config);
XBT_LOG_CONNECT(instr_surf);
XBT_LOG_CONNECT(instr_trace);
XBT_LOG_CONNECT(instr_TI_trace);
-#endif
/* jedule */
#ifdef HAVE_JEDULE
int main(int argc, char **argv)
{
XBT_LOG_CONNECT(graphicator);
-#ifdef HAVE_TRACING
MSG_init(&argc, argv);
if (argc < 3){
if (status == 0){
XBT_INFO ("%s expects --cfg=tracing:yes --cfg=tracing/platform:yes", argv[0]);
}
-#else
- XBT_INFO ("works only if simgrid was compiled with tracing enabled.");
-#endif
return 0;
}