Skip to content

Commit 6c6d902

Browse files
authored
[SYCL] Ignore usm prefetch dummy flag (#4568)
Patch removes assertions in pi_cuda, pi_hip, and pi_level_zero which fail based upon the flag given to the function. `prefetch_usm` function now does not pass flag to PI. The flag is a placeholder and should be ignored. This is a follow up PR from issue #4467
1 parent 932ae56 commit 6c6d902

File tree

6 files changed

+18
-11
lines changed

6 files changed

+18
-11
lines changed

sycl/include/CL/sycl/detail/pi.h

+3
Original file line numberDiff line numberDiff line change
@@ -1560,6 +1560,9 @@ typedef enum : pi_bitfield {
15601560
PI_MEM_ALLOC_FLAGS = CL_MEM_ALLOC_FLAGS_INTEL
15611561
} _pi_usm_mem_properties;
15621562

1563+
// Flag is used for piProgramUSMEnqueuePrefetch. PI_USM_MIGRATION_TBD0 is a
1564+
// placeholder for future developments and should not change the behaviour of
1565+
// piProgramUSMEnqueuePrefetch
15631566
typedef enum : pi_bitfield {
15641567
PI_USM_MIGRATION_TBD0 = (1 << 0)
15651568
} _pi_usm_migration_flags;

sycl/plugins/cuda/pi_cuda.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -4610,16 +4610,16 @@ pi_result cuda_piextUSMEnqueuePrefetch(pi_queue queue, const void *ptr,
46104610
pi_uint32 num_events_in_waitlist,
46114611
const pi_event *events_waitlist,
46124612
pi_event *event) {
4613+
4614+
// flags is currently unused so fail if set
4615+
if (flags != 0)
4616+
return PI_INVALID_VALUE;
46134617
assert(queue != nullptr);
46144618
assert(ptr != nullptr);
46154619
CUstream cuStream = queue->get();
46164620
pi_result result = PI_SUCCESS;
46174621
std::unique_ptr<_pi_event> event_ptr{nullptr};
46184622

4619-
// TODO implement handling the flags once the expected behaviour
4620-
// of piextUSMEnqueuePrefetch is detailed in the USM extension
4621-
assert(flags == 0u);
4622-
46234623
try {
46244624
ScopedContext active(queue->get_context());
46254625
result = cuda_piEnqueueEventsWait(queue, num_events_in_waitlist,

sycl/plugins/hip/pi_hip.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -4445,16 +4445,15 @@ pi_result hip_piextUSMEnqueuePrefetch(pi_queue queue, const void *ptr,
44454445
const pi_event *events_waitlist,
44464446
pi_event *event) {
44474447

4448+
// flags is currently unused so fail if set
4449+
if (flags != 0)
4450+
return PI_INVALID_VALUE;
44484451
assert(queue != nullptr);
44494452
assert(ptr != nullptr);
44504453
hipStream_t hipStream = queue->get();
44514454
pi_result result = PI_SUCCESS;
44524455
std::unique_ptr<_pi_event> event_ptr{nullptr};
44534456

4454-
// TODO implement handling the flags once the expected behaviour
4455-
// of piextUSMEnqueuePrefetch is detailed in the USM extension
4456-
assert(flags == 0u);
4457-
44584457
try {
44594458
ScopedContext active(queue->get_context());
44604459
result = hip_piEnqueueEventsWait(queue, num_events_in_waitlist,

sycl/plugins/level_zero/pi_level_zero.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -6648,7 +6648,9 @@ pi_result piextUSMEnqueuePrefetch(pi_queue Queue, const void *Ptr, size_t Size,
66486648
pi_uint32 NumEventsInWaitList,
66496649
const pi_event *EventWaitList,
66506650
pi_event *Event) {
6651-
PI_ASSERT(!(Flags & ~PI_USM_MIGRATION_TBD0), PI_INVALID_VALUE);
6651+
6652+
// flags is currently unused so fail if set
6653+
PI_ASSERT(Flags == 0, PI_INVALID_VALUE);
66526654
PI_ASSERT(Queue, PI_INVALID_QUEUE);
66536655
PI_ASSERT(Event, PI_INVALID_EVENT);
66546656

sycl/plugins/opencl/pi_opencl.cpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -1012,7 +1012,10 @@ pi_result piextUSMEnqueuePrefetch(pi_queue queue, const void *ptr, size_t size,
10121012
pi_event *event) {
10131013
(void)ptr;
10141014
(void)size;
1015-
(void)flags;
1015+
1016+
// flags is currently unused so fail if set
1017+
if (flags != 0)
1018+
return PI_INVALID_VALUE;
10161019

10171020
return cast<pi_result>(clEnqueueMarkerWithWaitList(
10181021
cast<cl_command_queue>(queue), num_events_in_waitlist,

sycl/source/detail/memory_manager.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,7 @@ void MemoryManager::prefetch_usm(void *Mem, QueueImplPtr Queue, size_t Length,
698698
} else {
699699
const detail::plugin &Plugin = Queue->getPlugin();
700700
Plugin.call<PiApiKind::piextUSMEnqueuePrefetch>(
701-
Queue->getHandleRef(), Mem, Length, PI_USM_MIGRATION_TBD0,
701+
Queue->getHandleRef(), Mem, Length, _pi_usm_migration_flags(0),
702702
DepEvents.size(), DepEvents.data(), &OutEvent);
703703
}
704704
}

0 commit comments

Comments
 (0)