/* StarPU --- Runtime system for heterogeneous multicore architectures. * * Copyright (C) 2009-2021 Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria * Copyright (C) 2020 Federal University of Rio Grande do Sul (UFRGS) * * 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. */ /*! \page CompilationConfiguration Compilation Configuration The behavior of the StarPU library and tools may be tuned thanks to the following configure options. \section CommonConfiguration Common Configuration
--enable-debug
\anchor enable-debug \addindex __configure__--enable-debug Enable debugging messages.
--enable-spinlock-check
\anchor enable-spinlock-check \addindex __configure__--enable-spinlock-check Enable checking that spinlocks are taken and released properly.
--enable-fast
\anchor enable-fast \addindex __configure__--enable-fast Disable assertion checks, which saves computation time.
--enable-verbose
\anchor enable-verbose \addindex __configure__--enable-verbose Increase the verbosity of the debugging messages. This can be disabled at runtime by setting the environment variable \ref STARPU_SILENT to any value. --enable-verbose=extra increase even more the verbosity. \verbatim $ STARPU_SILENT=1 ./vector_scal \endverbatim
--enable-coverage
\anchor enable-coverage \addindex __configure__--enable-coverage Enable flags for the coverage tool gcov.
--enable-quick-check
\anchor enable-quick-check \addindex __configure__--enable-quick-check Specify tests and examples should be run on a smaller data set, i.e allowing a faster execution time
--enable-long-check
\anchor enable-long-check \addindex __configure__--enable-long-check Enable some exhaustive checks which take a really long time.
--enable-new-check
\anchor enable-new-check \addindex __configure__--enable-new-check Enable new testcases which are known to fail.
--with-hwloc
\anchor with-hwloc \addindex __configure__--with-hwloc Specify hwloc should be used by StarPU. hwloc should be found by the means of the tool pkg-config.
--with-hwloc=prefix
\anchor with-hwloc-prefix \addindex __configure__--with-hwloc-prefix Specify hwloc should be used by StarPU. hwloc should be found in the directory specified by prefix
--without-hwloc
\anchor without-hwloc \addindex __configure__--without-hwloc Specify hwloc should not be used by StarPU.
--disable-build-doc
\anchor disable-build-doc \addindex __configure__--disable-build-doc Disable the creation of the documentation. This should be done on a machine which does not have the tools doxygen and latex (plus the packages latex-xcolor and texlive-latex-extra).
--enable-build-doc-pdf
\anchor enable-build-doc-pdf \addindex __configure__--enable-build-doc-pdf By default, only the HTML documentation is generated. Use this option to also enable the generation of the PDF documentation. This should be done on a machine which does have the tools doxygen and latex (plus the packages latex-xcolor and texlive-latex-extra).
--disable-icc
\anchor disable-icc \addindex __configure__--disable-icc Disable the usage of the ICC compiler. When found, some specific ICC examples are compiled.
--with-check-flags
\anchor with-check-flags \addindex __configure__--with-check-flags Specify flags which will be given to C, CXX and Fortran compilers when valid
Additionally, the script configure recognize many variables, which can be listed by typing ./configure --help. For example, ./configure NVCCFLAGS="-arch sm_20" adds a flag for the compilation of CUDA kernels, and NVCC_CC=gcc-5 allows to change the C++ compiler used by nvcc. \section ConfiguringWorkers Configuring Workers
--enable-blocking-drivers
\anchor enable-blocking-drivers \addindex __configure__--enable-blocking-drivers By default, StarPU keeps CPU workers awake permanently, for better reactivity. This option makes StarPU put CPU workers to real sleep when there are not enough tasks to compute.
--enable-worker-callbacks
\anchor enable-worker-callbacks \addindex __configure__--enable-worker-callbacks If blocking drivers are enabled, enable callbacks to notify an external resource manager about workers going to sleep and waking up.
--enable-maxcpus=count
\anchor enable-maxcpus \addindex __configure__--enable-maxcpus Use at most count CPU cores. This information is then available as the macro ::STARPU_MAXCPUS. The default value is auto. it allows StarPU to automatically detect the number of CPUs on the running machine. This should not be used if the running host has a different number of CPUs from the compilation node.
--enable-maxnumanodes=count
\anchor enable-maxnumanodes \addindex __configure__--enable-maxnumanodes Use at most count NUMA nodes. This information is then available as the macro ::STARPU_MAXNUMANODES.
--disable-cpu
\anchor disable-cpu \addindex __configure__--disable-cpu Disable the use of CPUs of the machine. Only GPUs etc. will be used.
--enable-maxcudadev=count
\anchor enable-maxcudadev \addindex __configure__--enable-maxcudadev Use at most count CUDA devices. This information is then available as the macro ::STARPU_MAXCUDADEVS.
--disable-cuda
\anchor disable-cuda \addindex __configure__--disable-cuda Disable the use of CUDA, even if a valid CUDA installation was detected.
--with-cuda-dir=prefix
\anchor with-cuda-dir \addindex __configure__--with-cuda-dir Search for CUDA under prefix, which should notably contain the file include/cuda.h.
--with-cuda-include-dir=dir
\anchor with-cuda-include-dir \addindex __configure__--with-cuda-include-dir Search for CUDA headers under dir, which should notably contain the file cuda.h. This defaults to /include appended to the value given to \ref with-cuda-dir "--with-cuda-dir".
--with-cuda-lib-dir=dir
\anchor with-cuda-lib-dir \addindex __configure__--with-cuda-lib-dir Search for CUDA libraries under dir, which should notably contain the CUDA shared libraries---e.g., libcuda.so. This defaults to /lib appended to the value given to \ref with-cuda-dir "--with-cuda-dir".
--disable-cuda-memcpy-peer
\anchor disable-cuda-memcpy-peer \addindex __configure__--disable-cuda-memcpy-peer Explicitly disable peer transfers when using CUDA 4.0.
--enable-maxopencldev=count
\anchor enable-maxopencldev \addindex __configure__--enable-maxopencldev Use at most count OpenCL devices. This information is then available as the macro ::STARPU_MAXOPENCLDEVS.
--disable-opencl
\anchor disable-opencl \addindex __configure__--disable-opencl Disable the use of OpenCL, even if the SDK is detected.
--with-opencl-dir=prefix
\anchor with-opencl-dir \addindex __configure__--with-opencl-dir Search for an OpenCL implementation under prefix, which should notably contain include/CL/cl.h (or include/OpenCL/cl.h on Mac OS).
--with-opencl-include-dir=dir
\anchor with-opencl-include-dir \addindex __configure__--with-opencl-include-dir Search for OpenCL headers under dir, which should notably contain CL/cl.h (or OpenCL/cl.h on Mac OS). This defaults to /include appended to the value given to \ref with-opencl-dir "--with-opencl-dir".
--with-opencl-lib-dir=dir
\anchor with-opencl-lib-dir \addindex __configure__--with-opencl-lib-dir Search for an OpenCL library under dir, which should notably contain the OpenCL shared libraries---e.g. libOpenCL.so. This defaults to /lib appended to the value given to \ref with-opencl-dir "--with-opencl-dir".
--enable-opencl-simulator
\anchor enable-opencl-simulator \addindex __configure__--enable-opencl-simulator Enable considering the provided OpenCL implementation as a simulator, i.e. use the kernel duration returned by OpenCL profiling information as wallclock time instead of the actual measured real time. This requires the SimGrid support.
--enable-maximplementations=count
\anchor enable-maximplementations \addindex __configure__--enable-maximplementations Allow for at most count codelet implementations for the same target device. This information is then available as the macro ::STARPU_MAXIMPLEMENTATIONS macro.
--enable-max-sched-ctxs=count
\anchor enable-max-sched-ctxs \addindex __configure__--enable-max-sched-ctxs Allow for at most count scheduling contexts This information is then available as the macro ::STARPU_NMAX_SCHED_CTXS.
--disable-asynchronous-copy
\anchor disable-asynchronous-copy \addindex __configure__--disable-asynchronous-copy Disable asynchronous copies between CPU and GPU devices. The AMD implementation of OpenCL is known to fail when copying data asynchronously. When using this implementation, it is therefore necessary to disable asynchronous data transfers.
--disable-asynchronous-cuda-copy
\anchor disable-asynchronous-cuda-copy \addindex __configure__--disable-asynchronous-cuda-copy Disable asynchronous copies between CPU and CUDA devices.
--disable-asynchronous-opencl-copy
\anchor disable-asynchronous-opencl-copy \addindex __configure__--disable-asynchronous-opencl-copy Disable asynchronous copies between CPU and OpenCL devices. The AMD implementation of OpenCL is known to fail when copying data asynchronously. When using this implementation, it is therefore necessary to disable asynchronous data transfers.
--disable-asynchronous-mpi-master-slave-copy
\anchor disable-asynchronous-mpi-master-slave-copy \addindex __configure__--disable-asynchronous-mpi-master-slave-copy Disable asynchronous copies between CPU and MPI Slave devices.
--enable-maxnodes=count
\anchor enable-maxnodes \addindex __configure__--enable-maxnodes Use at most count memory nodes. This information is then available as the macro ::STARPU_MAXNODES. Reducing it allows to considerably reduce memory used by StarPU data structures.
\section ExtensionConfiguration Extension Configuration
--disable-mpi
\anchor disable-mpi \addindex __configure__--disable-mpi Disable the build of libstarpumpi. By default, it is enabled when MPI is found.
--enable-mpi
\anchor enable-mpi \addindex __configure__--enable-mpi Enable the build of libstarpumpi. This is necessary when using Simgrid+MPI.
--with-mpicc=path
\anchor with-mpicc \addindex __configure__--with-mpicc Use the compiler mpicc at path, for StarPU-MPI. (\ref MPISupport).
--enable-mpi-pedantic-isend
\anchor enable-mpi-pedantic-isend \addindex __configure__--enable-mpi-pedantic-isend Before performing any MPI communication, StarPU-MPI waits for the data to be available in the main memory of the node submitting the request. For send communications, data is acquired with the mode ::STARPU_R. When enabling the pedantic mode, data are instead acquired with the ::STARPU_RW which thus ensures that there is not more than 1 concurrent MPI_Isend calls accessing the data and StarPU does not read from it from tasks during the communication.
--enable-mpi-master-slave
\anchor enable-mpi-master-slave \addindex __configure__--enable-mpi-master-slave Enable the MPI Master-Slave support. By default, it is disabled.
--with-mpi-master-slave-multiple-thread
\anchor with-mpi-master-slave-multiple-thread \addindex __configure__--with-mpi-master-slave-multiple-thread Create one thread per MPI Slave on the MPI master to manage communications.
--enable-mpi-verbose
\anchor enable-mpi-verbose \addindex __configure__--enable-mpi-verbose Increase the verbosity of the MPI debugging messages. This can be disabled at runtime by setting the environment variable \ref STARPU_SILENT to any value. --enable-mpi-verbose=extra increase even more the verbosity. \verbatim $ STARPU_SILENT=1 mpirun -np 2 ./insert_task \endverbatim
--enable-nmad
\anchor enable-nmad \addindex __configure__--enable-nmad Enable the NewMadeleine implementation for StarPU-MPI. See \ref Nmad for more details.
--disable-fortran
\anchor disable-fortran \addindex __configure__--disable-fortran Disable the fortran extension. By default, it is enabled when a fortran compiler is found.
--disable-socl
\anchor disable-socl \addindex __configure__--disable-socl Disable the SOCL extension (\ref SOCLOpenclExtensions). By default, it is enabled when an OpenCL implementation is found.
--enable-openmp
\anchor enable-openmp \addindex __configure__--enable-openmp Enable OpenMP Support (\ref OpenMPRuntimeSupport)
--enable-cluster
\anchor enable-cluster \addindex __configure__--enable-cluster Enable cluster Support (\ref ClusteringAMachine)
\section AdvancedConfiguration Advanced Configuration
--enable-perf-debug
\anchor enable-perf-debug \addindex __configure__--enable-perf-debug Enable performance debugging through gprof.
--enable-model-debug
\anchor enable-model-debug \addindex __configure__--enable-model-debug Enable performance model debugging.
--enable-fxt-lock
\anchor enable-fxt-lock \addindex __configure__--enable-fxt-lock Enable additional trace events which describes locks behaviour. This is however extremely heavy and should only be enabled when debugging insides of StarPU.
--enable-maxbuffers
\anchor enable-maxbuffers \addindex __configure__--enable-maxbuffers Define the maximum number of buffers that tasks will be able to take as parameters, then available as the macro ::STARPU_NMAXBUFS.
--enable-fxt-max-files=count
\anchor enable-fxt-max-files \addindex __configure__--enable-fxt-max-files Use at most count mpi nodes fxt files for generating traces. This information is then available as the macro ::STARPU_FXT_MAX_FILES. This information is used by FxT tools when considering multi node traces. Default value is 64.
--enable-allocation-cache
\anchor enable-allocation-cache \addindex __configure__--enable-allocation-cache Enable the use of a data allocation cache to avoid the cost of it with CUDA. Still experimental.
--enable-opengl-render
\anchor enable-opengl-render \addindex __configure__--enable-opengl-render Enable the use of OpenGL for the rendering of some examples. // TODO: rather default to enabled when detected
--enable-blas-lib=prefix
\anchor enable-blas-lib \addindex __configure__--enable-blas-lib Specify the blas library to be used by some of the examples. Librairies available : - none [default] : no BLAS library is used - atlas: use ATLAS library - goto: use GotoBLAS library - openblas: use OpenBLAS library - mkl: use MKL library (you may need to set specific CFLAGS and LDFLAGS with --with-mkl-cflags and --with-mkl-ldflags)
--enable-leveldb
\anchor enable-leveldb \addindex __configure__--enable-leveldb Enable linking with LevelDB if available
--enable-hdf5
\anchor enable-hdf5 \addindex __configure__--enable-hdf5 Enable building HDF5 support.
--with-hdf5-include-dir=path
\anchor with-hdf5-include-dir \addindex __configure__--with-hdf5-include-dir Specify the directory where is stored the header file \c hdf5.h.
--with-hdf5-lib-dir=path
\anchor with-hdf5-lib-dir \addindex __configure__--with-hdf5-lib-dir Specify the directory where is stored the library \c hdf5.
--disable-starpufft
\anchor disable-starpufft \addindex __configure__--disable-starpufft Disable the build of libstarpufft, even if fftw or cuFFT is available.
--enable-starpufft-examples
\anchor enable-starpufft-examples \addindex __configure__--enable-starpufft-examples Enable the compilation and the execution of the libstarpufft examples. By default, they are neither compiled nor checked.
--with-fxt=prefix
\anchor with-fxt \addindex __configure__--with-fxt Search for FxT under prefix. FxT (http://savannah.nongnu.org/projects/fkt) is used to generate traces of scheduling events, which can then be rendered them using ViTE (\ref Off-linePerformanceFeedback). prefix should notably contain include/fxt/fxt.h.
--with-perf-model-dir=dir
\anchor with-perf-model-dir \addindex __configure__--with-perf-model-dir Store performance models under dir, instead of the current user's home.
--with-goto-dir=prefix
\anchor with-goto-dir \addindex __configure__--with-goto-dir Search for GotoBLAS under prefix, which should notably contain libgoto.so or libgoto2.so.
--with-atlas-dir=prefix
\anchor with-atlas-dir \addindex __configure__--with-atlas-dir Search for ATLAS under prefix, which should notably contain include/cblas.h.
--with-mkl-cflags=cflags
\anchor with-mkl-cflags \addindex __configure__--with-mkl-cflags Use cflags to compile code that uses the MKL library.
--with-mkl-ldflags=ldflags
\anchor with-mkl-ldflags \addindex __configure__--with-mkl-ldflags Use ldflags when linking code that uses the MKL library. Note that the MKL website (http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/) provides a script to determine the linking flags.
--disable-glpk
\anchor disable-glpk \addindex __configure__--disable-glpk Disable the use of libglpk for computing area bounds.
--disable-build-tests
\anchor disable-build-tests \addindex __configure__--disable-build-tests Disable the build of tests.
--disable-build-examples
\anchor disable-build-examples \addindex __configure__--disable-build-examples Disable the build of examples.
--enable-sc-hypervisor
\anchor enable-sc-hypervisor \addindex __configure__--enable-sc-hypervisor Enable the Scheduling Context Hypervisor plugin (\ref SchedulingContextHypervisor). By default, it is disabled.
--enable-memory-stats
\anchor enable-memory-stats \addindex __configure__--enable-memory-stats Enable memory statistics (\ref MemoryFeedback).
--enable-simgrid
\anchor enable-simgrid \addindex __configure__--enable-simgrid Enable simulation of execution in SimGrid, to allow easy experimentation with various numbers of cores and GPUs, or amount of memory, etc. Experimental. The path to SimGrid can be specified through the SIMGRID_CFLAGS and SIMGRID_LIBS environment variables, for instance: \verbatim export SIMGRID_CFLAGS="-I/usr/local/simgrid/include" export SIMGRID_LIBS="-L/usr/local/simgrid/lib -lsimgrid" \endverbatim
--with-simgrid-dir
\anchor with-simgrid-dir \addindex __configure__--with-simgrid-dir Similar to the option \ref enable-simgrid "--enable-simgrid" but also allows to specify the location to the SimGrid library.
--with-simgrid-include-dir
\anchor with-simgrid-include-dir \addindex __configure__--with-simgrid-include-dir Similar to the option \ref enable-simgrid "--enable-simgrid" but also allows to specify the location to the SimGrid include directory.
--with-simgrid-lib-dir
\anchor with-simgrid-lib-dir \addindex __configure__--with-simgrid-lib-dir Similar to the option \ref enable-simgrid "--enable-simgrid" but also allows to specify the location to the SimGrid lib directory.
--with-smpirun=path
\anchor with-smpirun \addindex __configure__--with-smpirun Use the smpirun at path
--enable-simgrid-mc
\anchor enable-simgrid-mc \addindex __configure__--enable-simgrid-mc Enable the Model Checker in simulation of execution in SimGrid, to allow exploring various execution paths.
--enable-calibration-heuristic
\anchor enable-calibration-heuristic \addindex __configure__--enable-calibration-heuristic Allow to set the maximum authorized percentage of deviation for the history-based calibrator of StarPU. A correct value of this parameter must be in [0..100]. The default value of this parameter is 10. Experimental.
--enable-mlr
\anchor enable-mlr \addindex __configure__--enable-mlr Allow to enable multiple linear regression models (see \ref PerformanceModelExample)
--enable-mlr-system-blas
\anchor enable-mlr-system-blas \addindex __configure__--enable-mlr-system-blas Allow to make multiple linear regression models use the system-provided BLAS for dgels (see \ref PerformanceModelExample)
*/