Skip to content

Commit 0326cdc

Browse files
fabiomestrekbenzie
andcommitted
[UR] Add urProgramGetGlobalVariablePointer entrypoint (intel#12496)
Co-authored-by: Kenneth Benzie (Benie) <[email protected]>
1 parent fa53fea commit 0326cdc

16 files changed

+95
-7
lines changed

sycl/include/sycl/detail/pi.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ _PI_API(piDeviceRetain)
3131
_PI_API(piDeviceRelease)
3232
_PI_API(piextDeviceSelectBinary)
3333
_PI_API(piextGetDeviceFunctionPointer)
34+
_PI_API(piextGetGlobalVariablePointer)
3435
_PI_API(piextDeviceGetNativeHandle)
3536
_PI_API(piextDeviceCreateWithNativeHandle)
3637
// Context

sycl/include/sycl/detail/pi.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,10 @@
154154
// 15.44 Add coarse-grain memory advice flag for HIP.
155155
// 15.45 Added piextKernelSuggestMaxCooperativeGroupCount and
156156
// piextEnqueueCooperativeKernelLaunch.
157+
// 15.46 Add piextGetGlobalVariablePointer
157158

158159
#define _PI_H_VERSION_MAJOR 15
159-
#define _PI_H_VERSION_MINOR 45
160+
#define _PI_H_VERSION_MINOR 46
160161

161162
#define _PI_STRING_HELPER(a) #a
162163
#define _PI_CONCAT(a, b) _PI_STRING_HELPER(a.b)
@@ -1287,6 +1288,10 @@ __SYCL_EXPORT pi_result piextGetDeviceFunctionPointer(
12871288
pi_device device, pi_program program, const char *function_name,
12881289
pi_uint64 *function_pointer_ret);
12891290

1291+
__SYCL_EXPORT pi_result piextGetGlobalVariablePointer(
1292+
pi_device Device, pi_program Program, const char *GlobalVariableName,
1293+
size_t *GlobalVariableSize, void **GlobalVariablePointerRet);
1294+
12901295
//
12911296
// Context
12921297
//

sycl/plugins/cuda/pi_cuda.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -848,6 +848,15 @@ pi_result piextGetDeviceFunctionPointer(pi_device Device, pi_program Program,
848848
FunctionPointerRet);
849849
}
850850

851+
pi_result piextGetGlobalVariablePointer(pi_device Device, pi_program Program,
852+
const char *GlobalVariableName,
853+
size_t *GlobalVariableSize,
854+
void **GlobalVariablePointerRet) {
855+
return pi2ur::piextGetGlobalVariablePointer(
856+
Device, Program, GlobalVariableName, GlobalVariableSize,
857+
GlobalVariablePointerRet);
858+
}
859+
851860
pi_result piextUSMDeviceAlloc(void **ResultPtr, pi_context Context,
852861
pi_device Device,
853862
pi_usm_mem_properties *Properties, size_t Size,

sycl/plugins/hip/pi_hip.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -851,6 +851,15 @@ pi_result piextGetDeviceFunctionPointer(pi_device Device, pi_program Program,
851851
FunctionPointerRet);
852852
}
853853

854+
pi_result piextGetGlobalVariablePointer(pi_device Device, pi_program Program,
855+
const char *GlobalVariableName,
856+
size_t *GlobalVariableSize,
857+
void **GlobalVariablePointerRet) {
858+
return pi2ur::piextGetGlobalVariablePointer(
859+
Device, Program, GlobalVariableName, GlobalVariableSize,
860+
GlobalVariablePointerRet);
861+
}
862+
854863
pi_result piextUSMDeviceAlloc(void **ResultPtr, pi_context Context,
855864
pi_device Device,
856865
pi_usm_mem_properties *Properties, size_t Size,

sycl/plugins/level_zero/pi_level_zero.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -875,6 +875,15 @@ pi_result piextGetDeviceFunctionPointer(pi_device Device, pi_program Program,
875875
FunctionPointerRet);
876876
}
877877

