Browse Source

The CSR filter was using a float pointer to compute the offset within the data
array, which results in wrong results if elemsize!=sizeof(float). Thanks a lot
to Martin Sandrieser from the University of Vienna for that patch !

Cédric Augonnet 15 years ago
parent
commit
b9e7a62fd0
1 changed files with 2 additions and 2 deletions
  1. 2 2
      src/datawizard/interfaces/csr_filters.c

+ 2 - 2
src/datawizard/interfaces/csr_filters.c

@@ -70,8 +70,8 @@ void starpu_vertical_block_filter_func_csr(starpu_filter *f, starpu_data_handle
 			if (starpu_test_if_data_is_allocated_on_node(root_handle, node)) {
 			if (starpu_test_if_data_is_allocated_on_node(root_handle, node)) {
 				local->rowptr = &local->rowptr[first_index];
 				local->rowptr = &local->rowptr[first_index];
 				local->colind = &local->colind[local_firstentry];
 				local->colind = &local->colind[local_firstentry];
-				float *nzval = (float *)(local->nzval);
-				local->nzval = (uintptr_t)&nzval[local_firstentry];
+				char *nzval = (char *)(local->nzval);
+				local->nzval = (uintptr_t)&nzval[local_firstentry * elemsize];
 			}
 			}
 		}
 		}
 	}
 	}