瀏覽代碼

data: Fix empty data cases

Samuel Thibault 5 年之前
父節點
當前提交
d189a8478e

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

@@ -135,8 +135,11 @@ void starpu_bcsr_data_register(starpu_data_handle_t *handleptr, int home_node,
 	{
 		if (nnz)
 		{
-			STARPU_ASSERT_ACCESSIBLE(nzval);
-			STARPU_ASSERT_ACCESSIBLE(nzval + nnz*elemsize*r*c - 1);
+			if (r && c && elemsize)
+			{
+				STARPU_ASSERT_ACCESSIBLE(nzval);
+				STARPU_ASSERT_ACCESSIBLE(nzval + nnz*elemsize*r*c - 1);
+			}
 			STARPU_ASSERT_ACCESSIBLE(colind);
 			STARPU_ASSERT_ACCESSIBLE((uintptr_t) colind + nnz*sizeof(uint32_t) - 1);
 		}

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

@@ -136,8 +136,11 @@ void starpu_block_data_register(starpu_data_handle_t *handleptr, int home_node,
 #ifndef STARPU_SIMGRID
 	if (home_node >= 0 && starpu_node_get_kind(home_node) == STARPU_CPU_RAM)
 	{
-		STARPU_ASSERT_ACCESSIBLE(ptr);
-		STARPU_ASSERT_ACCESSIBLE(ptr + (nz-1)*ldz*elemsize + (ny-1)*ldy*elemsize + nx*elemsize - 1);
+		if (nx && ny && nz && elemsize)
+		{
+			STARPU_ASSERT_ACCESSIBLE(ptr);
+			STARPU_ASSERT_ACCESSIBLE(ptr + (nz-1)*ldz*elemsize + (ny-1)*ldy*elemsize + nx*elemsize - 1);
+		}
 	}
 #endif
 

+ 7 - 4
src/datawizard/interfaces/coo_interface.c

@@ -250,10 +250,13 @@ starpu_coo_data_register(starpu_data_handle_t *handleptr, int home_node,
 #ifndef STARPU_SIMGRID
 	if (home_node >= 0 && starpu_node_get_kind(home_node) == STARPU_CPU_RAM)
 	{
-		STARPU_ASSERT_ACCESSIBLE(columns);
-		STARPU_ASSERT_ACCESSIBLE((uintptr_t) columns + n_values*sizeof(uint32_t) - 1);
-		STARPU_ASSERT_ACCESSIBLE(rows);
-		STARPU_ASSERT_ACCESSIBLE((uintptr_t) rows + n_values*sizeof(uint32_t) - 1);
+		if (n_values)
+		{
+			STARPU_ASSERT_ACCESSIBLE(columns);
+			STARPU_ASSERT_ACCESSIBLE((uintptr_t) columns + n_values*sizeof(uint32_t) - 1);
+			STARPU_ASSERT_ACCESSIBLE(rows);
+			STARPU_ASSERT_ACCESSIBLE((uintptr_t) rows + n_values*sizeof(uint32_t) - 1);
+		}
 		STARPU_ASSERT_ACCESSIBLE(values);
 		STARPU_ASSERT_ACCESSIBLE(values + n_values*elemsize - 1);
 	}

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

@@ -117,8 +117,11 @@ void starpu_csr_data_register(starpu_data_handle_t *handleptr, int home_node,
 	{
 		if (nnz)
 		{
-			STARPU_ASSERT_ACCESSIBLE(nzval);
-			STARPU_ASSERT_ACCESSIBLE(nzval + nnz*elemsize - 1);
+			if (elemsize)
+			{
+				STARPU_ASSERT_ACCESSIBLE(nzval);
+				STARPU_ASSERT_ACCESSIBLE(nzval + nnz*elemsize - 1);
+			}
 			STARPU_ASSERT_ACCESSIBLE(colind);
 			STARPU_ASSERT_ACCESSIBLE((uintptr_t) colind + nnz*sizeof(uint32_t) - 1);
 		}

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

@@ -145,8 +145,11 @@ void starpu_matrix_data_register_allocsize(starpu_data_handle_t *handleptr, int
 #ifndef STARPU_SIMGRID
 	if (home_node >= 0 && starpu_node_get_kind(home_node) == STARPU_CPU_RAM)
 	{
-		STARPU_ASSERT_ACCESSIBLE(ptr);
-		STARPU_ASSERT_ACCESSIBLE(ptr + (ny-1)*ld*elemsize + nx*elemsize - 1);
+		if (nx && ny && elemsize)
+		{
+			STARPU_ASSERT_ACCESSIBLE(ptr);
+			STARPU_ASSERT_ACCESSIBLE(ptr + (ny-1)*ld*elemsize + nx*elemsize - 1);
+		}
 	}
 #endif
 

+ 5 - 2
src/datawizard/interfaces/tensor_interface.c

@@ -143,8 +143,11 @@ void starpu_tensor_data_register(starpu_data_handle_t *handleptr, int home_node,
 #ifndef STARPU_SIMGRID
 	if (home_node >= 0 && starpu_node_get_kind(home_node) == STARPU_CPU_RAM)
 	{
-		STARPU_ASSERT_ACCESSIBLE(ptr);
-		STARPU_ASSERT_ACCESSIBLE(ptr + (nt-1)*ldt*elemsize + (nz-1)*ldz*elemsize + (ny-1)*ldy*elemsize + nx*elemsize - 1);
+		if (nx && ny && nz && nt && elemsize)
+		{
+			STARPU_ASSERT_ACCESSIBLE(ptr);
+			STARPU_ASSERT_ACCESSIBLE(ptr + (nt-1)*ldt*elemsize + (nz-1)*ldz*elemsize + (ny-1)*ldy*elemsize + nx*elemsize - 1);
+		}
 	}
 #endif
 

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

@@ -112,8 +112,11 @@ void starpu_variable_data_register(starpu_data_handle_t *handleptr, int home_nod
 #ifndef STARPU_SIMGRID
 	if (home_node >= 0 && starpu_node_get_kind(home_node) == STARPU_CPU_RAM)
 	{
-		STARPU_ASSERT_ACCESSIBLE(ptr);
-		STARPU_ASSERT_ACCESSIBLE(ptr + elemsize - 1);
+		if (elemsize)
+		{
+			STARPU_ASSERT_ACCESSIBLE(ptr);
+			STARPU_ASSERT_ACCESSIBLE(ptr + elemsize - 1);
+		}
 	}
 #endif
 

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

@@ -136,8 +136,11 @@ void starpu_vector_data_register_allocsize(starpu_data_handle_t *handleptr, int
 #if (!defined(STARPU_SIMGRID) && !defined(STARPU_OPENMP))
 	if (home_node >= 0 && starpu_node_get_kind(home_node) == STARPU_CPU_RAM)
 	{
-		STARPU_ASSERT_ACCESSIBLE(ptr);
-		STARPU_ASSERT_ACCESSIBLE(ptr + nx*elemsize - 1);
+		if (nx && elemsize)
+		{
+			STARPU_ASSERT_ACCESSIBLE(ptr);
+			STARPU_ASSERT_ACCESSIBLE(ptr + nx*elemsize - 1);
+		}
 	}
 #endif