Skip to content

Commit 65c3ea2

Browse files
authored
[SYCL] Use copy engine for memory read/write operations (#6783)
In the present state of the L0 plugin, MemBufferWrite and MemBufferRead operations are being executed using compute engines. This patch changes this behavior for the operations to be executed using copy engines. It is expected to improve performance. Signed-off-by: Arvind Sudarsanam <[email protected]>
1 parent b5e0c75 commit 65c3ea2

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

sycl/plugins/level_zero/pi_level_zero.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6513,9 +6513,11 @@ pi_result piEnqueueMemBufferRead(pi_queue Queue, pi_mem Src,
65136513

65146514
char *ZeHandleSrc;
65156515
PI_CALL(Src->getZeHandle(ZeHandleSrc, _pi_mem::read_only, Queue->Device));
6516+
bool PreferCopyEngine = true;
65166517
return enqueueMemCopyHelper(PI_COMMAND_TYPE_MEM_BUFFER_READ, Queue, Dst,
65176518
BlockingRead, Size, ZeHandleSrc + Offset,
6518-
NumEventsInWaitList, EventWaitList, Event);
6519+
NumEventsInWaitList, EventWaitList, Event,
6520+
PreferCopyEngine);
65196521
}
65206522

65216523
pi_result piEnqueueMemBufferReadRect(
@@ -6534,11 +6536,13 @@ pi_result piEnqueueMemBufferReadRect(
65346536

65356537
char *ZeHandleSrc;
65366538
PI_CALL(Buffer->getZeHandle(ZeHandleSrc, _pi_mem::read_only, Queue->Device));
6539+
bool PreferCopyEngine = true;
65376540
return enqueueMemCopyRectHelper(
65386541
PI_COMMAND_TYPE_MEM_BUFFER_READ_RECT, Queue, ZeHandleSrc,
65396542
static_cast<char *>(Ptr), BufferOffset, HostOffset, Region,
65406543
BufferRowPitch, HostRowPitch, BufferSlicePitch, HostSlicePitch,
6541-
BlockingRead, NumEventsInWaitList, EventWaitList, Event);
6544+
BlockingRead, NumEventsInWaitList, EventWaitList, Event,
6545+
PreferCopyEngine);
65426546
}
65436547

65446548
} // extern "C"
@@ -6780,11 +6784,13 @@ pi_result piEnqueueMemBufferWrite(pi_queue Queue, pi_mem Buffer,
67806784

67816785
char *ZeHandleDst;
67826786
PI_CALL(Buffer->getZeHandle(ZeHandleDst, _pi_mem::write_only, Queue->Device));
6787+
bool PreferCopyEngine = true;
67836788
return enqueueMemCopyHelper(PI_COMMAND_TYPE_MEM_BUFFER_WRITE, Queue,
67846789
ZeHandleDst + Offset, // dst
67856790
BlockingWrite, Size,
67866791
Ptr, // src
6787-
NumEventsInWaitList, EventWaitList, Event);
6792+
NumEventsInWaitList, EventWaitList, Event,
6793+
PreferCopyEngine);
67886794
}
67896795

67906796
pi_result piEnqueueMemBufferWriteRect(
@@ -6802,12 +6808,13 @@ pi_result piEnqueueMemBufferWriteRect(
68026808

68036809
char *ZeHandleDst;
68046810
PI_CALL(Buffer->getZeHandle(ZeHandleDst, _pi_mem::write_only, Queue->Device));
6811+
bool PreferCopyEngine = true;
68056812
return enqueueMemCopyRectHelper(
68066813
PI_COMMAND_TYPE_MEM_BUFFER_WRITE_RECT, Queue,
68076814
const_cast<char *>(static_cast<const char *>(Ptr)), ZeHandleDst,
68086815
HostOffset, BufferOffset, Region, HostRowPitch, BufferRowPitch,
68096816
HostSlicePitch, BufferSlicePitch, BlockingWrite, NumEventsInWaitList,
6810-
EventWaitList, Event);
6817+
EventWaitList, Event, PreferCopyEngine);
68116818
}
68126819

68136820
pi_result piEnqueueMemBufferCopy(pi_queue Queue, pi_mem SrcMem, pi_mem DstMem,

0 commit comments

Comments
 (0)