Prechádzať zdrojové kódy

The starpu_data_{set,get}_default_sequential_consistency_flag functions make it
possible to select the default data consistency mode, so that it is possible to
specify that all handle will use the same policy.
NB: This is only provided for convenience and should not be used to write code
that may be integrated with other libraries written in StarPU.

Cédric Augonnet 15 rokov pred
rodič
commit
0f9bbf7ee1

+ 2 - 0
include/starpu_data.h

@@ -69,6 +69,8 @@ unsigned starpu_worker_get_memory_node(unsigned workerid);
 void starpu_data_set_wb_mask(starpu_data_handle state, uint32_t wb_mask);
 
 void starpu_data_set_sequential_consistency_flag(starpu_data_handle handle, unsigned flag);
+unsigned starpu_data_get_default_sequential_consistency_flag(void);
+void starpu_data_set_default_sequential_consistency_flag(unsigned flag);
 
 unsigned starpu_data_test_if_allocated_on_node(starpu_data_handle handle, uint32_t memory_node);
 

+ 4 - 0
mpi/examples/mpi_lu/plu_example.c

@@ -419,6 +419,10 @@ int main(int argc, char **argv)
 	STARPU_ASSERT(p*q == world_size);
 
 	starpu_init(NULL);
+
+	/* We disable sequential consistency in this example */
+	starpu_data_set_default_sequential_consistency_flag(0);
+
 	starpu_mpi_initialize();
 	starpu_helper_cublas_init();
 

+ 2 - 1
src/datawizard/interfaces/data_interface.c

@@ -42,7 +42,8 @@ static void _starpu_register_new_data(starpu_data_handle handle,
 
 	handle->is_not_important = 0;
 
-	handle->sequential_consistency = 1; /* enabled by default */
+	handle->sequential_consistency =
+		starpu_data_get_default_sequential_consistency_flag();
 
 	PTHREAD_MUTEX_INIT(&handle->sequential_consistency_mutex, NULL);
 	handle->last_submitted_mode = STARPU_R;

+ 13 - 0
src/datawizard/user_interactions.c

@@ -361,3 +361,16 @@ void starpu_data_set_sequential_consistency_flag(starpu_data_handle handle, unsi
 
 	_starpu_spin_unlock(&handle->header_lock);
 }
+
+/* By default, sequential consistency is enabled */
+static unsigned default_sequential_consistency_flag = 1;
+
+unsigned starpu_data_get_default_sequential_consistency_flag(void)
+{
+	return default_sequential_consistency_flag;
+}
+
+void starpu_data_set_default_sequential_consistency_flag(unsigned flag)
+{
+	default_sequential_consistency_flag = flag;
+}