瀏覽代碼

Merge branch 'master' into starpurm

Olivier Aumage 6 年之前
父節點
當前提交
98afa3e519

+ 3 - 0
ChangeLog

@@ -107,6 +107,9 @@ Small features:
   * Add memory states events in the traces.
   * Add starpu_sched_component_estimated_end_min_add() to fix termination
     estimations in modular schedulers.
+  * New function starpu_data_partition_not_automatic() to disable the
+    automatic partitioning of a data handle for which a asynchronous
+    plan has previously been submitted
 
 Changes:
   * Vastly improve simgrid simulation time.

+ 7 - 7
Makefile.am

@@ -2,7 +2,7 @@
 #
 # Copyright (C) 2011-2017                                Inria
 # Copyright (C) 2009-2017                                Université de Bordeaux
-# Copyright (C) 2010-2017                                CNRS
+# Copyright (C) 2010-2018                                CNRS
 #
 # StarPU is free software; you can redistribute it and/or modify
 # it under the terms of the GNU Lesser General Public License as published by
@@ -126,17 +126,17 @@ else
 all-local:
 endif
 if STARPU_DEVEL
-	@if grep -r sys/time.h $$( find $(srcdir)/examples $(srcdir)/tests $(srcdir)/src $(srcdir)/mpi/src $(srcdir)/include -name \*.[ch] -a \! -name starpu_util.h -a \! -name timer.h -a \! -name loader.c ) ; \
+	@if $(GREP) -r sys/time.h $$( find $(srcdir)/examples $(srcdir)/tests $(srcdir)/src $(srcdir)/mpi/src $(srcdir)/include -name \*.[ch] -a \! -name starpu_util.h -a \! -name timer.h -a \! -name loader.c ) ; \
 	then \
 		echo "Please do not include sys/time, it is not available on Windows, include starpu_util.h and use starpu_timing_now() instead" ; \
 		false ; \
 	fi
-	@if grep -re '\<ssize_t' $$( find $(srcdir)/examples $(srcdir)/tests $(srcdir)/src $(srcdir)/mpi/src $(srcdir)/include -name \*.[ch] -a \! -name starpu_config.h ) ; \
+	@if $(GREP) -re '\<ssize_t' $$( find $(srcdir)/examples $(srcdir)/tests $(srcdir)/src $(srcdir)/mpi/src $(srcdir)/include -name \*.[ch] -a \! -name starpu_config.h ) ; \
 	then \
 		echo "Please do not use ssize_t, it is not available on Windows, use starpu_ssize_t instead"; \
 		false ; \
 	fi
-	@if grep -re '\<getenv\>' $$( find $(srcdir)/src $(srcdir)/mpi/src $(srcdir)/include -name \*.[ch] -a \! -name starpu_util.h -a \! -name utils.c -a \! -name simgrid.h) ; \
+	@if $(GREP) -re '\<getenv\>' $$( find $(srcdir)/src $(srcdir)/mpi/src $(srcdir)/include -name \*.[ch] -a \! -name starpu_util.h -a \! -name utils.c -a \! -name simgrid.h) ; \
 	then \
 		echo "Please do not use getenv, use starpu_getenv instead, which catches unsafe uses"; \
 		false ; \
@@ -144,8 +144,8 @@ if STARPU_DEVEL
 # we count the number of files which include unistd.h
 # we count the number of files which properly include unistd.h i.e by first detecting if it's available
 # and then we check both numbers are the same ...a
-	@UNISTD_ALL_LINES=$(shell grep -B1 -rs "^#include <unistd.h>" $(srcdir)/src/ $(srcdir)/include/ $(srcdir)/mpi/src $(srcdir)/mpi/include  |grep -v dolib|grep -v -e "--" | tr '\012' '@' | sed 's/unistd.h>@/unistd.h>\n/g' | wc -l) ;\
-	UNISTD_CORRECT_LINES=$(shell grep -B1 -rs "^#include <unistd.h>" $(srcdir)/src/ $(srcdir)/include/ $(srcdir)/mpi/src $(srcdir)/mpi/include  |grep -v dolib|grep -v -e "--" | tr '\012' '@' | sed 's/unistd.h>@/unistd.h>\n/g' | grep '#ifdef .*HAVE_UNISTD_H.*:#include <unistd.h>' | wc -l) ;\
+	@UNISTD_ALL_LINES=$(shell $(GREP) -B1 -rs "^#include <unistd.h>" $(srcdir)/src/ $(srcdir)/include/ $(srcdir)/mpi/src $(srcdir)/mpi/include  |$(GREP) -v dolib|$(GREP) -v -e "--" | tr '\012' '@' | $(SED) 's/unistd.h>@/unistd.h>\n/g' | wc -l) ;\
+	UNISTD_CORRECT_LINES=$(shell $(GREP) -B1 -rs "^#include <unistd.h>" $(srcdir)/src/ $(srcdir)/include/ $(srcdir)/mpi/src $(srcdir)/mpi/include  |$(GREP) -v dolib|$(GREP) -v -e "--" | tr '\012' '@' | $(SED) 's/unistd.h>@/unistd.h>\n/g' | $(GREP) '#ifdef .*HAVE_UNISTD_H.*:#include <unistd.h>' | wc -l) ;\
 	if test $$UNISTD_ALL_LINES -ne $$UNISTD_CORRECT_LINES ; \
 	then \
 		echo "Please do not unconditionally include unistd.h, it is not available on Windows, include config.h and test for HAVE_UNISTD_H" ; \
@@ -205,7 +205,7 @@ showcheck:
 
 ctags-local:
 	cd $(top_srcdir) ; $(CTAGS) -R -I LIST_TYPE
-	sed -i $(top_srcdir)/tags -e '/^[^	]* [^	]*	/d' -e '/^[^	]*$$/d' 
+	$(SED) -i $(top_srcdir)/tags -e '/^[^	]* [^	]*	/d' -e '/^[^	]*$$/d' 
 
 
 # Cyclomatic complexity reports.

+ 17 - 28
configure.ac

@@ -84,6 +84,8 @@ AC_PROG_F77
 AC_PROG_FC
 AC_PROG_GREP
 AC_PROG_EGREP
+AC_PROG_INSTALL
+AC_PROG_MKDIR_P
 AC_CHECK_PROGS(PROG_STAT,gstat stat)
 AC_CHECK_PROGS(PROG_DATE,gdate date)
 AC_OPENMP
