Skip to content

Commit

Permalink
[UR] Add urProgramGetGlobalVariablePointer entrypoint (intel#12496)
Browse files Browse the repository at this point in the history
Co-authored-by: Kenneth Benzie (Benie) <[email protected]>
  • Loading branch information
fabiomestre and kbenzie committed Apr 15, 2024
1 parent fa53fea commit 0326cdc
Show file tree
Hide file tree
Showing 16 changed files with 95 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
7 changes: 6 additions & 1 deletion sycl/include/sycl/detail/pi.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,9 +154,10 @@
// 15.44 Add coarse-grain memory advice flag for HIP.
// 15.45 Added piextKernelSuggestMaxCooperativeGroupCount and
// piextEnqueueCooperativeKernelLaunch.
// 15.46 Add piextGetGlobalVariablePointer

#define _PI_H_VERSION_MAJOR 15
#define _PI_H_VERSION_MINOR 45
#define _PI_H_VERSION_MINOR 46

#define _PI_STRING_HELPER(a) #a
#define _PI_CONCAT(a, b) _PI_STRING_HELPER(a.b)
Expand Down Expand Up @@ -1287,6 +1288,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
12 changes: 6 additions & 6 deletions sycl/plugins/unified_runtime/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,13 @@ if(SYCL_PI_UR_USE_FETCH_CONTENT)
include(FetchContent)

set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git")
# commit 29ee45c4451a682f744146cc9dbeb2617ecdd6b3
# Merge: db4b0c14 4f5d005a
# commit 4d0183a8e3152f7c5b7a814d5001c90cb2412051
# Merge: 29ee45c4 ca3da5aa
# Author: Kenneth Benzie (Benie) <[email protected]>
# Date: Mon Mar 18 12:14:26 2024 +0000
# Merge pull request #1291 from JackAKirk/cuda-seq-cst-b
# [CUDA] Report that devices with cc >= sm_70 support seq_cst
set(UNIFIED_RUNTIME_TAG 29ee45c4451a682f744146cc9dbeb2617ecdd6b3)
# Date: Mon Mar 18 23:56:24 2024 +0000
# Merge pull request #1255 from fabiomestre/fabio/add_global_variable_pointer
# [SPEC] Add urProgramGetGlobalVariablePointer entrypoint
set(UNIFIED_RUNTIME_TAG 4d0183a8e3152f7c5b7a814d5001c90cb2412051)

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 @@ -1428,6 +1437,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 0326cdc

Please sign in to comment.