/* StarPU --- Runtime system for heterogeneous multicore architectures.
 *
 * Copyright (C) 2010-2017                                CNRS
 * Copyright (C) 2009-2011,2014                           Université de Bordeaux
 * Copyright (C) 2011-2012                                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
 * 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.
 */

/*! \defgroup API_Implicit_Data_Dependencies Implicit Data Dependencies

\brief In this section, we describe how StarPU makes it possible to
insert implicit task dependencies in order to enforce sequential data
consistency. When this data consistency is enabled on a specific data
handle, any data access will appear as sequentially consistent from
the application. For instance, if the application submits two tasks
that access the same piece of data in read-only mode, and then a third
task that access it in write mode, dependencies will be added between
the two first tasks and the third one. Implicit data dependencies are
also inserted in the case of data accesses from the application.

\fn void starpu_data_set_default_sequential_consistency_flag(unsigned flag)
\ingroup API_Implicit_Data_Dependencies
Set the default sequential consistency flag. If a non-zero
value is passed, a sequential data consistency will be enforced for
all handles registered after this function call, otherwise it is
disabled. By default, StarPU enables sequential data consistency. It
is also possible to select the data consistency mode of a specific
data handle with the function
starpu_data_set_sequential_consistency_flag().

\fn unsigned starpu_data_get_default_sequential_consistency_flag(void)
\ingroup API_Implicit_Data_Dependencies
Return the default sequential consistency flag

\fn void starpu_data_set_sequential_consistency_flag(starpu_data_handle_t handle, unsigned flag)
\ingroup API_Implicit_Data_Dependencies
Set the data consistency mode associated to a data handle. The
consistency mode set using this function has the priority over the
default mode which can be set with
starpu_data_set_default_sequential_consistency_flag().

\fn unsigned starpu_data_get_sequential_consistency_flag(starpu_data_handle_t handle)
\ingroup API_Implicit_Data_Dependencies
Get the data consistency mode associated to the data handle \p handle

*/