878+
pi_result piextGetGlobalVariablePointer(pi_device Device, pi_program Program,
879+
const char *GlobalVariableName,
880+
size_t *GlobalVariableSize,
881+
void **GlobalVariablePointerRet) {
882+
return pi2ur::piextGetGlobalVariablePointer(
883+
Device, Program, GlobalVariableName, GlobalVariableSize,
884+
GlobalVariablePointerRet);
885+
}
886+
878887
pi_result piextUSMDeviceAlloc(void **ResultPtr, pi_context Context,
879888
pi_device Device,
880889
pi_usm_mem_properties *Properties, size_t Size,

sycl/plugins/native_cpu/pi_native_cpu.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -852,6 +852,15 @@ pi_result piextGetDeviceFunctionPointer(pi_device Device, pi_program Program,
852852
FunctionPointerRet);
853853
}
854854

855+
pi_result piextGetGlobalVariablePointer(pi_device Device, pi_program Program,
856+
const char *GlobalVariableName,
857+
size_t *GlobalVariableSize,
858+
void **GlobalVariablePointerRet) {
859+
return pi2ur::piextGetGlobalVariablePointer(
860+
Device, Program, GlobalVariableName, GlobalVariableSize,
861+
GlobalVariablePointerRet);
862+
}
863+
855864
pi_result piextUSMDeviceAlloc(void **ResultPtr, pi_context Context,
856865
pi_device Device,
857866
pi_usm_mem_properties *Properties, size_t Size,

sycl/plugins/opencl/pi_opencl.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,15 @@ pi_result piextGetDeviceFunctionPointer(pi_device Device, pi_program Program,
813813
FunctionPointerRet);
814814
}
815815

