Skip to content

Commit

Permalink
[UR] Add Global Variable Pointer entrypoint
Browse files Browse the repository at this point in the history
  • Loading branch information
fabiomestre committed Mar 12, 2024
1 parent 7b9001e commit e370466
Show file tree
Hide file tree
Showing 16 changed files with 94 additions and 7 deletions.
1 change: 1 addition & 0 deletions sycl/include/sycl/detail/pi.def
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ _PI_API(piDeviceRetain)
_PI_API(piDeviceRelease)
_PI_API(piextDeviceSelectBinary)
_PI_API(piextGetDeviceFunctionPointer)
_PI_API(piextGetGlobalVariablePointer)
_PI_API(piextDeviceGetNativeHandle)
_PI_API(piextDeviceCreateWithNativeHandle)
// Context
Expand Down
4 changes: 4 additions & 0 deletions sycl/include/sycl/detail/pi.h
Original file line number Diff line number Diff line change
Expand Up @@ -1287,6 +1287,10 @@ __SYCL_EXPORT pi_result piextGetDeviceFunctionPointer(
pi_device device, pi_program program, const char *function_name,
pi_uint64 *function_pointer_ret);

__SYCL_EXPORT pi_result piextGetGlobalVariablePointer(
pi_device Device, pi_program Program, const char *GlobalVariableName,
size_t *GlobalVariableSize, void **GlobalVariablePointerRet);

//
// Context
//
Expand Down
9 changes: 9 additions & 0 deletions sycl/plugins/cuda/pi_cuda.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -848,6 +848,15 @@ pi_result piextGetDeviceFunctionPointer(pi_device Device, pi_program Program,
FunctionPointerRet);
}

pi_result piextGetGlobalVariablePointer(pi_device Device, pi_program Program,
const char *GlobalVariableName,
size_t *GlobalVariableSize,
void **GlobalVariablePointerRet) {
return pi2ur::piextGetGlobalVariablePointer(
Device, Program, GlobalVariableName, GlobalVariableSize,
GlobalVariablePointerRet);
}

pi_result piextUSMDeviceAlloc(void **ResultPtr, pi_context Context,
pi_device Device,
pi_usm_mem_properties *Properties, size_t Size,
Expand Down
9 changes: 9 additions & 0 deletions sycl/plugins/hip/pi_hip.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -851,6 +851,15 @@ pi_result piextGetDeviceFunctionPointer(pi_device Device, pi_program Program,
FunctionPointerRet);
}

pi_result piextGetGlobalVariablePointer(pi_device Device, pi_program Program,
const char *GlobalVariableName,
size_t *GlobalVariableSize,
void **GlobalVariablePointerRet) {
return pi2ur::piextGetGlobalVariablePointer(
Device, Program, GlobalVariableName, GlobalVariableSize,
GlobalVariablePointerRet);
}

pi_result piextUSMDeviceAlloc(void **ResultPtr, pi_context Context,
pi_device Device,
pi_usm_mem_properties *Properties, size_t Size,
Expand Down
9 changes: 9 additions & 0 deletions sycl/plugins/level_zero/pi_level_zero.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -875,6 +875,15 @@ pi_result piextGetDeviceFunctionPointer(pi_device Device, pi_program Program,
FunctionPointerRet);
}

pi_result piextGetGlobalVariablePointer(pi_device Device, pi_program Program,
const char *GlobalVariableName,
size_t *GlobalVariableSize,
void **GlobalVariablePointerRet) {
return pi2ur::piextGetGlobalVariablePointer(
Device, Program, GlobalVariableName, GlobalVariableSize,
GlobalVariablePointerRet);
}

pi_result piextUSMDeviceAlloc(void **ResultPtr, pi_context Context,
pi_device Device,
pi_usm_mem_properties *Properties, size_t Size,
Expand Down
9 changes: 9 additions & 0 deletions sycl/plugins/native_cpu/pi_native_cpu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -852,6 +852,15 @@ pi_result piextGetDeviceFunctionPointer(pi_device Device, pi_program Program,
FunctionPointerRet);
}