@@ -246,10 +248,10 @@ if test x$enable_blocking = xno ; then
 fi
 
 if test x$enable_blocking = xyes ; then
-AC_MSG_CHECKING(whether worker callbacks should be enabled)
-AC_ARG_ENABLE(worker-callbacks, [AS_HELP_STRING([--enable-worker-callbacks], [enable worker callbacks])],
+	AC_MSG_CHECKING(whether worker callbacks should be enabled)
+	AC_ARG_ENABLE(worker-callbacks, [AS_HELP_STRING([--enable-worker-callbacks], [enable worker callbacks])],
 				enable_worker_cb=$enableval, enable_worker_cb=no)
-AC_MSG_RESULT($enable_worker_cb)
+	AC_MSG_RESULT($enable_worker_cb)
 else
 	# worker sleep/wake-up callbacks only make sense if blocking drivers are enabled
 	enable_worker_cb=no
@@ -394,7 +396,7 @@ AC_SUBST(CC_OR_MPICC, $cc_or_mpicc)
 AC_ARG_ENABLE(mpi-pedantic-isend, [AS_HELP_STRING([--enable-mpi-pedantic-isend],
 				   [Enable StarPU MPI pedantic isend])],
 				   enable_mpi_pedantic_isend=$enableval, enable_mpi_pedantic_isend=no)
-if  test x$enable_mpi_pedantic_isend = xyes; then
+if test x$enable_mpi_pedantic_isend = xyes; then
 	AC_DEFINE(STARPU_MPI_PEDANTIC_ISEND, [1], [enable StarPU MPI pedantic isend])
 fi
 
@@ -502,10 +504,6 @@ fi
 LT_PREREQ([2.2])
 LT_INIT([win32-dll])
 
-AC_PROG_INSTALL
-AC_PROG_MKDIR_P
-AC_PROG_LN_S
-
 AC_HEADER_STDC
 
 AC_C_RESTRICT
@@ -561,8 +559,7 @@ if test x$enable_simgrid = xno ; then
         ],
         [
             # nothing was specified: look in the path
-	    if test x$mpicc_path = x
-	    then
+	    if test x$mpicc_path = x ; then
 		AC_PATH_PROG(mpiexec_path, mpiexec, [no], [$PATH])
 	    else
 		AC_PATH_PROG(mpiexec_path, mpiexec, [no], [$(dirname $mpicc_path):$PATH])
@@ -575,8 +572,7 @@ if test x$enable_simgrid = xno ; then
     # We test if MPIEXEC exists
     if test ! -x $mpiexec_path; then
         # if it's not valid, it could be the parameter given to configure.ac was not a full path, let's look for it
-	if test x$mpicc_path = x
-	then
+	if test x$mpicc_path = x ; then
             AC_PATH_PROG(mpiexec_path_bis, $mpiexec_path, [no], [$PATH])
 	else
             AC_PATH_PROG(mpiexec_path_bis, $mpiexec_path, [no], [$(dirname $mpicc_path):$PATH])
@@ -752,8 +748,7 @@ case "$target" in
     				   enable_native_winthreads=$enableval, enable_native_winthreads=no)
     ;;
 esac
-if test x"$enable_native_winthreads" != xyes
-then
+if test x"$enable_native_winthreads" != xyes ; then
     INCLUDE_PTHREAD_H='#include <pthread.h>'
 fi
 
@@ -771,8 +766,7 @@ AC_CHECK_TYPE([struct timespec],
 $INCLUDE_PTHREAD_H
 ])
 
