瀏覽代碼

Update doc with MPI Master-Slave support + fix visibility of 2 sections in MPI doc

Corentin Salingue 8 年之前
父節點
當前提交
5d3f3a018a

+ 3 - 1
ChangeLog

@@ -2,7 +2,7 @@
 #
 # Copyright (C) 2009-2017  Université de Bordeaux
 # Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016  CNRS
-# Copyright (C) 2014, 2016 INRIA
+# Copyright (C) 2014, 2016, 2017  INRIA
 #
 # 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
@@ -23,6 +23,8 @@ New features:
   * Support priorities for data transfers.
   * Add support for Ayudame version 2.x debugging library.
   * Add support for multiple linear regression performance models
+  * Add MPI Master-Slave support to use the cores of remote nodes. Use the
+    --enable-mpi-master-slave option to activate it.
 
 Small features:
   * Scheduling contexts may now be associated a user data pointer at creation

+ 3 - 2
doc/doxygen/chapters/210_check_list_performance.doxy

@@ -2,7 +2,7 @@
  * This file is part of the StarPU Handbook.
  * Copyright (C) 2009--2011  Universit@'e de Bordeaux
  * Copyright (C) 2010, 2011, 2012, 2013, 2014, 2016  CNRS
- * Copyright (C) 2011, 2012 INRIA
+ * Copyright (C) 2011, 2012, 2017  INRIA
  * See the file version.doxy for copying conditions.
  */
 
@@ -260,7 +260,8 @@ having to calibrate performance models for each GPU of a homogeneous set of GPU
 devices for instance, the model can be shared by setting
 <c>export STARPU_PERF_MODEL_HOMOGENEOUS_CUDA=1</c> ,
 <c>export STARPU_PERF_MODEL_HOMOGENEOUS_OPENCL=1</c> ,
-<c>export STARPU_PERF_MODEL_HOMOGENEOUS_MIC=1</c> , or
+<c>export STARPU_PERF_MODEL_HOMOGENEOUS_MIC=1</c> ,
+<c>export STARPU_PERF_MODEL_HOMOGENEOUS_MPI_MS=1</c> , or
 <c>export STARPU_PERF_MODEL_HOMOGENEOUS_SCC=1</c> (depending on your GPU device type).
 
 To force continuing calibration,

+ 28 - 3
doc/doxygen/chapters/410_mpi_support.doxy

@@ -2,7 +2,7 @@
  * This file is part of the StarPU Handbook.
  * Copyright (C) 2009--2011  Universit@'e de Bordeaux
  * Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016  CNRS
- * Copyright (C) 2011, 2012 INRIA
+ * Copyright (C) 2011, 2012, 2017  INRIA
  * See the file version.doxy for copying conditions.
  */
 
@@ -681,8 +681,6 @@ for(x = 0; x < nblocks ;  x++) {
 starpu_mpi_gather_detached(data_handles, nblocks, 0, MPI_COMM_WORLD);
 \endcode
 
-*/
-
 Other collective operations would be easy to define, just ask starpu-devel for
 them!
 
@@ -726,3 +724,30 @@ uses implicit MPI data transfers, <c>plu_outofcore_example</c> uses implicit MPI
 data transfers and supports data matrices which do not fit in memory (out-of-core).
 </li>
 </ul>
+
+\section MPIMasterSlave MPI Master Slave Support
+
+StarPU includes an other way to execute the application across many nodes. The Master
+Slave support permits to use remote cores without thinking about data distribution. This
+support can be activated with the <c>--enable-mpi-master-slave</c>. However, you should not activate
+both MPI support and MPI Master-Slave support.
+
+If a codelet contains a kernel for CPU devices, it is automatically eligible to be executed
+on a MPI Slave device. However, you can decide to execute the codelet on a MPI Slave by filling
+the <c>mpi_ms_funcs</c> variable. The functions have to be globally-visible (i.e. not static ) for
+StarPU to be able to look them up, and -rdynamic must be passed to gcc (or -export-dynamic to ld)
+so that symbols of the main program are visible.
+
+By default, one core is dedicated on the master to manage the entire set of slaves. If MPI
+has a good multiple threads support, you can use <c>--with-mpi-master-slave-multiple-thread</c> to
+dedicate one core per slave.
+
+If you want to chose the number of cores on the slave device, use the <c>STARPU_NMPIMSTHREADS=<number></c>
+with <c><number></c> is the number of cores wanted. The default value is all the slave's cores. To select
+the number of slaves nodes, change the <c>-n</c> parameter when executing the application with mpirun
+or mpiexec.
+
+The node chosen by default is the with the MPI rank 0. To modify this, use the environment variable
+<c>STARPU_MPI_MASTER_NODE=<number></c> with <c><number></c> is the MPI rank wanted.
+
+*/

+ 11 - 1
doc/doxygen/chapters/501_environment_variables.doxy

@@ -2,7 +2,7 @@
  * This file is part of the StarPU Handbook.
  * Copyright (C) 2009--2011  Universit@'e de Bordeaux
  * Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017  CNRS
- * Copyright (C) 2011, 2012, 2016 INRIA
+ * Copyright (C) 2011, 2012, 2016, 2017  INRIA
  * Copyright (C) 2016 Uppsala University
  * See the file version.doxy for copying conditions.
  */
@@ -652,6 +652,16 @@ calibration to be much faster, since measurements only have to be once for all
 MIC GPUs.
 </dd>
 
+<dt>STARPU_PERF_MODEL_HOMOGENEOUS_MPI_MS</dt>
+<dd>
+\anchor STARPU_PERF_MODEL_HOMOGENEOUS_MPI_MS
+\addindex __env__STARPU_PERF_MODEL_HOMOGENEOUS_MPI_MS
+When this is set to 1, StarPU will assume that all MPI Slave devices have the same
+performance, and thus share performance models for them, thus allowing kernel
+calibration to be much faster, since measurements only have to be once for all
+MPI Slaves.
+</dd>
+
 <dt>STARPU_PERF_MODEL_HOMEGENEOUS_SCC</dt>
 <dd>
 \anchor STARPU_PERF_MODEL_HOMOGENEOUS_SCC

+ 15 - 1
doc/doxygen/chapters/510_configure_options.doxy

@@ -2,7 +2,7 @@
  * This file is part of the StarPU Handbook.
  * Copyright (C) 2009--2011  Universit@'e de Bordeaux
  * Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016  CNRS
- * Copyright (C) 2011, 2012 INRIA
+ * Copyright (C) 2011, 2012, 2017  INRIA
  * See the file version.doxy for copying conditions.
  */
 
@@ -313,6 +313,20 @@ used by StarPU data structures.
 
 <dl>
 
+<dt>--disable-mpi</dt>
+<dd>
+\anchor disable-mpi
+\addindex __configure__--disable-mpi
+Disable the build of libstarpumpi. By default, it is enabled when MPI is found.
+</dd>
+
+<dt>--enable-mpi-master-slave</dt>
+<dd>
+\anchor enable-mpi-master-slave
+\addindex __configure__--enable-mpi-master-slave
+Enable the MPI Master-Slave support. By default, it is disabled.
+</dd>
+
 <dt>--disable-fortran</dt>
 <dd>
 \anchor disable-fortran