pi_result piextGetGlobalVariablePointer(pi_device Device, pi_program Program,
const char *GlobalVariableName,
size_t *GlobalVariableSize,
void **GlobalVariablePointerRet) {
return pi2ur::piextGetGlobalVariablePointer(
Device, Program, GlobalVariableName, GlobalVariableSize,
GlobalVariablePointerRet);
}

pi_result piextUSMDeviceAlloc(void **ResultPtr, pi_context Context,
pi_device Device,
pi_usm_mem_properties *Properties, size_t Size,
Expand Down
9 changes: 9 additions & 0 deletions sycl/plugins/opencl/pi_opencl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -813,6 +813,15 @@ pi_result piextGetDeviceFunctionPointer(pi_device Device, pi_program Program,
FunctionPointerRet);
}

pi_result piextGetGlobalVariablePointer(pi_device Device, pi_program Program,
const char *GlobalVariableName,
size_t *GlobalVariableSize,
void **GlobalVariablePointerRet) {
return pi2ur::piextGetGlobalVariablePointer(
Device, Program, GlobalVariableName, GlobalVariableSize,
GlobalVariablePointerRet);
}

pi_result piextUSMDeviceAlloc(void **ResultPtr, pi_context Context,
pi_device Device,
pi_usm_mem_properties *Properties, size_t Size,
Expand Down
14 changes: 7 additions & 7 deletions sycl/plugins/unified_runtime/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,14 @@ endif()
if(SYCL_PI_UR_USE_FETCH_CONTENT)
include(FetchContent)

set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git")
# commit e2ee9a4720414e0a59fa9c911e9575ab564ac57c
# Merge: 7a5150cd be622e7c
set(UNIFIED_RUNTIME_REPO "https://github.com/fabiomestre/unified-runtime.git")
# commit 588615e90bfd2b889834120dfff172236c6b8aa8
# Merge: 4e69cc60 47084751
# Author: Kenneth Benzie (Benie) <[email protected]>
# Date: Sun Mar 10 18:02:50 2024 +0000
# Merge pull request #1340 from Bensuo/ewan/coverity_cuda_update
# [HIP][CUDA][Command-Buffer] Fix Coverity issues in HIP/CUDA command-buffer code
set(UNIFIED_RUNTIME_TAG e2ee9a4720414e0a59fa9c911e9575ab564ac57c)
# Date: Thu Feb 22 16:10:13 2024 +0000
# Merge pull request #1371 from pbalcer/l0-query-status-sync-deadlock
# [L0] fix a deadlock in queue sync and event status query
set(UNIFIED_RUNTIME_TAG 1bc658a97c53c093b63ee1950147813401c8fd21)

if(SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO)
set(UNIFIED_RUNTIME_REPO "${SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO}")
Expand Down
16 changes: 16 additions & 0 deletions sycl/plugins/unified_runtime/pi2ur.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2162,6 +2162,22 @@ inline pi_result piextGetDeviceFunctionPointer(pi_device Device,
return PI_SUCCESS;
}

inline pi_result piextGetGlobalVariablePointer(
pi_device Device, pi_program Program, const char *GlobalVariableName,
size_t *GlobalVariableSize, void **GlobalVariablePointerRet) {
PI_ASSERT(Program, PI_ERROR_INVALID_PROGRAM);

auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);

ur_program_handle_t UrProgram =
reinterpret_cast<ur_program_handle_t>(Program);

HANDLE_ERRORS(urProgramGetGlobalVariablePointer(
UrDevice, UrProgram, GlobalVariableName, GlobalVariableSize,
GlobalVariablePointerRet));
return PI_SUCCESS;
}

