Bladeren bron

The footprint method of the data_interface_ops_t structure now only takes a
handle and no "current state" argument.

Cédric Augonnet 15 jaren geleden
bovenliggende
commit
cf4df79338

+ 7 - 2
src/datawizard/footprint.c

@@ -15,6 +15,7 @@
  */
 
 #include <datawizard/footprint.h>
+#include <common/hash.h>
 
 void compute_buffers_footprint(job_t j)
 {
@@ -30,7 +31,9 @@ void compute_buffers_footprint(job_t j)
 		STARPU_ASSERT(handle->ops);
 		STARPU_ASSERT(handle->ops->footprint);
 
-		footprint = handle->ops->footprint(handle, footprint);
+		uint32_t handle_footprint = handle->ops->footprint(handle);
+
+		footprint = crc32_be(handle_footprint, footprint);
 	}
 
 	j->footprint = footprint;
@@ -41,5 +44,7 @@ inline uint32_t compute_data_footprint(starpu_data_handle handle)
 {
 	uint32_t interfaceid = (uint32_t)starpu_get_handle_interface_id(handle);
 
-	return handle->ops->footprint(handle, interfaceid);
+	uint32_t handle_footprint = handle->ops->footprint(handle);
+
+	return crc32_be(handle_footprint, interfaceid);
 }

+ 5 - 11
src/datawizard/interfaces/bcsr_interface.c

