Skip to content

Commit bf1b5b6

Browse files
authored
[SYCL][CUDA] Missing return event on map/unmap (#1658)
Signed-off-by: Ruyman Reyes <ruyman@codeplay.com>
1 parent 67d3d9e commit bf1b5b6

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

sycl/plugins/cuda/pi_cuda.cpp

+16-7
Original file line numberDiff line numberDiff line change
@@ -2867,11 +2867,9 @@ pi_result cuda_piEnqueueEventsWait(pi_queue command_queue,
28672867
}
28682868

28692869
if (event) {
2870-
auto new_event =
2871-
_pi_event::make_native(PI_COMMAND_TYPE_MARKER, command_queue);
2872-
new_event->start();
2873-
new_event->record();
2874-
*event = new_event;
2870+
*event = _pi_event::make_native(PI_COMMAND_TYPE_MARKER, command_queue);
2871+
(*event)->start();
2872+
(*event)->record();
28752873
}
28762874

28772875
return PI_SUCCESS;
@@ -3281,7 +3279,6 @@ pi_result cuda_piEnqueueMemBufferFill(pi_queue command_queue, pi_mem buffer,
32813279
return PI_ERROR_UNKNOWN;
32823280
}
32833281
}
3284-
32853282
/// \TODO Not implemented in CUDA, requires untie from OpenCL
32863283
pi_result cuda_piEnqueueMemImageRead(
32873284
pi_queue command_queue, pi_mem image, pi_bool blocking_read,
@@ -3359,6 +3356,12 @@ pi_result cuda_piEnqueueMemBufferMap(pi_queue command_queue, pi_mem buffer,
33593356
ret_err = cuda_piEnqueueMemBufferRead(
33603357
command_queue, buffer, blocking_map, offset, size, hostPtr,
33613358
num_events_in_wait_list, event_wait_list, retEvent);
3359+
} else {
3360+
if (retEvent) {
3361+
*retEvent =
3362+
_pi_event::make_native(PI_COMMAND_TYPE_MEM_BUFFER_MAP, command_queue);
3363+
(*retEvent)->record();
3364+
}
33623365
}
33633366

33643367
return ret_err;
@@ -3372,7 +3375,7 @@ pi_result cuda_piEnqueueMemUnmap(pi_queue command_queue, pi_mem memobj,
33723375
pi_uint32 num_events_in_wait_list,
33733376
const pi_event *event_wait_list,
33743377
pi_event *retEvent) {
3375-
pi_result ret_err = PI_INVALID_OPERATION;
3378+
pi_result ret_err = PI_SUCCESS;
33763379

33773380
assert(mapped_ptr != nullptr);
33783381
assert(memobj != nullptr);
@@ -3385,6 +3388,12 @@ pi_result cuda_piEnqueueMemUnmap(pi_queue command_queue, pi_mem memobj,
33853388
command_queue, memobj, true, memobj->get_map_offset(mapped_ptr),
33863389
memobj->get_size(), mapped_ptr, num_events_in_wait_list, event_wait_list,
33873390
retEvent);
3391+
} else {
3392+
if (retEvent) {
3393+
*retEvent = _pi_event::make_native(PI_COMMAND_TYPE_MEM_BUFFER_UNMAP,
3394+
command_queue);
3395+
(*retEvent)->record();
3396+
}
33883397
}
33893398

33903399
memobj->unmap(mapped_ptr);

sycl/test/scheduler/DataMovement.cpp

-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
// XFAIL: cuda
2-
// TODO: Fix accidential error return when unmapping read-only memory objects.
3-
//
41
// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple -I %sycl_source_dir %s -o %t.out -g
52
// RUN: %CPU_RUN_PLACEHOLDER %t.out
63
// RUN: %GPU_RUN_PLACEHOLDER %t.out

0 commit comments

Comments
 (0)