Skip to content

Commit 9f5c1a7

Browse files
committed
Fixed crashes, but results are incorrect
1 parent d8ba8d2 commit 9f5c1a7

File tree

2 files changed

+33
-31
lines changed

2 files changed

+33
-31
lines changed

sycl/source/handler.cpp

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1851,21 +1851,10 @@ void handler::ext_oneapi_copy(
18511851
MSrcPtr = const_cast<void *>(Src);
18521852
MDstPtr = Dest;
18531853

1854-
ur_exp_image_copy_flags_t ImageCopyFlags = detail::getUrImageCopyFlags(
1855-
get_pointer_type(Src,
1856-
createSyclObjFromImpl<context>(impl->get_context())),
1857-
get_pointer_type(Dest,
1858-
createSyclObjFromImpl<context>(impl->get_context())));
1859-
1860-
if (ImageCopyFlags == UR_EXP_IMAGE_COPY_FLAG_DEVICE_TO_DEVICE ||
1861-
ImageCopyFlags == UR_EXP_IMAGE_COPY_FLAG_HOST_TO_HOST) {
1862-
detail::fill_copy_args(get_impl(), SrcImgDesc, DestImgDesc, ImageCopyFlags,
1863-
SrcRowPitch, DestRowPitch);
1864-
} else {
1865-
throw sycl::exception(make_error_code(errc::invalid),
1866-
"Copy Error: This copy function only performs device "
1867-
"to device or host to host copies!");
1868-
}
1854+
ur_exp_image_copy_flags_t ImageCopyFlags =
1855+
UR_EXP_IMAGE_COPY_FLAG_HOST_TO_HOST;
1856+
detail::fill_copy_args(get_impl(), SrcImgDesc, DestImgDesc, ImageCopyFlags,
1857+
SrcRowPitch, DestRowPitch);
18691858

18701859
setType(detail::CGType::CopyImage);
18711860
}
@@ -1880,22 +1869,11 @@ void handler::ext_oneapi_copy(
18801869
MSrcPtr = const_cast<void *>(Src);
18811870
MDstPtr = Dest;
18821871

1883-
ur_exp_image_copy_flags_t ImageCopyFlags = detail::getUrImageCopyFlags(
1884-
get_pointer_type(Src,
1885-
createSyclObjFromImpl<context>(impl->get_context())),
1886-
get_pointer_type(Dest,
1887-
createSyclObjFromImpl<context>(impl->get_context())));
1888-
1889-
if (ImageCopyFlags == UR_EXP_IMAGE_COPY_FLAG_DEVICE_TO_DEVICE ||
1890-
ImageCopyFlags == UR_EXP_IMAGE_COPY_FLAG_HOST_TO_HOST) {
1891-
detail::fill_copy_args(get_impl(), SrcImgDesc, DestImgDesc, ImageCopyFlags,
1892-
SrcRowPitch, DestRowPitch, SrcOffset, {0, 0, 0},
1893-
DestOffset, {0, 0, 0}, CopyExtent);
1894-
} else {
1895-
throw sycl::exception(make_error_code(errc::invalid),
1896-
"Copy Error: This copy function only performs device "
1897-
"to device or host to host copies!");
1898-
}
1872+
ur_exp_image_copy_flags_t ImageCopyFlags =
1873+
UR_EXP_IMAGE_COPY_FLAG_HOST_TO_HOST;
1874+
detail::fill_copy_args(get_impl(), SrcImgDesc, DestImgDesc, ImageCopyFlags,
1875+
SrcRowPitch, DestRowPitch, SrcOffset, {0, 0, 0},
1876+
DestOffset, {0, 0, 0}, CopyExtent);
18991877

19001878
setType(detail::CGType::CopyImage);
19011879
}

unified-runtime/source/adapters/level_zero/image_common.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -882,6 +882,30 @@ ur_result_t bindlessImagesHandleCopyFlags(
882882

883883
return UR_RESULT_SUCCESS;
884884
};
885+
case UR_EXP_IMAGE_COPY_FLAG_HOST_TO_HOST: {
886+
// Copy between pitched USM regions
887+
uint32_t DstRowPitch = pDstImageDesc->rowPitch;
888+
uint32_t SrcRowPitch = pSrcImageDesc->rowPitch;
889+
ze_copy_region_t ZeDstRegion = {(uint32_t)pCopyRegion->dstOffset.x,
890+
(uint32_t)pCopyRegion->dstOffset.y,
891+
(uint32_t)pCopyRegion->dstOffset.z,
892+
DstRowPitch,
893+
(uint32_t)pCopyRegion->copyExtent.height,
894+
(uint32_t)pCopyRegion->copyExtent.depth};
895+
ze_copy_region_t ZeSrcRegion = {(uint32_t)pCopyRegion->srcOffset.x,
896+
(uint32_t)pCopyRegion->srcOffset.y,
897+
(uint32_t)pCopyRegion->srcOffset.z,
898+
SrcRowPitch,
899+
(uint32_t)pCopyRegion->copyExtent.height,
900+
(uint32_t)pCopyRegion->copyExtent.depth};
901+
uint32_t DstSlicePitch = DstRowPitch * pDstImageDesc->height;
902+
uint32_t SrcSlicePitch = SrcRowPitch * pSrcImageDesc->height;
903+
ZE2UR_CALL(zeCommandListAppendMemoryCopyRegion,
904+
(ZeCommandList, pDst, &ZeDstRegion, DstRowPitch, DstSlicePitch,
905+
pSrc, &ZeSrcRegion, SrcRowPitch, SrcSlicePitch, zeSignalEvent,
906+
numWaitEvents, phWaitEvents));
907+
return UR_RESULT_SUCCESS;
908+
};
885909
default:
886910
UR_LOG(ERR, "ur_queue_immediate_in_order_t::bindlessImagesImageCopyExp: "
887911
"unexpected imageCopyFlags");

0 commit comments

Comments
 (0)