Skip to content

Commit df30b80

Browse files
committed
[SYCL][CUDA][PI] Added CUDA-specific pi_mem_advice values
1 parent e560dfe commit df30b80

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,17 @@ typedef enum {
440440

441441
typedef enum {
442442
// Device-specific value opaque in PI API.
443-
PI_MEM_ADVISE_UNKNOWN
443+
PI_MEM_ADVISE_UNKNOWN,
444+
PI_MEM_ADVISE_CUDA_SET_READ_MOSTLY = 1,
445+
PI_MEM_ADVISE_CUDA_UNSET_READ_MOSTLY = 2,
446+
PI_MEM_ADVISE_CUDA_SET_PREFERRED_LOCATION = 3,
447+
PI_MEM_ADVISE_CUDA_UNSET_PREFERRED_LOCATION = 4,
448+
PI_MEM_ADVISE_CUDA_SET_ACCESSED_BY = 5,
449+
PI_MEM_ADVISE_CUDA_UNSET_ACCESSED_BY = 6,
450+
PI_MEM_ADVISE_CUDA_SET_PREFERRED_LOCATION_HOST = 7,
451+
PI_MEM_ADVISE_CUDA_UNSET_PREFERRED_LOCATION_HOST = 8,
452+
PI_MEM_ADVISE_CUDA_SET_ACCESSED_BY_HOST = 9,
453+
PI_MEM_ADVISE_CUDA_UNSET_ACCESSED_BY_HOST = 10,
444454
} _pi_mem_advice;
445455

446456
typedef enum {

sycl/plugins/cuda/pi_cuda.cpp

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4709,9 +4709,30 @@ pi_result cuda_piextUSMEnqueueMemAdvise(pi_queue queue, const void *ptr,
47094709
event_ptr->start();
47104710
}
47114711

4712-
result = PI_CHECK_ERROR(
4713-
cuMemAdvise((CUdeviceptr)ptr, length, (CUmem_advise)advice,
4714-
queue->get_context()->get_device()->get()));
4712+
switch(advice){
4713+
case PI_MEM_ADVISE_CUDA_SET_READ_MOSTLY:
4714+
case PI_MEM_ADVISE_CUDA_UNSET_READ_MOSTLY:
4715+
case PI_MEM_ADVISE_CUDA_SET_PREFERRED_LOCATION:
4716+
case PI_MEM_ADVISE_CUDA_UNSET_PREFERRED_LOCATION:
4717+
case PI_MEM_ADVISE_CUDA_SET_ACCESSED_BY:
4718+
case PI_MEM_ADVISE_CUDA_UNSET_ACCESSED_BY:
4719+
result = PI_CHECK_ERROR(
4720+
cuMemAdvise((CUdeviceptr)ptr, length, (CUmem_advise)advice,
4721+
queue->get_context()->get_device()->get()));
4722+
break;
4723+
case PI_MEM_ADVISE_CUDA_SET_PREFERRED_LOCATION_HOST:
4724+
case PI_MEM_ADVISE_CUDA_UNSET_PREFERRED_LOCATION_HOST:
4725+
case PI_MEM_ADVISE_CUDA_SET_ACCESSED_BY_HOST:
4726+
case PI_MEM_ADVISE_CUDA_UNSET_ACCESSED_BY_HOST:
4727+
result = PI_CHECK_ERROR(
4728+
cuMemAdvise((CUdeviceptr)ptr, length, (CUmem_advise)(advice -
4729+
(PI_MEM_ADVISE_CUDA_SET_PREFERRED_LOCATION_HOST -
4730+
PI_MEM_ADVISE_CUDA_SET_PREFERRED_LOCATION)),
4731+
-1));
4732+
break;
4733+
default:
4734+
cl::sycl::detail::pi::die("Unknown advice");
4735+
}
47154736
if (event) {
47164737
result = event_ptr->record();
47174738
*event = event_ptr.release();

0 commit comments

Comments
 (0)