-if test x"$enable_native_winthreads" = xyes
-then
+if test x"$enable_native_winthreads" = xyes ; then
     CPPFLAGS+=" -I$STARPU_SRC_DIR/include/pthread_win32 "
     AC_COMPILE_IFELSE(
           [AC_LANG_PROGRAM([[
@@ -900,8 +894,7 @@ AC_CHECK_FUNCS([pread pwrite])
 AC_ARG_ENABLE(hdf5, [AS_HELP_STRING([--disable-hdf5], [disable HDF5 support])],
                     enable_hdf5=$enableval, enable_hdf5=maybe)
 
-if test "x$enable_hdf5" != xno
-then
+if test "x$enable_hdf5" != xno ; then
 	AC_ARG_WITH(hdf5-include-dir,
 		[AS_HELP_STRING([--with-hdf5-include-dir=<path>],
 		[specify where HDF5 headers are installed])],
@@ -2274,8 +2267,7 @@ if test x$maxnodes = x0 ; then
 	if test x$enable_simgrid = xyes ; then
 		# We need the room for the virtual CUDA/OpenCL devices
 		nodes=`expr 4 + $nmaxcudadev + $nmaxopencldev + $nmaxmicdev + 1 + $nmaxmpidev`
-		if test $nodes -gt 32
-		then
+		if test $nodes -gt 32 ; then
 			nodes=32
 		fi
 	else
@@ -3029,8 +3021,7 @@ fi
 
 if test x$blas_lib = xmaybe -o x$blas_lib = xmkl; then
     # Should we use MKL ?
-    if test -n "$MKLROOT"
-    then
+    if test -n "$MKLROOT" ; then
         CPPFLAGS="${CPPFLAGS} -I$MKLROOT/include"
 	case $host_vendor in
 	    *1om) mkl_plat=mic ;;
@@ -3478,8 +3469,7 @@ if test "$enable_build_doc" = "yes" ; then
    fi
 fi
 available_doc="no"
-if test -f "$srcdir/doc/doxygen/starpu.pdf"
-then
+if test -f "$srcdir/doc/doxygen/starpu.pdf" ; then
    enable_build_doc="no"
    available_doc="yes"
 fi
@@ -3552,6 +3542,7 @@ AC_CONFIG_COMMANDS([executable-scripts], [
   test -e examples/heat/heat.sh || ln -sf $ac_abs_top_srcdir/examples/heat/heat.sh examples/heat/
   mkdir -p examples/lu
   test -e examples/lu/lu.sh || ln -sf $ac_abs_top_srcdir/examples/lu/lu.sh examples/lu/
+  test -e examples/cholesky/cholesky.sh || ln -sf $ac_abs_top_srcdir/examples/cholesky/cholesky.sh examples/cholesky/
   test -e tools/starpu_paje_draw_histogram.R || ln -sf $ac_abs_top_srcdir/tools/starpu_paje_draw_histogram.R tools/starpu_paje_draw_histogram.R
   test -e tools/starpu_paje_state_stats.R || ln -sf $ac_abs_top_srcdir/tools/starpu_paje_state_stats.R tools/starpu_paje_state_stats.R
   test -e tools/starpu_trace_state_stats.py || ln -sf $ac_abs_top_srcdir/tools/starpu_trace_state_stats.py tools/starpu_trace_state_stats.py
@@ -3712,16 +3703,14 @@ To run the tests, you need to install the OCL implementation of ICD
 and set the variable SOCL_OCL_LIB_OPENCL to the location of the libOpenCL.so.])
 fi
 
-if test x"$have_valid_hwloc" = xno -a "$enable_simgrid" = "no"
-then
+if test x"$have_valid_hwloc" = xno -a "$enable_simgrid" = "no" ; then
   AC_MSG_NOTICE([
 WARNING: hwloc was not enabled.  If the target machine is hyperthreaded the
 performance may be impacted a lot.  It is strongly recommended to install
 hwloc])
 fi
 
-if test x"$starpu_windows" = xyes -a "x$STARPU_MS_LIB" = "x"
-then
+if test x"$starpu_windows" = xyes -a "x$STARPU_MS_LIB" = "x" ; then
   AC_MSG_NOTICE([
 WARNING: lib was not found, you will not be able to build StarPU applications
 with Microsoft Visual Studio. Add to your PATH the directories for MSVC, e.g

+ 5 - 5
doc/doxygen/chapters/api/data_interfaces.doxy

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2010-2017                                CNRS
+ * Copyright (C) 2010-2018                                CNRS
  * Copyright (C) 2011-2014,2017                           Inria
  * Copyright (C) 2009-2011,2014-2018                      Université de Bordeaux
  *
@@ -50,8 +50,8 @@ Per-interface data transfer methods.
 \var void *(*starpu_data_interface_ops::to_pointer)(void *data_interface, unsigned node)
     Return the current pointer (if any) for the given interface on the given node.
 
-\var int (*starpu_data_interface_ops::pointer_is_inside)(void *data_interface, unsigned node, void *pointer)
-    Return whether the given \p pointer is within the data for the given interface on the given node.
+\var int (*starpu_data_interface_ops::pointer_is_inside)(void *data_interface, unsigned node, void *ptr)
+    Return whether the given \p ptr is within the data for the given interface on the given node.
 
 \var size_t (*starpu_data_interface_ops::get_size)(starpu_data_handle_t handle)
     Return an estimation of the size of data, for performance models.
@@ -532,9 +532,9 @@ Return the pointer associated with \p handle on node \p node or <c>NULL</c>
 if handle’s interface does not support this operation or data for this
 \p handle is not allocated on that \p node.
 
-\fn int starpu_data_pointer_is_inside(starpu_data_handle_t handle, unsigned node, void *pointer)
+\fn int starpu_data_pointer_is_inside(starpu_data_handle_t handle, unsigned node, void *ptr)
 \ingroup API_Data_Interfaces
-Return whether the given \p pointer is within the data for \p handle on node \p
+Return whether the given \p ptr is within the data for \p handle on node \p
 node (1) or not (0). If the handle interface does not support this operation,
 and thus the result is unknown, -1 is returned.
 

+ 2 - 2
doc/doxygen/chapters/api/data_management.doxy

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2010-2017                                CNRS
+ * Copyright (C) 2010-2018                                CNRS
  * Copyright (C) 2011-2012,2017                           Inria
  * Copyright (C) 2009-2011,2014-2017                      Université de Bordeaux
  *
@@ -374,7 +374,7 @@ memory.
 ::STARPU_ACQUIRE_NO_NODE and ::STARPU_ACQUIRE_NO_NODE_LOCK_ALL can be used instead of an
 explicit node number.
 
-\fn int starpu_data_acquire_on_node_cb_sequential_consistency_sync_jobids(starpu_data_handle_t handle, int node, enum starpu_data_access_mode mode, void (*callback)(void *), void *arg, int sequential_consistency, long *pre_sync_jobid, long *post_sync_jobid)
+\fn int starpu_data_acquire_on_node_cb_sequential_consistency_sync_jobids(starpu_data_handle_t handle, int node, enum starpu_data_access_mode mode, void (*callback)(void *), void *arg, int sequential_consistency, int quick, long *pre_sync_jobid, long *post_sync_jobid)
 \ingroup API_Data_Management
 This is the same as starpu_data_acquire_on_node_cb_sequential_consistency(),
 except that the \e pre_sync_jobid and \e post_sync_jobid parameters can be used

+ 4 - 0
doc/doxygen/chapters/api/data_partition.doxy

@@ -196,6 +196,10 @@ Similar to starpu_data_partition_submit() but also allows to
 specify the coherency to be used for the main data \p initial_handle
 through the parameter \p sequential_consistency.
 
+\fn void starpu_data_partition_not_automatic(starpu_data_handle_t handle)
+\ingroup API_Data_Partition
+Disable the automatic partitioning of the data \p handle for which a asynchronous plan has previously been submitted
+
 \fn void starpu_data_unpartition_submit(starpu_data_handle_t initial_handle, unsigned nparts, starpu_data_handle_t *children, int gathering_node)
 \ingroup API_Data_Partition
 This assumes that \p initial_handle is partitioned into \p children, and submits

+ 3 - 3
doc/doxygen/chapters/api/initialization.doxy

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2010-2017                                CNRS
+ * Copyright (C) 2010-2018                                CNRS
  * Copyright (C) 2011-2012,2014,2017                      Inria
  * Copyright (C) 2009-2011,2014,2018                      Université de Bordeaux
  *
@@ -281,7 +281,7 @@ the argument was <c>NULL</c>.
 \ingroup API_Initialization_and_Termination
 Return 1 if StarPU is already initialized.
 
-\fn int starpu_wait_initialized(void)
+\fn void starpu_wait_initialized(void)
 \ingroup API_Initialization_and_Termination
 Wait for starpu_init() call to finish.
 
@@ -297,7 +297,7 @@ This flag should be passed to starpu_get_next_bindid() and
 starpu_bind_thread_on() when binding a thread which will significantly eat CPU
 time, and should thus have its own dedicated CPU.
 
-\fn int starpu_get_next_bindid(unsigned flags, unsigned *preferred, unsigned npreferred)
+\fn unsigned starpu_get_next_bindid(unsigned flags, unsigned *preferred, unsigned npreferred)
 \ingroup API_Initialization_and_Termination
 This returns a PU binding ID which can be used to bind threads with
 starpu_bind_thread_on(). \p flags can be set to STARPU_THREAD_ACTIVE or 0.

+ 1 - 1
doc/doxygen/chapters/api/insert_task.doxy

@@ -213,7 +213,7 @@ data, then starpu_codelet_pack_arg_fini().
 Initialize struct starpu_codelet_pack_arg before calling starpu_codelet_pack_arg() and
 starpu_codelet_pack_arg_fini(). This will simply initialize the content of the structure.
 
-\fn void starpu_codelet_pack_arg(struct starpu_codelet_pack_arg_data *state, void *ptr, size_t ptr_size)
+\fn void starpu_codelet_pack_arg(struct starpu_codelet_pack_arg_data *state, const void *ptr, size_t ptr_size)
 \ingroup API_Insert_Task
 Pack one argument into struct starpu_codelet_pack_arg \p state. That structure
 has to be initialized before with starpu_codelet_pack_arg_init(), and after all

+ 2 - 2
doc/doxygen/chapters/api/modularized_scheduler.doxy

@@ -1,7 +1,7 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
  * Copyright (C) 2013-2014                                Inria
- * Copyright (C) 2014-2017                                CNRS
+ * Copyright (C) 2014-2018                                CNRS
  * Copyright (C) 2009-2011,2014-2015,2017-2018                 Université de Bordeaux
  * Copyright (C) 2013                                     Simon Archipoff
  *
@@ -251,7 +251,7 @@ The actual scheduler
 @name Flow-control Fifo Component API
 \ingroup API_Modularized_Scheduler
 
-\fn int starpu_sched_component_can_push(struct starpu_sched_component * component)
+\fn int starpu_sched_component_can_push(struct starpu_sched_component * component, struct starpu_sched_component * to)
 \ingroup API_Modularized_Scheduler
 default function for the can_push component method, just calls can_push of parents until one of them returns non-zero
 

+ 1 - 8
doc/doxygen/chapters/api/scheduling_policy.doxy

@@ -1,7 +1,7 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
  * Copyright (C) 2011-2013                                Inria
- * Copyright (C) 2010-2017                                CNRS
+ * Copyright (C) 2010-2018                                CNRS
  * Copyright (C) 2009-2011,2014-2018                      Université de Bordeaux
  *
  * StarPU is free software; you can redistribute it and/or modify
@@ -296,11 +296,4 @@ started and we know how long it will take.
 The scheduling policies indicates if the worker may pop tasks from the list of other workers
 or if there is a central list with task for all the workers
 
-\fn void starpu_sched_break(struct starpu_task *task)
-\ingroup API_Scheduling_Policy
-This should be called just after a scheduling decision for task \p task was
-made. It will raise SIGTRAP if the ::STARPU_TASK_BREAK_ON_SCHED environment
-variable was used, which thus breakpoints inside a debugger, thus allowing to
-inspect why that scheduling decision was made.
-
 */

+ 12 - 6
doc/doxygen/refman.tex

@@ -1,7 +1,7 @@
 % StarPU --- Runtime system for heterogeneous multicore architectures.
 %
 % Copyright (C) 2013,2015-2016,2018                      Inria
-% Copyright (C) 2013-2017                                CNRS
+% Copyright (C) 2013-2018                                CNRS
 % Copyright (C) 2014,2018                                Université de Bordeaux
 %
 % StarPU is free software; you can redistribute it and/or modify
@@ -116,7 +116,7 @@ Documentation License”.
 \hypertarget{SchedulingContextHypervisor}{}
 \input{SchedulingContextHypervisor}
 
-\chapter{Modularized Scheduler}
+\chapter{Modularized Schedulers}
 \label{ModularizedScheduler}
 \hypertarget{ModularizedScheduler}{}
 \input{ModularizedScheduler}
@@ -158,7 +158,7 @@ Documentation License”.
 \hypertarget{FFTSupport}{}
 \input{FFTSupport}
 
-\chapter{MIC/SCC Support}
+\chapter{MIC Xeon Phi / SCC Support}
 \label{MICSCCSupport}
 \hypertarget{MICSCCSupport}{}
 \input{MICSCCSupport}
@@ -183,7 +183,7 @@ Documentation License”.
 \hypertarget{SimGridSupport}{}
 \input{SimGridSupport}
 
-\chapter{OpenMP Runtime Support}
+\chapter{The StarPU OpenMP Runtime Support (SORS)}
 \label{OpenMPRuntimeSupport}
 \hypertarget{OpenMPRuntimeSupport}{}
 \input{OpenMPRuntimeSupport}
@@ -213,6 +213,9 @@ Documentation License”.
 \chapter{Module Index}
 \input{modules}
 
+\chapter{Deprecated List}
+\input{deprecated}
+
 \chapter{Module Documentation a.k.a StarPU's API}
 \label{ModuleDocumentation}
 \hypertarget{ModuleDocumentation}{}
@@ -284,15 +287,19 @@ Documentation License”.
 \input{starpu__fxt_8h}
 \input{starpu__hash_8h}
 \input{starpu__mic_8h}
+\input{starpu__mod_8f90}
+\input{starpu__mpi_8h}
 \input{starpu__opencl_8h}
 \input{starpu__openmp_8h}
 \input{starpu__perfmodel_8h}
 \input{starpu__profiling_8h}
 \input{starpu__rand_8h}
 \input{starpu__scc_8h}
+\input{starpu__sched__component_8h}
 \input{starpu__sched__ctx_8h}
 \input{starpu__sched__ctx__hypervisor_8h}
 \input{starpu__scheduler_8h}
+\input{starpu__simgrid__wrap_8h}
 \input{starpu__sink_8h}
 \input{starpu__stdlib_8h}
 \input{starpu__task_8h}
@@ -305,7 +312,6 @@ Documentation License”.
 \input{starpu__tree_8h}
 \input{starpu__util_8h}
 \input{starpu__worker_8h}
-\input{starpu__mpi_8h}
 \input{starpufft_8h}
 \input{sc__hypervisor_8h}
 \input{sc__hypervisor__config_8h}
@@ -326,7 +332,7 @@ Documentation License”.
 \hypertarget{FullSourceCodeVectorScal}{}
 \input{FullSourceCodeVectorScal}
 
-\chapter{GNU Free Documentation License}
+\chapter{The GNU Free Documentation License}
 \label{GNUFreeDocumentationLicense}
 \hypertarget{GNUFreeDocumentationLicense}{}
 \input{GNUFreeDocumentationLicense}

+ 8 - 0
examples/Makefile.am

@@ -80,6 +80,7 @@ EXTRA_DIST = 					\
 	sched_ctx/axpy_partition_gpu.h			\
 	sched_ctx/axpy_partition_gpu.cu			\
 	heat/heat.sh					\
+	cholesky/cholesky.sh				\
 	lu/lu.sh
 
 
@@ -229,6 +230,7 @@ STARPU_EXAMPLES +=				\
 	filters/fmultiple_submit_readonly	\
 	filters/fmultiple_submit_implicit	\
 	filters/frecursive			\
+	filters/fplan_notautomatic		\
 	tag_example/tag_example			\
 	tag_example/tag_example2		\
 	tag_example/tag_example3		\
@@ -315,6 +317,12 @@ TESTS += \
 	lu/lu.sh
 
 endif
+
+endif
+
+if STARPU_SIMGRID
+TESTS += \
+	 cholesky/cholesky.sh
 endif
 endif
 

+ 63 - 0
examples/cholesky/cholesky.sh

@@ -0,0 +1,63 @@
+#!/bin/bash
+# StarPU --- Runtime system for heterogeneous multicore architectures.
+#
+# Copyright (C) 2018                 Université de Bordeaux
+#
+# StarPU is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or (at
+# your option) any later version.
+#
+# StarPU is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# See the GNU Lesser General Public License in COPYING.LGPL for more details.
+#
+
+ROOT=${0%.sh}
+#[ -n "$STARPU_SCHEDS" ] || STARPU_SCHEDS=`$(dirname $0)/../../tools/starpu_sched_display`
+[ -n "$STARPU_SCHEDS" ] || STARPU_SCHEDS="dmdas modular-heft modular-heft-prio dmdar dmda dmdasd prio lws"
+[ -n "$STARPU_HOSTNAME" ] || export STARPU_HOSTNAME=mirage
+unset MALLOC_PERTURB_
+
+(
+echo -n "#"
+for STARPU_SCHED in $STARPU_SCHEDS ; do
+	echo -n "	$STARPU_SCHED"
+done
+echo
+
+for size in `seq 2 2 30` ; do
+	echo -n "$((size * 960))"
+	for STARPU_SCHED in $STARPU_SCHEDS
+	do
+		export STARPU_SCHED
+		GFLOPS=`${ROOT}_implicit -size $((size * 960)) -nblocks $size 2> /dev/null | grep -v GFlops | cut -d '	' -f 3`
+		[ -n "$GFLOPS" ] || GFLOPS='""'
+		echo -n "	$GFLOPS"
+	done
+	echo 
+done
+) | tee cholesky.output
+
+[ -n "$TERMINAL" ] || TERMINAL=eps
+[ -n "$OUTFILE" ] || OUTFILE=cholesky.eps
+cat > cholesky.gp << EOF
+set terminal $TERMINAL
+set output "$OUTFILE"
+set key top left
+set xlabel "size"
+set ylabel "GFlops"
+plot \\
+EOF
+
+N=2
+for STARPU_SCHED in $STARPU_SCHEDS
+do
+	echo "'cholesky.output' using 1:$N with lines title '$STARPU_SCHED', \\" >> cholesky.gp
+	N=$(($N + 1))
+done
+gnuplot cholesky.gp
+gv $OUTFILE
+true

+ 227 - 0
examples/filters/fplan_notautomatic.c

@@ -0,0 +1,227 @@
+/* StarPU --- Runtime system for heterogeneous multicore architectures.
+ *
+ * Copyright (C) 2018                                     CNRS
+ *
+ * StarPU is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or (at
+ * your option) any later version.
+ *
+ * StarPU is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * See the GNU Lesser General Public License in COPYING.LGPL for more details.
+ */
+
+#include <starpu.h>
+
+#define FPRINTF(ofile, fmt, ...) do { if (!getenv("STARPU_SSILENT")) {fprintf(ofile, fmt, ## __VA_ARGS__); }} while(0)
+
+#define NX    9
+#define PARTS 3
+
+struct starpu_codelet task_codelet;
+
+// CPU implementations
+void task_cpu(void *descr[], void *args)
+{
+	int *values = (int*)STARPU_VECTOR_GET_PTR(descr[0]);
+	int nx = STARPU_VECTOR_GET_NX(descr[0]);
+	int i, add;
+	char message[10000];
+	int cur = 0;
+
+	starpu_codelet_unpack_args(args, &add);
+
+	cur += snprintf(&message[cur], 10000-cur, "Values ");
+	for(i=0 ; i<nx ; i++)
+	{
+		values[i] += add;
+		cur += snprintf(&message[cur], 10000-cur, "%d ", values[i]);
+	}
+	FPRINTF(stderr, "%s\n", message);
+}
+
+void split_cpu(void *descr[], void *args)
+{
+	(void)descr;
+	//	starpu_data_handle_t data_handle = starpu_data_lookup((void*)STARPU_VECTOR_GET_PTR(descr[0]));
+
+	starpu_data_handle_t value_handle, sub_handles[PARTS];
+	starpu_codelet_unpack_args(args, &value_handle, &sub_handles);
+
+	FPRINTF(stderr, "Partition for handle %p into handles %p %p and %p\n", value_handle, sub_handles[0], sub_handles[1], sub_handles[2]);
+
+	starpu_data_partition_submit_sequential_consistency(value_handle, PARTS, sub_handles, 0);
+}
+
+void supertask_cpu(void *descr[], void *args)
+{
+	(void)descr;
+	//	starpu_data_handle_t data_handle = starpu_data_lookup((void*)STARPU_VECTOR_GET_PTR(descr[0]));
+	starpu_data_handle_t sub_handles[PARTS];
+	int add;
+
+	starpu_codelet_unpack_args(args, &sub_handles, &add);
+
+	FPRINTF(stderr, "Submitting tasks on %d subdata (add %d)\n", PARTS, add);
+
+	int i;
+	for(i=0 ; i<PARTS ; i++)
+	{
+		int ret = starpu_task_insert(&task_codelet,
+					     STARPU_RW, sub_handles[i],
+					     STARPU_VALUE, &add, sizeof(add),
+					     0);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_insert");
+	}
+}
+
+void merge_cpu(void *descr[], void *args)
+{
+	(void)descr;
+	//	starpu_data_handle_t value_handle = starpu_data_lookup((void*)STARPU_VECTOR_GET_PTR(descr[0]));
+
+	starpu_data_handle_t value_handle, sub_handles[PARTS];
+	starpu_codelet_unpack_args(args, &value_handle, &sub_handles);
+
+	FPRINTF(stderr, "Unpartition for handle %p from handles %p %p and %p\n", value_handle, sub_handles[0], sub_handles[1], sub_handles[2]);
+
+	starpu_data_unpartition_submit_sequential_consistency(value_handle, PARTS, sub_handles, STARPU_MAIN_RAM, 0);
+}
+
+
+// Codelets
+struct starpu_codelet task_codelet =
+{
+	.cpu_funcs = {task_cpu},
+	.nbuffers = 1,
+	.modes = {STARPU_RW},
+	.name = "task_codelet"
+};
+
+struct starpu_codelet supertask_codelet =
+{
+	.cpu_funcs = {supertask_cpu},
+	.nbuffers = 1,
+	.modes = {STARPU_RW},
+	.name = "supertask_codelet"
+};
+
+struct starpu_codelet split_codelet =
+{
+	.cpu_funcs = {split_cpu},
+	.nbuffers = 1,
+	.modes = {STARPU_RW},
+	.name = "split_codelet"
+};
+
+struct starpu_codelet merge_codelet =
+{
+	.cpu_funcs = {merge_cpu},
+	.nbuffers = 1,
+	.modes = {STARPU_RW},
+	.name = "merge_codelet"
+};
+
+int main(void)
+{
+	int ret, i;
+	int values[NX];
+	int check[NX];
+	int add=1;
+	starpu_data_handle_t value_handle;
+	starpu_data_handle_t sub_handles[PARTS];
+
+	ret = starpu_init(NULL);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_init");
+
+	if (starpu_cpu_worker_get_count() == 0)
+	{
+		FPRINTF(stderr, "We need at least 1 CPU worker.\n");
+		starpu_shutdown();
+		return 77;
+	}
+
+	struct starpu_data_filter f =
+	{
+		.filter_func = starpu_vector_filter_block,
+		.nchildren = PARTS
+	};
+
+	values[NX-1] = 2;
+	for(i=NX-2 ; i>= 0 ; i--) values[i] = values[i+1] * 2;
+	for(i=0 ; i<NX ; i++) check[i] = values[i] + (4 * add);
+
+	starpu_vector_data_register(&value_handle, STARPU_MAIN_RAM, (uintptr_t)&values[0], NX, sizeof(values[0]));
+	starpu_data_partition_plan(value_handle, &f, sub_handles);
+
+	// tell StarPU not to partition data, the application will decide itself when to do it
+	starpu_data_partition_not_automatic(value_handle);
+	for(i=0 ; i<PARTS ; i++)
+		starpu_data_partition_not_automatic(sub_handles[i]);
+
+	// insert a task on the whole data
+	ret = starpu_task_insert(&task_codelet, STARPU_RW, value_handle,
+				 STARPU_VALUE, &add, sizeof(add),
+				 STARPU_NAME, "task_1", 0);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_insert");
+
+	// insert a task to split the data
+	ret = starpu_task_insert(&split_codelet, STARPU_RW, value_handle,
+				 STARPU_VALUE, &value_handle, sizeof(starpu_data_handle_t),
+				 STARPU_VALUE, sub_handles, PARTS*sizeof(starpu_data_handle_t),
+				 STARPU_NAME, "split", 0);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_insert");
+
+	// insert a task that will work on the subdata
+	ret = starpu_task_insert(&supertask_codelet, STARPU_RW, value_handle,
+				 STARPU_VALUE, sub_handles, PARTS*sizeof(starpu_data_handle_t),
+				 STARPU_VALUE, &add, sizeof(add),
+				 STARPU_NAME, "supertask_1", 0);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_insert");
+
+	// insert another task that will work on the subdata
+	ret = starpu_task_insert(&supertask_codelet, STARPU_RW, value_handle,
+				 STARPU_VALUE, sub_handles, PARTS*sizeof(starpu_data_handle_t),
+				 STARPU_VALUE, &add, sizeof(add),
+				 STARPU_NAME, "supertask_2", 0);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_insert");
+
+	// insert a task to merge the data
+	ret = starpu_task_insert(&merge_codelet, STARPU_RW, value_handle,
+				 STARPU_VALUE, &value_handle, sizeof(starpu_data_handle_t),
+				 STARPU_VALUE, sub_handles, PARTS*sizeof(starpu_data_handle_t),
+				 STARPU_NAME, "merge", 0);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_insert");
+
+	// insert a task that will work on the whole data
+	ret = starpu_task_insert(&task_codelet, STARPU_RW, value_handle,
+				 STARPU_VALUE, &add, sizeof(add),
+				 STARPU_NAME, "task_2", 0);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_insert");
+
+	starpu_task_wait_for_all();
+	starpu_data_partition_clean(value_handle, PARTS, sub_handles);
+	starpu_data_unregister(value_handle);
+
+	FPRINTF(stderr, "Values : ");
+	for(i=0 ; i<NX ; i++)
+	{
+		FPRINTF(stderr, "%d ", values[i]);
+	}
+	FPRINTF(stderr, "\n");
+	for(i=0 ; i<NX ; i++)
+	{
+		if (values[i] != check[i])
+		{
+			FPRINTF(stderr, "Incorrect value for %d. %d != %d\n", i, values[i], check[i]);
+			ret = 1;
+		}
+	}
+
+	starpu_shutdown();
+
+	return ret;
+}

+ 3 - 3
examples/lu/xlu_pivot.c

@@ -129,7 +129,7 @@ static int create_task_12(starpu_data_handle_t *dataAp, unsigned nblocks, unsign
 	task->cl = &cl12;
 	task->color = 0x8080ff;
 
-	task->cl_arg = (void *)(task->tag_id);
+	task->cl_arg = (void *)(uintptr_t)(task->tag_id);
 
 	/* which sub-data is manipulated ? */
 	task->handles[0] = get_block(dataAp, nblocks, k, k);
@@ -177,7 +177,7 @@ static int create_task_21(starpu_data_handle_t *dataAp, unsigned nblocks, unsign
 		task->priority = STARPU_MAX_PRIO;
 	}
 
-	task->cl_arg = (void *)(task->tag_id);
+	task->cl_arg = (void *)(uintptr_t)(task->tag_id);
 
 	/* enforce dependencies ... */
 	starpu_tag_declare_deps(TAG21(k, i), 1, PIVOT(k, i));
@@ -199,7 +199,7 @@ static int create_task_22(starpu_data_handle_t *dataAp, unsigned nblocks, unsign
 	task->cl = &cl22;
 	task->color = 0x00ff00;
 
-	task->cl_arg = (void *)(task->tag_id);
+	task->cl_arg = (void *)(uintptr_t)(task->tag_id);
 
 	/* which sub-data is manipulated ? */
 	task->handles[0] = get_block(dataAp, nblocks, k, i); /* produced by TAG21(k, i) */

+ 3 - 3
examples/stencil/Makefile.am

@@ -1,7 +1,7 @@
 # StarPU --- Runtime system for heterogeneous multicore architectures.
 #
 # Copyright (C) 2011,2016-2017                           Inria
-# Copyright (C) 2011-2017                                CNRS
+# Copyright (C) 2011-2018                                CNRS
 # Copyright (C) 2010-2017                                Université de Bordeaux
 #
 # StarPU is free software; you can redistribute it and/or modify
@@ -185,7 +185,7 @@ CLEANFILES = *.gcno *.gcda *.xpm starpu_idle_microsec.log
 
 
 .out.out2:
-	grep '^|' $< | tr -d ' ' > $@
+	$(GREP) '^|' $< | tr -d ' ' > $@
 
 .out2.xpm:
 	( width=$$(expr $$(head -n 1 < $< | wc -c) - 1) ; \
@@ -202,7 +202,7 @@ CLEANFILES = *.gcno *.gcda *.xpm starpu_idle_microsec.log
 	echo "\"5	c #00FFFF\"," ; \
 	echo "\"|	c #FFFFFF\"," ; \
 	echo "\"*	c #000000\"," ; \
-	< $< sed -e 's/^/"/' -e 's/$$/",/' | sed -e '$$s/",$$/"};/' ) > $@
+	< $< $(SED) -e 's/^/"/' -e 's/$$/",/' | $(SED) -e '$$s/",$$/"};/' ) > $@
 
 view:
 	feh --zoom 800 -F 0.xpm 0.5.xpm 1.xpm 2.xpm 3.xpm 4.xpm 6.xpm mpi.xpm

+ 1 - 0
include/starpu_data_filters.h

@@ -55,6 +55,7 @@ void starpu_data_partition_clean(starpu_data_handle_t root_data, unsigned nparts
 
 void starpu_data_partition_submit_sequential_consistency(starpu_data_handle_t initial_handle, unsigned nparts, starpu_data_handle_t *children, int sequential_consistency);
 void starpu_data_unpartition_submit_sequential_consistency(starpu_data_handle_t initial_handle, unsigned nparts, starpu_data_handle_t *children, int gathering_node, int sequential_consistency);
+void starpu_data_partition_not_automatic(starpu_data_handle_t handle);
 
 int starpu_data_get_nb_children(starpu_data_handle_t handle);
 starpu_data_handle_t starpu_data_get_child(starpu_data_handle_t handle, unsigned i);

+ 3 - 3
src/Makefile.am

@@ -2,7 +2,7 @@
 #
 # Copyright (C) 2011-2017                                Inria
 # Copyright (C) 2009-2018                                Université de Bordeaux
-# Copyright (C) 2010-2015,2017                           CNRS
+# Copyright (C) 2010-2015,2017,2018                           CNRS
 #
 # StarPU is free software; you can redistribute it and/or modify
 # it under the terms of the GNU Lesser General Public License as published by
@@ -400,9 +400,9 @@ endif
 # static inline definition
 dist-hook:
 	failed=0 ; \
-	for i in $$( grep "static inline" $$(find $(srcdir) -name \*.h) | sed -e 's/.*static inline //g' | grep -v ENAME | sed -e 's/[^(]* \(\|\*\)\([^ (]*\)(.*/\2/' | grep -v _starpu_spin_init) ; do \
+	for i in $$( $(GREP) "static inline" $$(find $(srcdir) -name \*.h) | $(SED) -e 's/.*static inline //g' | $(GREP) -v ENAME | $(SED) -e 's/[^(]* \(\|\*\)\([^ (]*\)(.*/\2/' | $(GREP) -v _starpu_spin_init) ; do \
 		for j in .libs/*.o ; do \
-			nm $$j | grep "U $$i$$" && { echo $$j ; failed=1 ; } ; \
+			nm $$j | $(GREP) "U $$i$$" && { echo $$j ; failed=1 ; } ; \
 		done ; \
 	done ; \
 	[ $$failed == 0 ]

+ 4 - 2
src/core/task.c

@@ -3,7 +3,7 @@
  * Copyright (C) 2011-2018                                Inria
  * Copyright (C) 2017                                     Erwan Leria
  * Copyright (C) 2009-2018                                Université de Bordeaux
- * Copyright (C) 2010-2017                                CNRS
+ * Copyright (C) 2010-2018                                CNRS
  * Copyright (C) 2011                                     Télécom-SudParis
  * Copyright (C) 2016                                     Uppsala University
  *
@@ -597,7 +597,9 @@ static int _starpu_task_submit_head(struct starpu_task *task)
 			if (handle->home_node != -1)
 				_STARPU_TASK_SET_INTERFACE(task, starpu_data_get_interface_on_node(handle, handle->home_node), i);
 			if (!(task->cl->flags & STARPU_CODELET_NOPLANS) &&
-			    ((handle->nplans && !handle->nchildren) || handle->siblings))
+			    ((handle->nplans && !handle->nchildren) || handle->siblings)
+			    && handle->partition_automatic_disabled == 0
+			    )
 				/* This handle is involved with asynchronous
 				 * partitioning as a parent or a child, make
 				 * sure the right plan is active, submit

+ 3 - 1
src/datawizard/coherency.h

@@ -2,7 +2,7 @@
  *
  * Copyright (C) 2011,2014-2017                           Inria
  * Copyright (C) 2008-2018                                Université de Bordeaux
- * Copyright (C) 2010-2015,2017                           CNRS
+ * Copyright (C) 2010-2015,2017,2018                      CNRS
  *
  * StarPU is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -277,6 +277,8 @@ struct _starpu_data_state
 	 * took it yet */
 	int last_locality;
 
+	int partition_automatic_disabled;
+
 	/* A generic pointer to data in the user land (could be anything and this
 	 * is not manage by StarPU) */
 	void *user_data;

+ 5 - 0
src/datawizard/filters.c

@@ -1040,3 +1040,8 @@ _starpu_filter_nparts_compute_chunk_size_and_offset(unsigned n, unsigned nparts,
 	if (offset != NULL)
 		*offset = (id *(n/nparts) + STARPU_MIN(remainder, id)) * ld * elemsize;
 }
+
+void starpu_data_partition_not_automatic(starpu_data_handle_t handle)
+{
+	handle->partition_automatic_disabled = 1;
+}

+ 1 - 0
src/datawizard/interfaces/data_interface.c

@@ -451,6 +451,7 @@ int _starpu_data_handle_init(starpu_data_handle_t handle, struct starpu_data_int
 	handle->ops = interface_ops;
 	handle->mf_node = mf_node;
 	handle->mpi_data = NULL;
+	handle->partition_automatic_disabled = 0;
 
 	size_t interfacesize = interface_ops->interface_size;
 

+ 3 - 3
tests/microbenchs/tasks_size_overhead.c

@@ -1,7 +1,7 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
  * Copyright (C) 2012-2013                                Inria
- * Copyright (C) 2010-2013,2015-2017                      CNRS
+ * Copyright (C) 2010-2013,2015-2018                      CNRS
  * Copyright (C) 2010-2014,2016-2017                      Université de Bordeaux
  *
  * StarPU is free software; you can redistribute it and/or modify
@@ -191,7 +191,7 @@ int main(int argc, char **argv)
 
 	/* Allocate data */
 	for (buffer = 0; buffer < total_nbuffers; buffer++)
-		buffers[buffer] = (float *) malloc(16*sizeof(float));
+		buffers[buffer] = (float *) calloc(16, sizeof(float));
 
 	tasks = (struct starpu_task *) calloc(1, ntasks*maxcpus*sizeof(struct starpu_task));
 
@@ -253,7 +253,7 @@ int main(int argc, char **argv)
 				{
 					tasks[i].dyn_handles = malloc(nbuffers * sizeof(*data_handles));
 					handles = tasks[i].dyn_handles;
-					tasks[i].dyn_modes = malloc(nbuffers * sizeof(*(tasks[i].dyn_modes)));
+					tasks[i].dyn_modes = malloc(nbuffers * sizeof(tasks[i].dyn_modes[0]));
 					for (buffer = 0; buffer < nbuffers; buffer++)
 						tasks[i].dyn_modes[buffer] = STARPU_R;
 				}

+ 2 - 1
tools/Makefile.am

@@ -4,7 +4,7 @@
 # Copyright (C) 2017                                     Erwan Leria
 # Copyright (C) 2009-2017                                Université de Bordeaux
 # Copyright (C) 2013                                     Joris Pablo
-# Copyright (C) 2010-2017                                CNRS
+# Copyright (C) 2010-2018                                CNRS
 #
 # StarPU is free software; you can redistribute it and/or modify
 # it under the terms of the GNU Lesser General Public License as published by
@@ -142,6 +142,7 @@ EXTRA_DIST =				\
 	dev/checker/rename.sed		\
 	dev/checker/rename.sh		\
 	dev/cppcheck/suppressions.txt	\
+	dev/valgrind/bash.suppr		\
 	dev/valgrind/fxt.suppr		\
 	dev/valgrind/hdf5.suppr		\
 	dev/valgrind/hwloc.suppr	\

+ 26 - 0
tools/dev/valgrind/bash.suppr

@@ -0,0 +1,26 @@
+# StarPU --- Runtime system for heterogeneous multicore architectures.
+#
+# Copyright (C) 2018                                     CNRS
+#
+# StarPU is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or (at
+# your option) any later version.
+#
+# StarPU is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# See the GNU Lesser General Public License in COPYING.LGPL for more details.
+#
+
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Free
+   ...
+   obj:/bin/bash
+   fun:execute_command_internal
+   fun:execute_command
+   fun:reader_loop
+   fun:main
+}

+ 0 - 47
tools/dev/valgrind/valgrind.suppr

@@ -34,50 +34,3 @@
    fun:_dl_init
    ...
 }
-
-
-{
-   <insert_a_suppression_name_here>
-   Memcheck:Free
-   fun:free
-   obj:/bin/bash
-   fun:run_unwind_frame
-   fun:parse_and_execute
-   obj:/bin/bash
-   fun:source_file
-   fun:source_builtin
-   obj:/bin/bash
-   obj:/bin/bash
-   fun:execute_command_internal
-   fun:execute_command
-   fun:reader_loop
-   fun:main
-}
-
-{
-   <insert_a_suppression_name_here>
-   Memcheck:Free
-   fun:free
-   obj:/bin/bash
-   fun:run_unwind_frame
-   fun:parse_and_execute
-   fun:command_substitute
-   obj:/bin/bash
-   obj:/bin/bash
-   fun:expand_string_assignment
-   obj:/bin/bash
-   obj:/bin/bash
-   obj:/bin/bash
-   obj:/bin/bash
-   fun:execute_command_internal
-   fun:parse_and_execute
-   obj:/bin/bash
-   fun:source_file
-   fun:source_builtin
-   obj:/bin/bash
-   obj:/bin/bash
-   fun:execute_command_internal
-   fun:execute_command
-   fun:reader_loop
-   fun:main
-}

+ 4 - 1
tools/gdbinit

@@ -2,7 +2,7 @@
 # StarPU --- Runtime system for heterogeneous multicore architectures.
 #
 # Copyright (C) 2010-2018  Université de Bordeaux
-# Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017  CNRS
+# Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018  CNRS
 #
 # StarPU is free software; you can redistribute it and/or modify
 # it under the terms of the GNU Lesser General Public License as published by
@@ -74,6 +74,9 @@ define starpu-print-task
     printf "\tname:\t\t\t\t<%s>\n", $task->name
   end
   printf "\tcodelet:\t\t\t<%p>\n", $task->cl
+  if $task->cl
+    printf "\tcodelet name:\t\t\t<%s>\n", $task->cl->name
+  end
   printf "\tcallback:\t\t\t<%p>\n", $task->callback_func
   printf "\tsynchronous:\t\t\t<%d>\n", $task->synchronous
   printf "\texecute_on_a_specific_worker:\t<%d>\n", $task->execute_on_a_specific_worker