Parcourir la source

Fix NUMA case when pack/unpack data and fix size in test disk_copy_unpack

Corentin Salingue il y a 7 ans
Parent
commit
c52e04efb1

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

@@ -22,6 +22,7 @@
 #include <datawizard/copy_driver.h>
 #include <datawizard/filters.h>
 #include <datawizard/memory_nodes.h>
+#include <datawizard/malloc.h>
 #include <starpu_hash.h>
 
 #include <starpu_cuda.h>
@@ -424,7 +425,7 @@ static int pack_data(starpu_data_handle_t handle, unsigned node, void **ptr, sta
 
 	if (ptr != NULL)
 	{
-		starpu_malloc_flags(ptr, *count, 0);
+		_starpu_malloc_flags_on_node(node, ptr, *count, 0);
 		char *tmp = *ptr;
 		memcpy(tmp, (void*)bcsr->colind, bcsr->nnz * sizeof(bcsr->colind[0]));
 		tmp += bcsr->nnz * sizeof(bcsr->colind[0]);

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

@@ -21,6 +21,7 @@
 #include <datawizard/copy_driver.h>
 #include <datawizard/filters.h>
 #include <datawizard/memory_nodes.h>
+#include <datawizard/malloc.h>
 
 #include <starpu_hash.h>
 
@@ -236,7 +237,7 @@ static int pack_block_handle(starpu_data_handle_t handle, unsigned node, void **
 		uint32_t z, y;
 		char *block = (void *)block_interface->ptr;
 
-		starpu_malloc_flags(ptr, *count, 0);
+		_starpu_malloc_flags_on_node(node, ptr, *count, 0);
 
 		char *cur = *ptr;
 		for(z=0 ; z<block_interface->nz ; z++)

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

@@ -22,6 +22,7 @@
 #include <datawizard/copy_driver.h>
 #include <datawizard/filters.h>
 #include <datawizard/memory_nodes.h>
+#include <datawizard/malloc.h>
 
 #include <starpu_hash.h>
 
@@ -362,7 +363,7 @@ static int pack_data(starpu_data_handle_t handle, unsigned node, void **ptr, sta
 
 	if (ptr != NULL)
 	{
-		starpu_malloc_flags(ptr, *count, 0);
+		_starpu_malloc_flags_on_node(node, ptr, *count, 0);
 		char *tmp = *ptr;
 		memcpy(tmp, (void*)csr->colind, csr->nnz * sizeof(csr->colind[0]));
 		tmp += csr->nnz * sizeof(csr->colind[0]);

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

@@ -21,12 +21,13 @@
 
 #include <datawizard/datawizard.h>
 #include <datawizard/memory_nodes.h>
+#include <datawizard/memstats.h>
+#include <datawizard/malloc.h>
 #include <core/dependencies/data_concurrency.h>
 #include <common/uthash.h>
 #include <common/starpu_spinlock.h>
 #include <core/task.h>
 #include <core/workers.h>
-#include <datawizard/memstats.h>
 #ifdef STARPU_OPENMP
 #include <util/openmp_runtime_support.h>
 #endif
@@ -1067,7 +1068,7 @@ int starpu_data_unpack(starpu_data_handle_t handle, void *ptr, size_t count)
 	STARPU_ASSERT_MSG(handle->ops->unpack_data, "The datatype interface %s (%d) does not have an unpack operation", handle->ops->name, handle->ops->interfaceid);
 	int ret;
 	ret = handle->ops->unpack_data(handle, _starpu_memory_node_get_local_key(), ptr, count);
-	starpu_free_flags(ptr, count, 0);
+	_starpu_free_flags_on_node(_starpu_memory_node_get_local_key(), ptr, count, 0);
 	return ret;
 }
 

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

@@ -21,6 +21,7 @@
 #include <datawizard/copy_driver.h>
 #include <datawizard/filters.h>
 #include <datawizard/memory_nodes.h>
+#include <datawizard/malloc.h>
 #include <starpu_hash.h>
 #include <starpu_cuda.h>
 #include <starpu_opencl.h>
@@ -238,7 +239,7 @@ static int pack_matrix_handle(starpu_data_handle_t handle, unsigned node, void *
 		uint32_t y;
 		char *matrix = (void *)matrix_interface->ptr;
 
-		starpu_malloc_flags(ptr, *count, 0);
+		_starpu_malloc_flags_on_node(node, ptr, *count, 0);
 
 		char *cur = *ptr;
 		for(y=0 ; y<matrix_interface->ny ; y++)

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

@@ -21,6 +21,7 @@
 #include <datawizard/copy_driver.h>
 #include <datawizard/filters.h>
 #include <datawizard/memory_nodes.h>
+#include <datawizard/malloc.h>
 #include <starpu_hash.h>
 #include <starpu_cuda.h>
 #include <starpu_opencl.h>
@@ -172,7 +173,7 @@ static int pack_variable_handle(starpu_data_handle_t handle, unsigned node, void
 
 	if (ptr != NULL)
 	{
-		starpu_malloc_flags(ptr, *count, 0);
+		_starpu_malloc_flags_on_node(node, ptr, *count, 0);
 		memcpy(*ptr, (void*)variable_interface->ptr, variable_interface->elemsize);
 	}
 

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

@@ -22,6 +22,7 @@
 #include <datawizard/copy_driver.h>
 #include <datawizard/filters.h>
 #include <datawizard/memory_nodes.h>
+#include <datawizard/malloc.h>
 #include <starpu_hash.h>
 #include <starpu_cuda.h>
 #include <starpu_opencl.h>
@@ -181,7 +182,7 @@ static int pack_vector_handle(starpu_data_handle_t handle, unsigned node, void *
 
 	if (ptr != NULL)
 	{
-		starpu_malloc_flags(ptr, *count, 0);
+		_starpu_malloc_flags_on_node(node, ptr, *count, 0);
 		memcpy(*ptr, (void*)vector_interface->ptr, vector_interface->elemsize*vector_interface->nx);
 	}
 

+ 1 - 1
tests/disk/disk_copy_unpack.c

@@ -108,7 +108,7 @@ int dotest(struct starpu_disk_ops *ops, void *param)
 			try = 0;
 		}
 
-	starpu_free_flags(A, NX*sizeof(double), STARPU_MALLOC_COUNT);
+	starpu_free_flags(A, NX*sizeof(unsigned), STARPU_MALLOC_COUNT);
 
 	/* terminate StarPU, no task can be submitted after */
 	starpu_shutdown();