浏览代码

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 年之前
父节点
当前提交
b9e7a62fd0
共有 1 个文件被更改,包括 2 次插入2 次删除
  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)) {
 				local->rowptr = &local->rowptr[first_index];
 				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];
 			}
 		}
 	}