// Special version of piKernelSetArg to accept pi_mem.
inline pi_result
piextKernelSetArgMemObj(pi_kernel Kernel, pi_uint32 ArgIndex,
Expand Down
10 changes: 10 additions & 0 deletions sycl/plugins/unified_runtime/pi_unified_runtime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -763,6 +763,15 @@ __SYCL_EXPORT pi_result piextGetDeviceFunctionPointer(
FunctionPointerRet);
}

__SYCL_EXPORT pi_result piextGetGlobalVariablePointer(
pi_device Device, pi_program Program, const char *GlobalVariableName,
size_t *GlobalVariableSize, void **GlobalVariablePointerRet) {

return pi2ur::piextGetGlobalVariablePointer(
Device, Program, GlobalVariableName, GlobalVariableSize,
GlobalVariablePointerRet);
}

/// Hint to migrate memory to the device
///
/// @param Queue is the queue to submit to
Expand Down Expand Up @@ -1424,6 +1433,7 @@ __SYCL_EXPORT pi_result piPluginInit(pi_plugin *PluginInit) {
_PI_API(piProgramCompile)
_PI_API(piProgramGetBuildInfo)
_PI_API(piextGetDeviceFunctionPointer)
_PI_API(piextGetGlobalVariablePointer)

_PI_API(piMemBufferCreate)
_PI_API(piMemGetInfo)
Expand Down
1 change: 1 addition & 0 deletions sycl/test/abi/pi_cuda_symbol_check.dump
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ piextEnqueueWriteHostPipe
piextEventCreateWithNativeHandle
piextEventGetNativeHandle
piextGetDeviceFunctionPointer
piextGetGlobalVariablePointer
piextImportExternalSemaphoreOpaqueFD
piextKernelCreateWithNativeHandle
piextKernelGetNativeHandle
Expand Down
1 change: 1 addition & 0 deletions sycl/test/abi/pi_hip_symbol_check.dump
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ piextEnqueueWriteHostPipe
piextEventCreateWithNativeHandle
piextEventGetNativeHandle
piextGetDeviceFunctionPointer
piextGetGlobalVariablePointer
piextImportExternalSemaphoreOpaqueFD
piextKernelCreateWithNativeHandle
piextKernelGetNativeHandle
Expand Down
1 change: 1 addition & 0 deletions sycl/test/abi/pi_level_zero_symbol_check.dump
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ piextEnqueueWriteHostPipe
piextEventCreateWithNativeHandle
piextEventGetNativeHandle
piextGetDeviceFunctionPointer
piextGetGlobalVariablePointer
piextImportExternalSemaphoreOpaqueFD
piextKernelCreateWithNativeHandle
piextKernelGetNativeHandle
Expand Down
1 change: 1 addition & 0 deletions sycl/test/abi/pi_nativecpu_symbol_check.dump
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ piextEnqueueWriteHostPipe
piextEventCreateWithNativeHandle
piextEventGetNativeHandle
piextGetDeviceFunctionPointer
piextGetGlobalVariablePointer
piextImportExternalSemaphoreOpaqueFD
piextKernelCreateWithNativeHandle
piextKernelGetNativeHandle
Expand Down
1 change: 1 addition & 0 deletions sycl/test/abi/pi_opencl_symbol_check.dump
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ piextEnqueueWriteHostPipe
piextEventCreateWithNativeHandle
piextEventGetNativeHandle
piextGetDeviceFunctionPointer
piextGetGlobalVariablePointer
piextImportExternalSemaphoreOpaqueFD
piextKernelCreateWithNativeHandle
piextKernelGetNativeHandle
Expand Down
6 changes: 6 additions & 0 deletions sycl/unittests/helpers/PiMockPlugin.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,12 @@ mock_piextGetDeviceFunctionPointer(pi_device device, pi_program program,
return PI_SUCCESS;
}

inline pi_result mock_piextGetGlobalVariablePointer(
pi_device device, pi_program program, const char *global_variable_name,
size_t *global_variable_size, void **global_variable_size_ret) {
return PI_SUCCESS;
}

//
// Context
//
Expand Down

0 comments on commit e370466

Please sign in to comment.