Browse Source

When absolute mpicc/mpicxx paths are given, avoid AC_PATH_PROG looking in PATH only

Samuel Thibault 5 years ago
parent
commit
ff2c44dba2
2 changed files with 53 additions and 51 deletions
  1. 10 2
      configure.ac
  2. 43 49
      doc/doxygen/chapters/320_scheduling.doxy

+ 10 - 2
configure.ac

@@ -323,7 +323,11 @@ if test x$enable_simgrid = xyes ; then
 else
 else
     DEFAULT_MPICC=mpicc
     DEFAULT_MPICC=mpicc
 fi
 fi
-AC_ARG_WITH(mpicc, [AS_HELP_STRING([--with-mpicc=<path to mpicc>], [Path of the mpicc compiler])], [DEFAULT_MPICC=$withval])
+AC_ARG_WITH(mpicc, [AS_HELP_STRING([--with-mpicc=<mpicc name or path to mpicc>], [Name or path of the mpicc compiler])], [DEFAULT_MPICC=$withval])
+case $DEFAULT_MPICC in
+	# Absolute path, avoid AC_PATH_PROG looking in PATH only...
+	/*) mpicc_path="$DEFAULT_MPICC" ;;
+esac
 AC_PATH_PROG(mpicc_path, $DEFAULT_MPICC, [no], [$simgrid_dir/bin:$PATH])
 AC_PATH_PROG(mpicc_path, $DEFAULT_MPICC, [no], [$simgrid_dir/bin:$PATH])
 AC_MSG_CHECKING(whether mpicc is available)
 AC_MSG_CHECKING(whether mpicc is available)
 AC_MSG_RESULT($mpicc_path)
 AC_MSG_RESULT($mpicc_path)
@@ -335,7 +339,11 @@ if test x$enable_simgrid = xyes ; then
 else
 else
     DEFAULT_MPICXX=mpicxx
     DEFAULT_MPICXX=mpicxx
 fi
 fi
-AC_ARG_WITH(mpicxx, [AS_HELP_STRING([--with-mpicxx=<path to mpicxx>], [Path of the mpicxx/mpic++ compiler])], [DEFAULT_MPICXX=$withval])
+AC_ARG_WITH(mpicxx, [AS_HELP_STRING([--with-mpicxx=<mpicxx name or path to mpicxx>], [Name or path of the mpicxx/mpic++ compiler])], [DEFAULT_MPICXX=$withval])
+case $DEFAULT_MPICXX in
+	# Absolute path, avoid AC_PATH_PROG looking in PATH only...
+	/*) mpicxx_path="$DEFAULT_MPICXX" ;;
+esac
 AC_PATH_PROG(mpicxx_path, $DEFAULT_MPICXX, [no], [$simgrid_dir/bin:$PATH])
 AC_PATH_PROG(mpicxx_path, $DEFAULT_MPICXX, [no], [$simgrid_dir/bin:$PATH])
 
 
 # try with mpic++ if mpicxx was not found
 # try with mpic++ if mpicxx was not found

+ 43 - 49
doc/doxygen/chapters/320_scheduling.doxy

@@ -39,7 +39,7 @@ STARPU_SCHED. For instance <c>export STARPU_SCHED=dmda</c> . Use <c>help</c> to
 get the list of available schedulers.
 get the list of available schedulers.
 
 
 
 
-<b>Non Performance Modelling Policies:</b>
+\subsection NonPerformanceModelingPolicies Non Performance Modelling Policies
 
 
 The <b>eager</b> scheduler uses a central task queue, from which all workers draw tasks
 The <b>eager</b> scheduler uses a central task queue, from which all workers draw tasks
 to work on concurrently. This however does not permit to prefetch data since the scheduling
 to work on concurrently. This however does not permit to prefetch data since the scheduling
@@ -65,7 +65,7 @@ The <b>heteroprio</b> scheduler uses different priorities for the different proc
 This scheduler must be configured to work correclty and to expect high-performance
 This scheduler must be configured to work correclty and to expect high-performance
 as described in the corresponding section.
 as described in the corresponding section.
 
 
-\section DMTaskSchedulingPolicy Performance Model-Based Task Scheduling Policies
+\subsection DMTaskSchedulingPolicy Performance Model-Based Task Scheduling Policies
 
 
 If (<b>and only if</b>) your application <b>codelets have performance models</b> (\ref
 If (<b>and only if</b>) your application <b>codelets have performance models</b> (\ref
 PerformanceModelExample), you should change the scheduler thanks to the
 PerformanceModelExample), you should change the scheduler thanks to the
@@ -87,8 +87,6 @@ family policy using performance model hints. A low or zero percentage may be
 the sign that performance models are not converging or that codelets do not
 the sign that performance models are not converging or that codelets do not
 have performance models enabled.
 have performance models enabled.
 
 
-<b>Performance Modelling Policies:</b>
-
 The <b>dm</b> (deque model) scheduler takes task execution performance models into account to
 The <b>dm</b> (deque model) scheduler takes task execution performance models into account to
 perform a HEFT-similar scheduling strategy: it schedules tasks where their
 perform a HEFT-similar scheduling strategy: it schedules tasks where their
 termination time will be minimal. The difference with HEFT is that <b>dm</b>
 termination time will be minimal. The difference with HEFT is that <b>dm</b>
@@ -127,6 +125,47 @@ The <b>peager</b> (parallel eager) scheduler is similar to eager, it also
 supports parallel tasks (still experimental). Should not be used when several 
 supports parallel tasks (still experimental). Should not be used when several 
 contexts using it are being executed simultaneously.
 contexts using it are being executed simultaneously.
 
 
+\subsection ExistingModularizedSchedulers Modularized Schedulers
+
+StarPU provides a powerful way to implement schedulers, as documented in \ref
+DefiningANewModularSchedulingPolicy . It is currently shipped with the following
+pre-defined Modularized Schedulers :
+
+
+<b>modular-eager</b> , <b>modular-eager-prefetching</b> are eager-based Schedulers (without and with prefetching)), they are \n
+naive schedulers, which try to map a task on the first available resource
+they find. The prefetching variant queues several tasks in advance to be able to
+do data prefetching. This may however degrade load balancing a bit.
+
+<b>modular-prio</b>, <b>modular-prio-prefetching</b>, <b>modular-eager-prio</b> are prio-based Schedulers (without / with prefetching):,
+similar to Eager-Based Schedulers. Can handle tasks which have a defined
+priority and schedule them accordingly.
+The <b>modular-eager-prio</b> variant integrates the eager and priority queue in a
+single component. This allows it to do a better job at pushing tasks.
+
+<b>modular-random</b>, <b>modular-random-prio</b>, <b>modular-random-prefetching</b>, <b>modular-random-prio-prefetching</b> are random-based Schedulers (without/with prefetching) : \n
+Select randomly a resource to be mapped on for each task.
+
+<b>modular-ws</b>) implements Work Stealing:
+Maps tasks to workers in round robin, but allows workers to steal work from other workers.
+
+<b>modular-heft</b>, <b>modular-heft2</b>, and <b>modular-heft-prio</b> are
+HEFT Schedulers : \n
+Maps tasks to workers using a heuristic very close to
+Heterogeneous Earliest Finish Time.
+It needs that every task submitted to StarPU have a
+defined performance model (\ref PerformanceModelCalibration)
+to work efficiently, but can handle tasks without a performance
+model. <b>modular-heft</b> just takes tasks by priority order. <b>modular-heft2</b> takes
+at most 5 tasks of the same priority and checks which one fits best.
+<b>modular-heft-prio</b> is similar to <b>modular-heft</b>, but only decides the memory
+node, not the exact worker, just pushing tasks to one central queue per memory
+node.
+
+<b>modular-heteroprio</b> is a Heteroprio Scheduler: \n
+Maps tasks to worker similarly to HEFT, but first attribute accelerated tasks to
+GPUs, then not-so-accelerated tasks to CPUs.
+
 \section TaskDistributionVsDataTransfer Task Distribution Vs Data Transfer
 \section TaskDistributionVsDataTransfer Task Distribution Vs Data Transfer
 
 
 Distributing tasks to balance the load induces data transfer penalty. StarPU
 Distributing tasks to balance the load induces data transfer penalty. StarPU
@@ -196,51 +235,6 @@ use starpu_task_expected_length() on the task (in µs), multiplied by the
 typical power consumption of the device, e.g. in W, and divided by 1000000. to
 typical power consumption of the device, e.g. in W, and divided by 1000000. to
 get Joules.
 get Joules.
 
 
-\section ExistingModularizedSchedulers Modularized Schedulers
-
-StarPU provides a powerful way to implement schedulers, as documented in \ref
-DefiningANewModularSchedulingPolicy . It is currently shipped with the following
-pre-defined Modularized Schedulers :
-
-- Eager-based Schedulers (with/without prefetching : <b>modular-eager</b> ,
-<b>modular-eager-prefetching</b>) : \n
-Naive scheduler, which tries to map a task on the first available resource
-it finds. The prefecthing variant queues several tasks in advance to be able to
-do data prefetching. This may however degrade load balancing a bit.
-
-- Prio-based Schedulers (with/without prefetching :
-<b>modular-prio</b>, <b>modular-prio-prefetching</b>, <b>modular-eager-prio</b>) : \n
-Similar to Eager-Based Schedulers. Can handle tasks which have a defined
-priority and schedule them accordingly.
-The <b>modular-eager-prio</b> variant integrates the eager and priority queue in a
-single component. This allows it to do a better job at pushing tasks.
-
-- Random-based Schedulers (with/without prefetching: <b>modular-random</b>,
-<b>modular-random-prio</b>, <b>modular-random-prefetching</b>,
-<b>modular-random-prio-prefetching</b>) : \n
-Selects randomly a resource to be mapped on for each task.
-
-- Work Stealing (<b>modular-ws</b>) : \n
-Maps tasks to workers in round robin, but allows workers to steal work from other workers.
-
-- HEFT Scheduler : \n
-Maps tasks to workers using a heuristic very close to
-Heterogeneous Earliest Finish Time.
-It needs that every task submitted to StarPU have a
-defined performance model (\ref PerformanceModelCalibration)
-to work efficiently, but can handle tasks without a performance
-model. <b>modular-heft</b> just takes tasks by priority order. <b>modular-heft</b> takes
-at most 5 tasks of the same priority and checks which one fits best.
-<b>modular-heft-prio</b> is similar to <b>modular-heft</b>, but only decides the memory
-node, not the exact worker, just pushing tasks to one central queue per memory
-node.
-
-- Heteroprio Scheduler: \n
-<b>modular-heteroprio</b>Maps tasks to worker similarly to HEFT, but first attribute accelerated tasks to
-GPUs, then not-so-accelerated tasks to CPUs.
-
-To use one of these schedulers, one can set the environment variable \ref STARPU_SCHED.
-
 \section StaticScheduling Static Scheduling
 \section StaticScheduling Static Scheduling
 
 
 In some cases, one may want to force some scheduling, for instance force a given
 In some cases, one may want to force some scheduling, for instance force a given