Skip to content

Commit f0e7606

Browse files
[SYCL][PI] Untie plugin interface from cl_map_flags (#2879)
Define new pi_map_flags to use in lieu of cl_map_flags. Signed-off-by: Chris Perkins <chris.perkins@intel.com>
1 parent 1ad813b commit f0e7606

File tree

7 files changed

+40
-32
lines changed

7 files changed

+40
-32
lines changed

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,13 @@ constexpr pi_mem_flags PI_MEM_FLAGS_HOST_PTR_USE = CL_MEM_USE_HOST_PTR;
494494
constexpr pi_mem_flags PI_MEM_FLAGS_HOST_PTR_COPY = CL_MEM_COPY_HOST_PTR;
495495
constexpr pi_mem_flags PI_MEM_FLAGS_HOST_PTR_ALLOC = CL_MEM_ALLOC_HOST_PTR;
496496

497+
// flags passed to Map operations
498+
using pi_map_flags = pi_bitfield;
499+
constexpr pi_map_flags PI_MAP_READ = CL_MAP_READ;
500+
constexpr pi_map_flags PI_MAP_WRITE = CL_MAP_WRITE;
501+
constexpr pi_map_flags PI_MAP_WRITE_INVALIDATE_REGION =
502+
CL_MAP_WRITE_INVALIDATE_REGION;
503+
497504
// NOTE: this is made 64-bit to match the size of cl_mem_properties_intel to
498505
// make the translation to OpenCL transparent.
499506
// TODO: populate
@@ -1378,9 +1385,9 @@ piEnqueueMemImageFill(pi_queue command_queue, pi_mem image,
13781385

13791386
__SYCL_EXPORT pi_result piEnqueueMemBufferMap(
13801387
pi_queue command_queue, pi_mem buffer, pi_bool blocking_map,
1381-
cl_map_flags map_flags, // TODO: untie from OpenCL
1382-
size_t offset, size_t size, pi_uint32 num_events_in_wait_list,
1383-
const pi_event *event_wait_list, pi_event *event, void **ret_map);
1388+
pi_map_flags map_flags, size_t offset, size_t size,
1389+
pi_uint32 num_events_in_wait_list, const pi_event *event_wait_list,
1390+
pi_event *event, void **ret_map);
13841391

13851392
__SYCL_EXPORT pi_result piEnqueueMemUnmap(pi_queue command_queue, pi_mem memobj,
13861393
void *mapped_ptr,

sycl/plugins/cuda/pi_cuda.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4039,7 +4039,7 @@ pi_result cuda_piEnqueueMemImageFill(pi_queue command_queue, pi_mem image,
40394039
///
40404040
pi_result cuda_piEnqueueMemBufferMap(pi_queue command_queue, pi_mem buffer,
40414041
pi_bool blocking_map,
4042-
cl_map_flags map_flags, size_t offset,
4042+
pi_map_flags map_flags, size_t offset,
40434043
size_t size,
40444044
pi_uint32 num_events_in_wait_list,
40454045
const pi_event *event_wait_list,
@@ -4065,7 +4065,7 @@ pi_result cuda_piEnqueueMemBufferMap(pi_queue command_queue, pi_mem buffer,
40654065
ret_err = PI_SUCCESS;
40664066
}
40674067

4068-
if (!is_pinned && ((map_flags & CL_MAP_READ) || (map_flags & CL_MAP_WRITE))) {
4068+
if (!is_pinned && ((map_flags & PI_MAP_READ) || (map_flags & PI_MAP_WRITE))) {
40694069
// Pinned host memory is already on host so it doesn't need to be read.
40704070
ret_err = cuda_piEnqueueMemBufferRead(
40714071
command_queue, buffer, blocking_map, offset, size, hostPtr,
@@ -4115,9 +4115,9 @@ pi_result cuda_piEnqueueMemUnmap(pi_queue command_queue, pi_mem memobj,
41154115
_pi_mem::mem_::buffer_mem_::alloc_mode::alloc_host_ptr;
41164116

41174117
if (!is_pinned &&
4118-
((memobj->mem_.buffer_mem_.get_map_flags() & CL_MAP_WRITE) ||
4118+
((memobj->mem_.buffer_mem_.get_map_flags() & PI_MAP_WRITE) ||
41194119
(memobj->mem_.buffer_mem_.get_map_flags() &
4120-
CL_MAP_WRITE_INVALIDATE_REGION))) {
4120+
PI_MAP_WRITE_INVALIDATE_REGION))) {
41214121
// Pinned host memory is only on host so it doesn't need to be written to.
41224122
ret_err = cuda_piEnqueueMemBufferWrite(
41234123
command_queue, memobj, true,

sycl/plugins/cuda/pi_cuda.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ struct _pi_mem {
217217
/// Pointer to the active mapped region, if any
218218
void *mapPtr_;
219219
/// Original flags for the mapped region
220-
cl_map_flags mapFlags_;
220+
pi_map_flags mapFlags_;
221221

222222
/** alloc_mode
223223
* classic: Just a normal buffer allocated on the device via cuda malloc
@@ -245,7 +245,7 @@ struct _pi_mem {
245245
/// the data on the device associated with this allocation.
246246
/// The offset is used to index into the CUDA allocation.
247247
///
248-
void *map_to_ptr(size_t offset, cl_map_flags flags) noexcept {
248+
void *map_to_ptr(size_t offset, pi_map_flags flags) noexcept {
249249
assert(mapPtr_ == nullptr);
250250
mapOffset_ = offset;
251251
mapFlags_ = flags;
@@ -269,7 +269,7 @@ struct _pi_mem {
269269
mapOffset_ = 0;
270270
}
271271

272-
cl_map_flags get_map_flags() const noexcept {
272+
pi_map_flags get_map_flags() const noexcept {
273273
assert(mapPtr_ != nullptr);
274274
return mapFlags_;
275275
}
@@ -299,7 +299,7 @@ struct _pi_mem {
299299
mem_.buffer_mem_.size_ = size;
300300
mem_.buffer_mem_.mapOffset_ = 0;
301301
mem_.buffer_mem_.mapPtr_ = nullptr;
302-
mem_.buffer_mem_.mapFlags_ = CL_MAP_WRITE;
302+
mem_.buffer_mem_.mapFlags_ = PI_MAP_WRITE;
303303
mem_.buffer_mem_.allocMode_ = mode;
304304
if (is_sub_buffer()) {
305305
cuda_piMemRetain(mem_.buffer_mem_.parent_);

sycl/plugins/level_zero/pi_level_zero.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4176,16 +4176,16 @@ pi_result piEnqueueMemBufferFill(pi_queue Queue, pi_mem Buffer,
41764176
EventWaitList, Event);
41774177
}
41784178

4179-
pi_result
4180-
piEnqueueMemBufferMap(pi_queue Queue, pi_mem Buffer, pi_bool BlockingMap,
4181-
cl_map_flags MapFlags, // TODO: untie from OpenCL
4182-
size_t Offset, size_t Size, pi_uint32 NumEventsInWaitList,
4183-
const pi_event *EventWaitList, pi_event *Event,
4184-
void **RetMap) {
4179+
pi_result piEnqueueMemBufferMap(pi_queue Queue, pi_mem Buffer,
4180+
pi_bool BlockingMap, pi_map_flags MapFlags,
4181+
size_t Offset, size_t Size,
4182+
pi_uint32 NumEventsInWaitList,
4183+
const pi_event *EventWaitList, pi_event *Event,
4184+
void **RetMap) {
41854185

41864186
// TODO: we don't implement read-only or write-only, always read-write.
4187-
// assert((map_flags & CL_MAP_READ) != 0);
4188-
// assert((map_flags & CL_MAP_WRITE) != 0);
4187+
// assert((map_flags & PI_MAP_READ) != 0);
4188+
// assert((map_flags & PI_MAP_WRITE) != 0);
41894189
assert(Buffer);
41904190
assert(Queue);
41914191

@@ -4224,7 +4224,7 @@ piEnqueueMemBufferMap(pi_queue Queue, pi_mem Buffer, pi_bool BlockingMap,
42244224
piEventsWait(NumEventsInWaitList, EventWaitList);
42254225
if (Buffer->MapHostPtr) {
42264226
*RetMap = Buffer->MapHostPtr + Offset;
4227-
if (!(MapFlags & CL_MAP_WRITE_INVALIDATE_REGION))
4227+
if (!(MapFlags & PI_MAP_WRITE_INVALIDATE_REGION))
42284228
memcpy(*RetMap, pi_cast<char *>(Buffer->getZeHandle()) + Offset, Size);
42294229
} else {
42304230
*RetMap = pi_cast<char *>(Buffer->getZeHandle()) + Offset;

sycl/plugins/opencl/pi_opencl.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -666,11 +666,12 @@ pi_result piextEventCreateWithNativeHandle(pi_native_handle nativeHandle,
666666
return PI_SUCCESS;
667667
}
668668

669-
pi_result piEnqueueMemBufferMap(
670-
pi_queue command_queue, pi_mem buffer, pi_bool blocking_map,
671-
cl_map_flags map_flags, // TODO: untie from OpenCL
672-
size_t offset, size_t size, pi_uint32 num_events_in_wait_list,
673-
const pi_event *event_wait_list, pi_event *event, void **ret_map) {
669+
pi_result piEnqueueMemBufferMap(pi_queue command_queue, pi_mem buffer,
670+
pi_bool blocking_map, pi_map_flags map_flags,
671+
size_t offset, size_t size,
672+
pi_uint32 num_events_in_wait_list,
673+
const pi_event *event_wait_list,
674+
pi_event *event, void **ret_map) {
674675

675676
pi_result ret_err = PI_INVALID_OPERATION;
676677
*ret_map = cast<void *>(clEnqueueMapBuffer(

sycl/source/detail/memory_manager.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -595,22 +595,22 @@ void *MemoryManager::map(SYCLMemObjI *, void *Mem, QueueImplPtr Queue,
595595
PI_INVALID_OPERATION);
596596
}
597597

598-
cl_map_flags Flags = 0;
598+
pi_map_flags Flags = 0;
599599

600600
switch (AccessMode) {
601601
case access::mode::read:
602-
Flags |= CL_MAP_READ;
602+
Flags |= PI_MAP_READ;
603603
break;
604604
case access::mode::write:
605-
Flags |= CL_MAP_WRITE;
605+
Flags |= PI_MAP_WRITE;
606606
break;
607607
case access::mode::read_write:
608608
case access::mode::atomic:
609-
Flags = CL_MAP_WRITE | CL_MAP_READ;
609+
Flags = PI_MAP_WRITE | PI_MAP_READ;
610610
break;
611611
case access::mode::discard_write:
612612
case access::mode::discard_read_write:
613-
Flags |= CL_MAP_WRITE_INVALIDATE_REGION;
613+
Flags |= PI_MAP_WRITE_INVALIDATE_REGION;
614614
break;
615615
}
616616

sycl/unittests/pi/cuda/test_mem_obj.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ TEST_F(CudaTestMemObj, piMemBufferPinnedMappedRead) {
140140

141141
int *host_ptr = nullptr;
142142
ASSERT_EQ((plugin.call_nocheck<detail::PiApiKind::piEnqueueMemBufferMap>(
143-
queue, memObj, true, CL_MAP_READ, 0, sizeof(int), 0, nullptr,
143+
queue, memObj, true, PI_MAP_READ, 0, sizeof(int), 0, nullptr,
144144
nullptr, (void **)&host_ptr)),
145145
PI_SUCCESS);
146146

@@ -174,7 +174,7 @@ TEST_F(CudaTestMemObj, piMemBufferPinnedMappedWrite) {
174174

175175
int *host_ptr = nullptr;
176176
ASSERT_EQ((plugin.call_nocheck<detail::PiApiKind::piEnqueueMemBufferMap>(
177-
queue, memObj, true, CL_MAP_WRITE, 0, sizeof(int), 0, nullptr,
177+
queue, memObj, true, PI_MAP_WRITE, 0, sizeof(int), 0, nullptr,
178178
nullptr, (void **)&host_ptr)),
179179
PI_SUCCESS);
180180

0 commit comments

Comments
 (0)