@@ -51,7 +51,7 @@ static void register_bcsr_handle(starpu_data_handle handle, uint32_t home_node,
 static size_t allocate_bcsr_buffer_on_node(starpu_data_handle handle, uint32_t dst_node);
 static void liberate_bcsr_buffer_on_node(void *interface, uint32_t node);
 static size_t bcsr_interface_get_size(starpu_data_handle handle);
-static uint32_t footprint_bcsr_interface_crc32(starpu_data_handle handle, uint32_t hstate);
+static uint32_t footprint_bcsr_interface_crc32(starpu_data_handle handle);
 
 struct data_interface_ops_t interface_bcsr_ops = {
 	.register_data_handle = register_bcsr_handle,
@@ -114,23 +114,17 @@ void starpu_register_bcsr_data(starpu_data_handle *handleptr, uint32_t home_node
 	register_data_handle(handleptr, home_node, &interface, &interface_bcsr_ops);
 }
 
-static inline uint32_t footprint_bcsr_interface_generic(uint32_t (*hash_func)(uint32_t input, uint32_t hstate), starpu_data_handle handle, uint32_t hstate)
+static uint32_t footprint_bcsr_interface_crc32(starpu_data_handle handle)
 {
 	uint32_t hash;
 
-	hash = hstate;
-	hash = hash_func(starpu_get_bcsr_nnz(handle), hash);
-	hash = hash_func(starpu_get_bcsr_c(handle), hash);
-	hash = hash_func(starpu_get_bcsr_r(handle), hash);
+	hash = crc32_be(starpu_get_bcsr_nnz(handle), 0);
+	hash = crc32_be(starpu_get_bcsr_c(handle), hash);
+	hash = crc32_be(starpu_get_bcsr_r(handle), hash);
 
 	return hash;
 }
 
-static uint32_t footprint_bcsr_interface_crc32(starpu_data_handle handle, uint32_t hstate)
-{
-	return footprint_bcsr_interface_generic(crc32_be, handle, hstate);
-}
-
 /* offer an access to the data parameters */
 uint32_t starpu_get_bcsr_nnz(starpu_data_handle handle)
 {

+ 3 - 14
src/datawizard/interfaces/blas_interface.c

@@ -58,7 +58,7 @@ static void register_blas_handle(starpu_data_handle handle, uint32_t home_node,
 static size_t allocate_blas_buffer_on_node(starpu_data_handle handle, uint32_t dst_node);
 static void liberate_blas_buffer_on_node(void *interface, uint32_t node);
 static size_t blas_interface_get_size(starpu_data_handle handle);
-static uint32_t footprint_blas_interface_crc32(starpu_data_handle handle, uint32_t hstate);
+static uint32_t footprint_blas_interface_crc32(starpu_data_handle handle);
 static void display_blas_interface(starpu_data_handle handle, FILE *f);
 #ifdef USE_GORDON
 static int convert_blas_to_gordon(void *interface, uint64_t *ptr, gordon_strideSize_t *ss); 
@@ -138,20 +138,9 @@ void starpu_register_blas_data(starpu_data_handle *handleptr, uint32_t home_node
 	register_data_handle(handleptr, home_node, &interface, &interface_blas_ops);
 }
 
-static inline uint32_t footprint_blas_interface_generic(uint32_t (*hash_func)(uint32_t input, uint32_t hstate), starpu_data_handle handle, uint32_t hstate)
+static uint32_t footprint_blas_interface_crc32(starpu_data_handle handle)
 {
-	uint32_t hash;
-
-	hash = hstate;
-	hash = hash_func(starpu_get_blas_nx(handle), hash);
-	hash = hash_func(starpu_get_blas_ny(handle), hash);
-
-	return hash;
-}
-
-static uint32_t footprint_blas_interface_crc32(starpu_data_handle handle, uint32_t hstate)
-{
-	return footprint_blas_interface_generic(crc32_be, handle, hstate);
+	return crc32_be(starpu_get_blas_nx(handle), starpu_get_blas_ny(handle));
 }
 
 static void display_blas_interface(starpu_data_handle handle, FILE *f)

+ 5 - 6
src/datawizard/interfaces/block_interface.c

@@ -52,7 +52,7 @@ static void register_block_handle(starpu_data_handle handle, uint32_t home_node,
 static size_t allocate_block_buffer_on_node(starpu_data_handle handle, uint32_t dst_node);
 static void liberate_block_buffer_on_node(void *interface, uint32_t node);
 static size_t block_interface_get_size(starpu_data_handle handle);
-static uint32_t footprint_block_interface_crc32(starpu_data_handle handle, uint32_t hstate);
+static uint32_t footprint_block_interface_crc32(starpu_data_handle handle);
 static void display_block_interface(starpu_data_handle handle, FILE *f);
 #ifdef USE_GORDON
 static int convert_block_to_gordon(void *interface, uint64_t *ptr, gordon_strideSize_t *ss);
@@ -129,21 +129,20 @@ void starpu_register_block_data(starpu_data_handle *handleptr, uint32_t home_nod
 	register_data_handle(handleptr, home_node, &interface, &interface_block_ops);
 }
 
-static inline uint32_t footprint_block_interface_generic(uint32_t (*hash_func)(uint32_t input, uint32_t hstate), starpu_data_handle handle, uint32_t hstate)
+static inline uint32_t footprint_block_interface_generic(uint32_t (*hash_func)(uint32_t input, uint32_t hstate), starpu_data_handle handle)
 {
 	uint32_t hash;
 
-	hash = hstate;
-	hash = hash_func(starpu_get_block_nx(handle), hash);
+	hash = hash_func(starpu_get_block_nx(handle), 0);
 	hash = hash_func(starpu_get_block_ny(handle), hash);
 	hash = hash_func(starpu_get_block_nz(handle), hash);
 
 	return hash;
 }
 
-static uint32_t footprint_block_interface_crc32(starpu_data_handle handle, uint32_t hstate)
+static uint32_t footprint_block_interface_crc32(starpu_data_handle handle)
 {
-	return footprint_block_interface_generic(crc32_be, handle, hstate);
+	return footprint_block_interface_generic(crc32_be, handle);
 }
 
 static void display_block_interface(starpu_data_handle handle, FILE *f)

+ 3 - 13
src/datawizard/interfaces/csr_interface.c

@@ -47,7 +47,7 @@ static void register_csr_handle(starpu_data_handle handle, uint32_t home_node, v
 static size_t allocate_csr_buffer_on_node(starpu_data_handle handle, uint32_t dst_node);
 static void liberate_csr_buffer_on_node(void *interface, uint32_t node);
 static size_t csr_interface_get_size(starpu_data_handle handle);
-static uint32_t footprint_csr_interface_crc32(starpu_data_handle handle, uint32_t hstate);
+static uint32_t footprint_csr_interface_crc32(starpu_data_handle handle);
 
 struct data_interface_ops_t interface_csr_ops = {
 	.register_data_handle = register_csr_handle,
@@ -106,19 +106,9 @@ void starpu_register_csr_data(starpu_data_handle *handleptr, uint32_t home_node,
 	register_data_handle(handleptr, home_node, &interface, &interface_csr_ops);
 }
 
-static inline uint32_t footprint_csr_interface_generic(uint32_t (*hash_func)(uint32_t input, uint32_t hstate), starpu_data_handle handle, uint32_t hstate)
+static uint32_t footprint_csr_interface_crc32(starpu_data_handle handle)
 {
-	uint32_t hash;
-
-	hash = hstate;
-	hash = hash_func(starpu_get_csr_nnz(handle), hash);
-
-	return hash;
-}
-
-static uint32_t footprint_csr_interface_crc32(starpu_data_handle handle, uint32_t hstate)
-{
-	return footprint_csr_interface_generic(crc32_be, handle, hstate);
+	return crc32_be(starpu_get_csr_nnz(handle), 0);
 }
 
 /* offer an access to the data parameters */

+ 1 - 1
src/datawizard/interfaces/data_interface.h

@@ -33,7 +33,7 @@ struct data_interface_ops_t {
 	void (*liberate_data_on_node)(void *interface, uint32_t node);
 	const struct copy_data_methods_s *copy_methods;
 	size_t (*get_size)(starpu_data_handle handle);
-	uint32_t (*footprint)(starpu_data_handle handle, uint32_t hstate);
+	uint32_t (*footprint)(starpu_data_handle handle);
 	void (*display)(starpu_data_handle handle, FILE *f);
 #ifdef USE_GORDON
 	int (*convert_to_gordon)(void *interface, uint64_t *ptr, gordon_strideSize_t *ss); 

+ 1 - 1
src/datawizard/interfaces/vector_filters.c

@@ -131,7 +131,6 @@ void starpu_list_filter_func_vector(starpu_filter *f, starpu_data_handle root_ha
 	starpu_vector_interface_t *vector_root =
 		starpu_data_get_interface_on_node(root_handle, 0);
 
-	uint32_t nx = vector_root->nx;
 	size_t elemsize = vector_root->elemsize;
 
 	/* first allocate the children data_state */
@@ -168,5 +167,6 @@ void starpu_list_filter_func_vector(starpu_filter *f, starpu_data_handle root_ha
 		current_pos += chunk_size;
 	}
 
+	__attribute__ ((unused)) uint32_t nx = vector_root->nx;
 	STARPU_ASSERT(current_pos == nx);
 }

+ 3 - 13
src/datawizard/interfaces/vector_interface.c

@@ -56,7 +56,7 @@ static void register_vector_handle(starpu_data_handle handle, uint32_t home_node
 static size_t allocate_vector_buffer_on_node(starpu_data_handle handle, uint32_t dst_node);
 static void liberate_vector_buffer_on_node(void *interface, uint32_t node);
 static size_t vector_interface_get_size(starpu_data_handle handle);
-static uint32_t footprint_vector_interface_crc32(starpu_data_handle handle, uint32_t hstate);
+static uint32_t footprint_vector_interface_crc32(starpu_data_handle handle);
 static void display_vector_interface(starpu_data_handle handle, FILE *f);
 #ifdef USE_GORDON
 static int convert_vector_to_gordon(void *interface, uint64_t *ptr, gordon_strideSize_t *ss); 
@@ -125,19 +125,9 @@ void starpu_register_vector_data(starpu_data_handle *handleptr, uint32_t home_no
 }
 
 
-static inline uint32_t footprint_vector_interface_generic(uint32_t (*hash_func)(uint32_t input, uint32_t hstate), starpu_data_handle handle, uint32_t hstate)
+static uint32_t footprint_vector_interface_crc32(starpu_data_handle handle)
 {
-	uint32_t hash;
-
-	hash = hstate;
-	hash = hash_func(starpu_get_vector_nx(handle), hash);
-
-	return hash;
-}
-
-uint32_t footprint_vector_interface_crc32(starpu_data_handle handle, uint32_t hstate)
-{
-	return footprint_vector_interface_generic(crc32_be, handle, hstate);
+	return crc32_be(starpu_get_vector_nx(handle), 0);
 }
 
 static void display_vector_interface(starpu_data_handle handle, FILE *f)