816+
pi_result piextGetGlobalVariablePointer(pi_device Device, pi_program Program,
817+
const char *GlobalVariableName,
818+
size_t *GlobalVariableSize,
819+
void **GlobalVariablePointerRet) {
820+
return pi2ur::piextGetGlobalVariablePointer(
821+
Device, Program, GlobalVariableName, GlobalVariableSize,
822+
GlobalVariablePointerRet);
823+
}
824+
816825
pi_result piextUSMDeviceAlloc(void **ResultPtr, pi_context Context,
817826
pi_device Device,
818827
pi_usm_mem_properties *Properties, size_t Size,

sycl/plugins/unified_runtime/CMakeLists.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,13 @@ if(SYCL_PI_UR_USE_FETCH_CONTENT)
5757
include(FetchContent)
5858

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

6868
if(SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO)
6969
set(UNIFIED_RUNTIME_REPO "${SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO}")

sycl/plugins/unified_runtime/pi2ur.hpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2162,6 +2162,22 @@ inline pi_result piextGetDeviceFunctionPointer(pi_device Device,
21622162
return PI_SUCCESS;
21632163
}
21642164

2165+
inline pi_result piextGetGlobalVariablePointer(
2166+
pi_device Device, pi_program Program, const char *GlobalVariableName,
2167+
size_t *GlobalVariableSize, void **GlobalVariablePointerRet) {
2168+
PI_ASSERT(Program, PI_ERROR_INVALID_PROGRAM);
2169+
2170+
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
2171+
2172+
ur_program_handle_t UrProgram =
2173+
reinterpret_cast<ur_program_handle_t>(Program);
2174+
2175+
HANDLE_ERRORS(urProgramGetGlobalVariablePointer(
2176+
UrDevice, UrProgram, GlobalVariableName, GlobalVariableSize,
2177+
GlobalVariablePointerRet));
2178+
return PI_SUCCESS;
2179+
}
2180+
21652181
// Special version of piKernelSetArg to accept pi_mem.
21662182
inline pi_result
21672183
piextKernelSetArgMemObj(pi_kernel Kernel, pi_uint32 ArgIndex,

sycl/plugins/unified_runtime/pi_unified_runtime.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,15 @@ __SYCL_EXPORT pi_result piextGetDeviceFunctionPointer(
763763
FunctionPointerRet);
764764
}
765765

766+
__SYCL_EXPORT pi_result piextGetGlobalVariablePointer(
767+
pi_device Device, pi_program Program, const char *GlobalVariableName,
768+
size_t *GlobalVariableSize, void **GlobalVariablePointerRet) {
769+
770+
return pi2ur::piextGetGlobalVariablePointer(
771+
Device, Program, GlobalVariableName, GlobalVariableSize,
772+
GlobalVariablePointerRet);
773+
}
774+
766775
/// Hint to migrate memory to the device
767776
///
768777
/// @param Queue is the queue to submit to
@@ -1428,6 +1437,7 @@ __SYCL_EXPORT pi_result piPluginInit(pi_plugin *PluginInit) {
14281437
_PI_API(piProgramCompile)
14291438
_PI_API(piProgramGetBuildInfo)
14301439
_PI_API(piextGetDeviceFunctionPointer)
1440+
_PI_API(piextGetGlobalVariablePointer)
14311441

14321442
_PI_API(piMemBufferCreate)
14331443
_PI_API(piMemGetInfo)

sycl/test/abi/pi_cuda_symbol_check.dump

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ piextEnqueueWriteHostPipe
115115
piextEventCreateWithNativeHandle
116116
piextEventGetNativeHandle
117117
piextGetDeviceFunctionPointer
118+
piextGetGlobalVariablePointer
118119
piextImportExternalSemaphoreOpaqueFD
119120
piextKernelCreateWithNativeHandle
120121
piextKernelGetNativeHandle

sycl/test/abi/pi_hip_symbol_check.dump

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ piextEnqueueWriteHostPipe
115115
piextEventCreateWithNativeHandle
116116
piextEventGetNativeHandle
117117
piextGetDeviceFunctionPointer
118+
piextGetGlobalVariablePointer
118119
piextImportExternalSemaphoreOpaqueFD
119120
piextKernelCreateWithNativeHandle
120121
piextKernelGetNativeHandle

sycl/test/abi/pi_level_zero_symbol_check.dump

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ piextEnqueueWriteHostPipe
114114
piextEventCreateWithNativeHandle
115115
piextEventGetNativeHandle
116116
piextGetDeviceFunctionPointer
117+
piextGetGlobalVariablePointer
117118
piextImportExternalSemaphoreOpaqueFD
118119
piextKernelCreateWithNativeHandle
119120
piextKernelGetNativeHandle

sycl/test/abi/pi_nativecpu_symbol_check.dump

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ piextEnqueueWriteHostPipe
115115
piextEventCreateWithNativeHandle
116116
piextEventGetNativeHandle
117117
piextGetDeviceFunctionPointer
118+
piextGetGlobalVariablePointer
118119
piextImportExternalSemaphoreOpaqueFD
119120
piextKernelCreateWithNativeHandle
120121
piextKernelGetNativeHandle

sycl/test/abi/pi_opencl_symbol_check.dump

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ piextEnqueueWriteHostPipe
114114
piextEventCreateWithNativeHandle
115115
piextEventGetNativeHandle
116116
piextGetDeviceFunctionPointer
117+
piextGetGlobalVariablePointer
117118
piextImportExternalSemaphoreOpaqueFD
118119
piextKernelCreateWithNativeHandle
119120
piextKernelGetNativeHandle

sycl/unittests/helpers/PiMockPlugin.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,12 @@ mock_piextGetDeviceFunctionPointer(pi_device device, pi_program program,
280280
return PI_SUCCESS;
281281
}
282282

283+
inline pi_result mock_piextGetGlobalVariablePointer(
284+
pi_device device, pi_program program, const char *global_variable_name,
285+
size_t *global_variable_size, void **global_variable_size_ret) {
286+
return PI_SUCCESS;
287+
}
288+
283289
//
284290
// Context
285291
//

0 commit comments

Comments
 (0)