* Your commit message should follow the git habits, explained eg here:
http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
+* When you add/remove files, and/or make changes in the lists of files to build,
+ please check that "make distcheck" still succeeds. This is needed to ensure
+ that the generated archive is consistent.
+
* If you want to debug memory allocation problems, here are a few hints:
- disable compiler optimizations, to have better backtraces;
- disable the mallocators, or it will be hard to match malloc's with
set(top_srcdir "${CMAKE_HOME_DIRECTORY}")
set(srcdir "${CMAKE_HOME_DIRECTORY}/src")
+set(bindir "${CMAKE_BINARY_DIR}")
### Script used when simgrid is installed
set(exec_prefix ${CMAKE_INSTALL_PREFIX})
# If left blank the directory from which doxygen is run is used as the
# path to strip.
-STRIP_FROM_PATH = @srcdir@
+STRIP_FROM_PATH = @top_srcdir@
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
index-API.doc \
@top_srcdir@/doc/doxygen/logcategories.doc \
@top_srcdir@/src/instr/ \
+ @bindir@/include \
@top_srcdir@/include/ \
@top_srcdir@/include/msg \
@top_srcdir@/include/xbt \
@top_srcdir@/src/surf/ \
@top_srcdir@/src/msg/ \
@top_srcdir@/src/simdag \
- @top_srcdir@/src/simix
+ @top_srcdir@/src/simix \
+ @bindir@/src
###################################################
By default, Surf computes the analytical models sequentially to share their
resources and update their actions. It is possible to run them in parallel,
using the \b surf/nthreads item (default value: 1). If you use a
-negative value, the amount of available cores is automatically
+negative or null value, the amount of available cores is automatically
detected and used instead.
Depending on the workload of the models and their complexity, you may get a
request to execute the user code in parallel. Several threads are
launched, each of them handling as much user contexts at each run. To
actiave this, set the \b contexts/nthreads item to the amount of
-cores that you have in your computer (or -1 to have the amount of cores
-auto-detected).
+cores that you have in your computer (or lower than 1 to have
+the amount of cores auto-detected).
Even if you asked several worker threads using the previous option,
you can request to start the parallel execution (and pay the
#define OPT_TRACING_COMMENT_FILE "tracing/comment_file"
#define OPT_VIVA_UNCAT_CONF "viva/uncategorized"
#define OPT_VIVA_CAT_CONF "viva/categorized"
+#define OPT_TRACING_DISABLE_LINK "tracing/disable_link"
+#define OPT_TRACING_DISABLE_POWER "tracing/disable_power"
static int trace_enabled;
static int trace_platform;
static int trace_onelink_only;
static int trace_disable_destroy;
static int trace_basic;
+static int trace_disable_link;
+static int trace_disable_power;
static int trace_configured = 0;
static int trace_active = 0;
trace_onelink_only = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_ONELINK_ONLY);
trace_disable_destroy = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY);
trace_basic = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_BASIC);
+ trace_disable_link = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISABLE_LINK);
+ trace_disable_power = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISABLE_POWER);
}
static xbt_dynar_t TRACE_start_functions = NULL;
return trace_msg_vm_enabled && TRACE_is_enabled();
}
+int TRACE_disable_link(void)
+{
+ return trace_disable_link && TRACE_is_enabled();
+}
+
+int TRACE_disable_power(void)
+{
+ return trace_disable_power && TRACE_is_enabled();
+}
int TRACE_buffer (void)
{
xbt_cfgelm_int, &default_tracing_msg_vm, 0, 1,
NULL, NULL);
+ /* disable tracing link */
+ int default_tracing_disable_link = 0;
+ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISABLE_LINK,
+ "Do not trace link bandwidth and latency.",
+ xbt_cfgelm_int, &default_tracing_disable_link, 0, 1,
+ NULL, NULL);
+
+ /* disable tracing link */
+ int default_tracing_disable_power = 0;
+ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISABLE_POWER,
+ "Do not trace host power.",
+ xbt_cfgelm_int, &default_tracing_disable_power, 0, 1,
+ NULL, NULL);
+
+
/* tracing buffer */
int default_buffer = 1;
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_BUFFER,
int TRACE_msg_process_is_enabled(void);
int TRACE_msg_vm_is_enabled(void);
int TRACE_buffer (void);
+int TRACE_disable_link(void);
+int TRACE_disable_power(void);
int TRACE_onelink_only (void);
int TRACE_disable_destroy (void);
int TRACE_basic (void);
block_size = extent * send_count;
- is_2dmesh(num_procs, &X, &Y);
+ if (!is_2dmesh(num_procs, &X, &Y))
+ return MPI_ERR_COMM;
+
my_row_base = (rank / Y) * Y;
my_col_base = rank % Y;
num_procs = smpi_comm_size(comm);
for (i = 0; i < num_procs; i++) {
current = recv_disps[i] + recv_counts[i];
- if (current > max) max = current;
+ if (current > max)
+ max = current;
}
- mpi_coll_bcast_fun(recv_buff, current, recv_type, 0, comm);
+ mpi_coll_bcast_fun(recv_buff, max, recv_type, 0, comm);
return MPI_SUCCESS;
}
exit 1
fi
-if [ -z "${HOSTFILE}" ] ; then
- echo "No hostfile specified."
+if [ -z "${HOSTFILE}" ] && [ -z "${PLATFORM}" ] ; then
+ echo "No hostfile nor platform specified."
usage
exit 1
fi
+if [ -z "${HOSTFILE}" ] ; then
+ HOSTFILETMP=1
+ HOSTFILE="$(mktemp tmphostXXXXXX)"
+ perl -ne 'print "$1\n" if /.*<host.*?id="(.*?)".*?\/>.*/' ${PLATFORM} > ${HOSTFILE}
+fi
+
# Don't use wc -l to compute it to avoid issues with trailing \n at EOF
hostfile_procs=`grep -c "[a-zA-Z0-9]" $HOSTFILE`
export SMPI_GLOBAL_SIZE=${NUMPROCS}
if [ -n "${KEEP}" ] ; then
echo ${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PLATFORMTMP} ${APPLICATIONTMP}
+ if [ ${HOSTFILETMP} == 1 ] ; then
+ echo "Generated hostfile ${HOSTFILE} keeped."
+ fi
fi
${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PLATFORMTMP} ${APPLICATIONTMP}
status=$?
if [ -z "${PLATFORM}" ]; then
rm ${PLATFORMTMP}
fi
+ if [ ${HOSTFILETMP} == 1 ] ; then
+ rm ${HOSTFILE}
+ fi
rm ${APPLICATIONTMP}
fi
container_t new = PJ_container_new (link_name, INSTR_LINK, father);
- if (TRACE_categorized() || TRACE_uncategorized() || TRACE_platform()){
+ if ((TRACE_categorized() || TRACE_uncategorized() || TRACE_platform()) && (! TRACE_disable_link())) {
type_t bandwidth = PJ_type_get_or_null ("bandwidth", new->type);
if (bandwidth == NULL){
bandwidth = PJ_type_variable_new ("bandwidth", NULL, new->type);
container_t father = *(container_t*)xbt_dynar_get_ptr(currentContainer, xbt_dynar_length(currentContainer)-1);
container_t new = PJ_container_new (host->id, INSTR_HOST, father);
- if (TRACE_categorized() || TRACE_uncategorized() || TRACE_platform()) {
+ if ((TRACE_categorized() || TRACE_uncategorized() || TRACE_platform()) && (! TRACE_disable_power())) {
type_t power = PJ_type_get_or_null ("power", new->type);
if (power == NULL){
power = PJ_type_variable_new ("power", NULL, new->type);
echo "The archive looks good."
else
status=1
- echo "Some files are missing and/or unexpected in the archive."
+ cat <<EOF
+ERROR: Some files are missing and/or unexpected in the archive.
+* lines beginning with '-' give files that are unexpected in the archive
+* lines beginning with '+' give files that are missing from the archive
+Please fix CMake files (e.g. "buildtools/Cmake/DefinePackages.cmake"),
+and/or "tools/check_dist_archive.exclude".
+EOF
diff -u "$fa" "$fb"
fi
}
+ src/simix/simix_network\.tla
+ src/smpi/BUGS
-+ src/smpi/colls/allgather-2dmesh\.c
-+ src/smpi/colls/allgather-3dmesh\.c
-+ src/smpi/colls/allgather-bruck\.c
-+ src/smpi/colls/allreduce-rab-rdb\.c
+ src/smpi/colls/allreduce-rab-reduce-scatter\.c
-+ src/smpi/colls/allreduce-smp-binomial-pipeline\.c
+ src/smpi/colls/alltoall-bruck\.c
+ src/smpi/fixsrc\.pl
+ src/smpi/myprintloc\.cocci