소스 검색

src/datawizard/interfaces/matrix_interface.c: when cudaMemcpy2D() fails, tries to copy by calling copy_any_to_any()
The CUDA batch allocation introduced recently breaks with old versions of CUDA which expect memory pointer to be aligned

Nathalie Furmento 11 년 전
부모
커밋
2437d1e11b
1개의 변경된 파일5개의 추가작업 그리고 1개의 파일을 삭제
  1. 5 1
      src/datawizard/interfaces/matrix_interface.c

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

@@ -404,7 +404,11 @@ static int copy_cuda_common(void *src_interface, unsigned src_node STARPU_ATTRIB
 		(char *)src_matrix->ptr, src_matrix->ld*elemsize,
 		src_matrix->nx*elemsize, src_matrix->ny, kind);
 	if (STARPU_UNLIKELY(cures))
-		STARPU_CUDA_REPORT_ERROR(cures);
+	{
+		int ret = copy_any_to_any(src_interface, src_node, dst_interface, dst_node, (void *)&is_async);
+		if (ret == -EAGAIN) return ret;
+		if (ret) STARPU_CUDA_REPORT_ERROR(cures);
+	}
 #endif
 
 	_STARPU_TRACE_DATA_COPY(src_node, dst_node, (size_t)src_matrix->nx*src_matrix->ny*src_matrix->elemsize);