Bladeren bron

fix bcsr: let filter proceed on non-zero memory nodes

Data partitioning loops over all memory nodes, to prepare for a
dynamically-added disk memory node. So we need to accept that. However
catch the actual use of this in case we try to actually allocate on a
non-zero memory node.
Samuel Thibault 5 jaren geleden
bovenliggende
commit
67d28be4d4
2 gewijzigde bestanden met toevoegingen van 5 en 1 verwijderingen
  1. 3 1
      src/datawizard/interfaces/bcsr_filters.c
  2. 2 0
      src/datawizard/interfaces/bcsr_interface.c

+ 3 - 1
src/datawizard/interfaces/bcsr_filters.c

@@ -37,7 +37,9 @@ void starpu_bcsr_filter_vertical_block(void *father_interface, void *child_inter
 
 	bcsr_child->id = bcsr_father->id;
 
-	STARPU_ASSERT_MSG(bcsr_father->nzval, "multiple memory nodes is not supported yet\n");
+	if (!bcsr_father->nzval)
+		/* Not supported yet */
+		return;
 
 	starpu_filter_nparts_compute_chunk_size_and_offset(bcsr_father->nrow, nparts, 1, id, 1, &child_nrow, &child_rowoffset);
 

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

@@ -325,6 +325,8 @@ static starpu_ssize_t allocate_bcsr_buffer_on_node(void *data_interface_, unsign
 	uint32_t r = bcsr_interface->r;
 	uint32_t c = bcsr_interface->c;
 
+	STARPU_ASSERT_MSG(r && c, "partitioning bcsr with several memory nodes is not supported yet");
+
 	addr_nzval = starpu_malloc_on_node(dst_node, nnz*r*c*elemsize);
 	if (!addr_nzval)
 		goto fail_nzval;