123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- /*
- * This file is part of the StarPU Handbook.
- * Copyright (C) 2009--2011 Universit@'e de Bordeaux 1
- * Copyright (C) 2010, 2011, 2012, 2013 Centre National de la Recherche Scientifique
- * Copyright (C) 2011, 2012 Institut National de Recherche en Informatique et Automatique
- * See the file version.doxy for copying conditions.
- */
- /*! \defgroup API_Initialization_and_Termination Initialization and Termination
- \struct starpu_driver
- structure for a driver
- \ingroup API_Initialization_and_Termination
- \var starpu_driver::type
- The type of the driver. Only ::STARPU_CPU_WORKER,
- ::STARPU_CUDA_WORKER and ::STARPU_OPENCL_WORKER are currently supported.
- \var starpu_driver::id
- The identifier of the driver.
- \struct starpu_vector_interface
- vector interface for contiguous (non-strided) buffers
- \ingroup API_Initialization_and_Termination
- \struct starpu_conf
- \ingroup API_Initialization_and_Termination
- This structure is passed to the starpu_init() function in order to
- configure StarPU. It has to be initialized with starpu_conf_init().
- When the default value is used, StarPU automatically selects the
- number of processing units and takes the default scheduling policy.
- The environment variables overwrite the equivalent parameters.
- \var starpu_conf::magic
- \private
- Will be initialized by starpu_conf_init(). Should not be set by hand.
- \var starpu_conf::sched_policy_name
- This is the name of the scheduling policy. This can also be specified
- with the environment variable \ref STARPU_SCHED. (default = NULL).
- \var starpu_conf::sched_policy
- This is the definition of the scheduling policy. This field is ignored
- if starpu_conf::sched_policy_name is set. (default = NULL)
- \var starpu_conf::ncpus
- This is the number of CPU cores that StarPU can use. This can also be
- specified with the environment variable \ref STARPU_NCPU . (default = -1)
- \var starpu_conf::ncuda
- This is the number of CUDA devices that StarPU can use. This can also
- be specified with the environment variable \ref STARPU_NCUDA. (default =
- -1)
- \var starpu_conf::nopencl
- This is the number of OpenCL devices that StarPU can use. This can
- also be specified with the environment variable \ref STARPU_NOPENCL.
- (default = -1)
- \var starpu_conf::nmic
- This is the number of MIC devices that StarPU can use. This can also
- be specified with the environment variable \ref STARPU_NMIC.
- (default = -1)
- \var starpu_conf::nscc
- This is the number of SCC devices that StarPU can use. This can also
- be specified with the environment variable \ref STARPU_NSCC.
- (default = -1)
- \var starpu_conf::use_explicit_workers_bindid
- If this flag is set, the starpu_conf::workers_bindid array indicates
- where the different workers are bound, otherwise StarPU automatically
- selects where to bind the different workers. This can also be
- specified with the environment variable \ref STARPU_WORKERS_CPUID. (default = 0)
- \var starpu_conf::workers_bindid
- If the starpu_conf::use_explicit_workers_bindid flag is set, this
- array indicates where to bind the different workers. The i-th entry of
- the starpu_conf::workers_bindid indicates the logical identifier of
- the processor which should execute the i-th worker. Note that the
- logical ordering of the CPUs is either determined by the OS, or
- provided by the hwloc library in case it is available.
- \var starpu_conf::use_explicit_workers_cuda_gpuid
- If this flag is set, the CUDA workers will be attached to the CUDA
- devices specified in the starpu_conf::workers_cuda_gpuid array.
- Otherwise, StarPU affects the CUDA devices in a round-robin fashion.
- This can also be specified with the environment variable \ref
- STARPU_WORKERS_CUDAID. (default = 0)
- \var starpu_conf::workers_cuda_gpuid
- If the starpu_conf::use_explicit_workers_cuda_gpuid flag is set, this
- array contains the logical identifiers of the CUDA devices (as used by
- cudaGetDevice()).
- \var starpu_conf::use_explicit_workers_opencl_gpuid
- If this flag is set, the OpenCL workers will be attached to the OpenCL
- devices specified in the starpu_conf::workers_opencl_gpuid array.
- Otherwise, StarPU affects the OpenCL devices in a round-robin fashion.
- This can also be specified with the environment variable \ref
- STARPU_WORKERS_OPENCLID. (default = 0)
- \var starpu_conf::workers_opencl_gpuid
- If the starpu_conf::use_explicit_workers_opencl_gpuid flag is set,
- this array contains the logical identifiers of the OpenCL devices to
- be used.
- \var starpu_conf::use_explicit_workers_mic_deviceid
- If this flag is set, the MIC workers will be attached to the MIC
- devices specified in the array starpu_conf::workers_mic_deviceid.
- Otherwise, StarPU affects the MIC devices in a round-robin fashion.
- This can also be specified with the environment variable \ref
- STARPU_WORKERS_MICID.
- (default = 0)
- \var starpu_conf::workers_mic_deviceid
- If the flag starpu_conf::use_explicit_workers_mic_deviceid is set, the
- array contains the logical identifiers of the MIC devices to be used.
- \var starpu_conf::use_explicit_workers_scc_deviceid
- If this flag is set, the SCC workers will be attached to the SCC
- devices specified in the array starpu_conf::workers_scc_deviceid.
- (default = 0)
- \var starpu_conf::workers_scc_deviceid
- If the flag starpu_conf::use_explicit_workers_scc_deviceid is set, the
- array contains the logical identifiers of the SCC devices to be used.
- Otherwise, StarPU affects the SCC devices in a round-robin fashion.
- This can also be specified with the environment variable \ref
- STARPU_WORKERS_SCCID.
- \var starpu_conf::bus_calibrate
- If this flag is set, StarPU will recalibrate the bus. If this value
- is equal to <c>-1</c>, the default value is used. This can also be
- specified with the environment variable \ref STARPU_BUS_CALIBRATE. (default
- = 0)
- \var starpu_conf::calibrate
- If this flag is set, StarPU will calibrate the performance models when
- executing tasks. If this value is equal to <c>-1</c>, the default
- value is used. If the value is equal to <c>1</c>, it will force
- continuing calibration. If the value is equal to <c>2</c>, the
- existing performance models will be overwritten. This can also be
- specified with the environment variable \ref STARPU_CALIBRATE. (default =
- 0)
- \var starpu_conf::single_combined_worker
- By default, StarPU executes parallel tasks
- concurrently. Some parallel libraries (e.g. most OpenMP
- implementations) however do not support concurrent calls to
- parallel code. In such case, setting this flag makes StarPU
- only start one parallel task at a time (but other CPU and
- GPU tasks are not affected and can be run concurrently).
- The parallel task scheduler will however still however
- still try varying combined worker sizes to look for the
- most efficient ones. This can also be specified with the environment
- variable \ref STARPU_SINGLE_COMBINED_WORKER.
- (default = 0)
- \var starpu_conf::mic_sink_program_path
- Path to the kernel to execute on the MIC device, compiled for MIC
- architecture. When set to NULL, StarPU automatically looks next to the
- host program location.
- (default = NULL)
- \var starpu_conf::disable_asynchronous_copy
- This flag should be set to 1 to disable
- asynchronous copies between CPUs and all accelerators. This
- can also be specified with the environment variable \ref
- STARPU_DISABLE_ASYNCHRONOUS_COPY. 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.
- This can also be specified at compilation time by giving to
- the configure script the option
- \ref disable-asynchronous-copy "--disable-asynchronous-copy". (default = 0)
- \var starpu_conf::disable_asynchronous_cuda_copy
- This flag should be set to 1 to disable
- asynchronous copies between CPUs and CUDA accelerators.
- This can also be specified with the environment variable
- \ref STARPU_DISABLE_ASYNCHRONOUS_CUDA_COPY.
- This can also be specified at compilation time by giving to
- the configure script the option
- \ref disable-asynchronous-cuda-copy "--disable-asynchronous-cuda-copy". (default = 0)
- \var starpu_conf::disable_asynchronous_opencl_copy
- This flag should be set to 1 to disable
- asynchronous copies between CPUs and OpenCL accelerators.
- This can also be specified with the environment
- variable \ref STARPU_DISABLE_ASYNCHRONOUS_OPENCL_COPY. 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. This can also be specified at
- compilation time by giving to the configure script the
- option \ref disable-asynchronous-opencl-copy "--disable-asynchronous-opencl-copy".
- (default = 0)
- \var starpu_conf::disable_asynchronous_mic_copy
- This flag should be set to 1 to disable asynchronous copies between
- CPUs and MIC accelerators. This can also be specified with the
- environment variable \ref STARPU_DISABLE_ASYNCHRONOUS_MIC_COPY.
- This can also be specified at compilation time by giving to the
- configure script the option \ref disable-asynchronous-mic-copy "--disable-asynchronous-mic-copy".
- (default = 0).
- \var starpu_conf::cuda_opengl_interoperability
- Enable CUDA/OpenGL interoperation on these CUDA
- devices. This can be set to an array of CUDA device
- identifiers for which cudaGLSetGLDevice() should be called
- instead of cudaSetDevice(). Its size is specified by the
- starpu_conf::n_cuda_opengl_interoperability field below
- (default = NULL)
- \var starpu_conf::n_cuda_opengl_interoperability
- \var starpu_conf::not_launched_drivers
- Array of drivers that should not be launched by
- StarPU. The application will run in one of its own
- threads. (default = NULL)
- \var starpu_conf::n_not_launched_drivers
- The number of StarPU drivers that should not be
- launched by StarPU. (default = 0)
- \var starpu_conf::trace_buffer_size
- Specifies the buffer size used for FxT tracing.
- Starting from FxT version 0.2.12, the buffer will
- automatically be flushed when it fills in, but it may still
- be interesting to specify a bigger value to avoid any
- flushing (which would disturb the trace).
- \fn int starpu_init(struct starpu_conf *conf)
- \ingroup API_Initialization_and_Termination
- This is StarPU initialization method, which must be called prior to
- any other StarPU call. It is possible to specify StarPU’s
- configuration (e.g. scheduling policy, number of cores, ...) by
- passing a non-null argument. Default configuration is used if the
- passed argument is NULL. Upon successful completion, this function
- returns 0. Otherwise, -ENODEV indicates that no worker was available
- (so that StarPU was not initialized).
- \fn int starpu_initialize(struct starpu_conf *user_conf, int *argc, char ***argv)
- \ingroup API_Initialization_and_Termination
- This is the same as starpu_init(), but also takes the \p argc and \p
- argv as defined by the application. This is needed for SCC execution
- to initialize the communication library.
- Do not call starpu_init() and starpu_initialize() in the
- same program.
- \fn int starpu_conf_init(struct starpu_conf *conf)
- \ingroup API_Initialization_and_Termination
- This function initializes the conf structure passed as argument with
- the default values. In case some configuration parameters are already
- specified through environment variables, starpu_conf_init() initializes
- the fields of the structure according to the environment variables.
- For instance if \ref STARPU_CALIBRATE is set, its value is put in the
- field starpu_conf::calibrate of the structure passed as argument. Upon successful
- completion, this function returns 0. Otherwise, -EINVAL indicates that
- the argument was NULL.
- \fn void starpu_shutdown(void)
- \ingroup API_Initialization_and_Termination
- This is StarPU termination method. It must be called at the end of the
- application: statistics and other post-mortem debugging information
- are not guaranteed to be available until this method has been called.
- \fn void starpu_pause(void)
- \ingroup API_Initialization_and_Termination
- This call is used to suspend the processing of new tasks by
- workers. It can be used in a program where StarPU is used during only
- a part of the execution. Without this call, the workers continue to
- poll for new tasks in a tight loop, wasting CPU time. The symmetric
- call to \ref starpu_resume() should be used to unfreeze the workers.
- \fn vois starpu_resume(void)
- This is the symmetrical call to \ref starpu_pause(), used to resume
- the workers polling for new tasks.
- \fn int starpu_asynchronous_copy_disabled(void)
- \ingroup API_Initialization_and_Termination
- Return 1 if asynchronous data transfers between CPU and accelerators
- are disabled.
- \fn int starpu_asynchronous_cuda_copy_disabled(void)
- \ingroup API_Initialization_and_Termination
- Return 1 if asynchronous data transfers between CPU and CUDA
- accelerators are disabled.
- \fn int starpu_asynchronous_opencl_copy_disabled(void)
- \ingroup API_Initialization_and_Termination
- Return 1 if asynchronous data transfers between CPU and OpenCL
- accelerators are disabled.
- \fn void starpu_topology_print(FILE *f)
- \ingroup API_Initialization_and_Termination
- Prints a description of the topology on f.
- */
|