Skip to content

Commit 17e719f

Browse files
committed
Make urInit and urTearDown loader-only
1 parent 636150a commit 17e719f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+792
-887
lines changed

examples/collector/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ $ mkdir build
1919
$ cd build
2020
$ cmake .. -DUR_ENABLE_TRACING=ON
2121
$ make
22-
$ UR_ADAPTERS_FORCE_LOAD=./lib/libur_adapter_null.so XPTI_TRACE_ENABLE=1 XPTI_FRAMEWORK_DISPATCHER=./lib/libxptifw.so XPTI_SUBSCRIBERS=./lib/libcollector.so ./bin/hello_world
22+
$ UR_ADAPTERS_FORCE_LOAD=./lib/libur_adapter_null.so UR_ENABLE_LAYERS=UR_LAYER_TRACING XPTI_TRACE_ENABLE=1 XPTI_FRAMEWORK_DISPATCHER=./lib/libxptifw.so XPTI_SUBSCRIBERS=./lib/libcollector.so ./bin/hello_world
2323
```
2424

2525
See [XPTI framework documentation](https://github.com/intel/llvm/blob/sycl/xptifw/doc/XPTI_Framework.md) for more information.

examples/collector/collector.cpp

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,32 +34,41 @@ constexpr uint16_t TRACE_FN_END =
3434
constexpr std::string_view UR_STREAM_NAME = "ur";
3535

3636
/**
37-
* @brief Formats the function parameters and arguments for urInit
37+
* @brief Formats the function parameters and arguments for urAdapterGet
3838
*/
3939
std::ostream &operator<<(std::ostream &os,
40-
const struct ur_init_params_t *params) {
41-
os << ".device_flags = ";
42-
if (*params->pdevice_flags & UR_DEVICE_INIT_FLAG_GPU) {
43-
os << "UR_DEVICE_INIT_FLAG_GPU";
44-
} else {
45-
os << "0";
40+
const struct ur_adapter_get_params_t *params) {
41+
os << ".NumEntries = ";
42+
os << *params->pNumEntries;
43+
os << ", ";
44+
os << ".phAdapters = ";
45+
os << *params->pphAdapters;
46+
if (*params->pphAdapters) {
47+
os << " (" << **params->pphAdapters << ")";
48+
}
49+
os << ", ";
50+
os << ".pNumAdapters = ";
51+
os << *params->ppNumAdapters;
52+
if (*params->ppNumAdapters) {
53+
os << " (" << **params->ppNumAdapters << ")";
4654
}
4755
os << "";
4856
return os;
4957
}
5058

5159
/**
5260
* A map of functions that format the parameters and arguments for each UR function.
53-
* This example only implements a handler for one function, `urInit`, but it's
61+
* This example only implements a handler for one function, `urAdapterGet`, but it's
5462
* trivial to expand it to support more.
5563
*/
5664
static std::unordered_map<
5765
std::string_view,
5866
std::function<void(const xpti::function_with_args_t *, std::ostream &)>>
59-
handlers = {{"urInit", [](const xpti::function_with_args_t *fn_args,
60-
std::ostream &os) {
61-
auto params = static_cast<const struct ur_init_params_t *>(
62-
fn_args->args_data);
67+
handlers = {{"urAdapterGet", [](const xpti::function_with_args_t *fn_args,
68+
std::ostream &os) {
69+
auto params =
70+
static_cast<const struct ur_adapter_get_params_t *>(
71+
fn_args->args_data);
6372
os << params;
6473
}}};
6574

examples/hello_world/hello_world.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ int main(int argc, char *argv[]) {
1919
ur_result_t status;
2020

2121
// Initialize the platform
22-
status = urInit(0, nullptr);
22+
status = urLoaderInit(0, nullptr);
2323
if (status != UR_RESULT_SUCCESS) {
24-
std::cout << "urInit failed with return code: " << status << std::endl;
24+
std::cout << "urLoaderInit failed with return code: " << status
25+
<< std::endl;
2526
return 1;
2627
}
2728
std::cout << "Platform initialized.\n";
@@ -119,6 +120,6 @@ int main(int argc, char *argv[]) {
119120
for (auto adapter : adapters) {
120121
urAdapterRelease(adapter);
121122
}
122-
urTearDown(nullptr);
123+
urLoaderTearDown();
123124
return status == UR_RESULT_SUCCESS ? 0 : 1;
124125
}

include/ur.py

Lines changed: 65 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,6 @@ class ur_function_v(IntEnum):
117117
QUEUE_CREATE_WITH_NATIVE_HANDLE = 96 ## Enumerator for ::urQueueCreateWithNativeHandle
118118
QUEUE_FINISH = 97 ## Enumerator for ::urQueueFinish
119119
QUEUE_FLUSH = 98 ## Enumerator for ::urQueueFlush
120-
INIT = 99 ## Enumerator for ::urInit
121-
TEAR_DOWN = 100 ## Enumerator for ::urTearDown
122120
SAMPLER_CREATE = 101 ## Enumerator for ::urSamplerCreate
123121
SAMPLER_RETAIN = 102 ## Enumerator for ::urSamplerRetain
124122
SAMPLER_RELEASE = 103 ## Enumerator for ::urSamplerRelease
@@ -196,6 +194,8 @@ class ur_function_v(IntEnum):
196194
ADAPTER_RETAIN = 179 ## Enumerator for ::urAdapterRetain
197195
ADAPTER_GET_LAST_ERROR = 180 ## Enumerator for ::urAdapterGetLastError
198196
ADAPTER_GET_INFO = 181 ## Enumerator for ::urAdapterGetInfo
197+
LOADER_INIT = 182 ## Enumerator for ::urLoaderInit
198+
LOADER_TEAR_DOWN = 183 ## Enumerator for ::urLoaderTearDown
199199

200200
class ur_function_t(c_int):
201201
def __str__(self):
@@ -2870,6 +2870,53 @@ class ur_physical_mem_dditable_t(Structure):
28702870
("pfnRelease", c_void_p) ## _urPhysicalMemRelease_t
28712871
]
28722872

2873+
###############################################################################
2874+
## @brief Function-pointer for urAdapterGet
2875+
if __use_win_types:
2876+
_urAdapterGet_t = WINFUNCTYPE( ur_result_t, c_ulong, POINTER(ur_adapter_handle_t), POINTER(c_ulong) )
2877+
else:
2878+
_urAdapterGet_t = CFUNCTYPE( ur_result_t, c_ulong, POINTER(ur_adapter_handle_t), POINTER(c_ulong) )
2879+
2880+
###############################################################################
2881+
## @brief Function-pointer for urAdapterRelease
2882+
if __use_win_types:
2883+
_urAdapterRelease_t = WINFUNCTYPE( ur_result_t, ur_adapter_handle_t )
2884+
else:
2885+
_urAdapterRelease_t = CFUNCTYPE( ur_result_t, ur_adapter_handle_t )
2886+
2887+
###############################################################################
2888+
## @brief Function-pointer for urAdapterRetain
2889+
if __use_win_types:
2890+
_urAdapterRetain_t = WINFUNCTYPE( ur_result_t, ur_adapter_handle_t )
2891+
else:
2892+
_urAdapterRetain_t = CFUNCTYPE( ur_result_t, ur_adapter_handle_t )
2893+
2894+
###############################################################################
2895+
## @brief Function-pointer for urAdapterGetLastError
2896+
if __use_win_types:
2897+
_urAdapterGetLastError_t = WINFUNCTYPE( ur_result_t, ur_adapter_handle_t, POINTER(c_char_p), POINTER(c_long) )
2898+
else:
2899+
_urAdapterGetLastError_t = CFUNCTYPE( ur_result_t, ur_adapter_handle_t, POINTER(c_char_p), POINTER(c_long) )
2900+
2901+
###############################################################################
2902+
## @brief Function-pointer for urAdapterGetInfo
2903+
if __use_win_types:
2904+
_urAdapterGetInfo_t = WINFUNCTYPE( ur_result_t, ur_adapter_handle_t, ur_adapter_info_t, c_size_t, c_void_p, POINTER(c_size_t) )
2905+
else:
2906+
_urAdapterGetInfo_t = CFUNCTYPE( ur_result_t, ur_adapter_handle_t, ur_adapter_info_t, c_size_t, c_void_p, POINTER(c_size_t) )
2907+
2908+
2909+
###############################################################################
2910+
## @brief Table of Global functions pointers
2911+
class ur_global_dditable_t(Structure):
2912+
_fields_ = [
2913+
("pfnAdapterGet", c_void_p), ## _urAdapterGet_t
2914+
("pfnAdapterRelease", c_void_p), ## _urAdapterRelease_t
2915+
("pfnAdapterRetain", c_void_p), ## _urAdapterRetain_t
2916+
("pfnAdapterGetLastError", c_void_p), ## _urAdapterGetLastError_t
2917+
("pfnAdapterGetInfo", c_void_p) ## _urAdapterGetInfo_t
2918+
]
2919+
28732920
###############################################################################
28742921
## @brief Function-pointer for urEnqueueKernelLaunch
28752922
if __use_win_types:
@@ -3543,69 +3590,6 @@ class ur_usm_p2p_exp_dditable_t(Structure):
35433590
("pfnPeerAccessGetInfoExp", c_void_p) ## _urUsmP2PPeerAccessGetInfoExp_t
35443591
]
35453592

3546-
###############################################################################
3547-
## @brief Function-pointer for urInit
3548-
if __use_win_types:
3549-
_urInit_t = WINFUNCTYPE( ur_result_t, ur_device_init_flags_t, ur_loader_config_handle_t )
3550-
else:
3551-
_urInit_t = CFUNCTYPE( ur_result_t, ur_device_init_flags_t, ur_loader_config_handle_t )
3552-
3553-
###############################################################################
3554-
## @brief Function-pointer for urTearDown
3555-
if __use_win_types:
3556-
_urTearDown_t = WINFUNCTYPE( ur_result_t, c_void_p )
3557-
else:
3558-
_urTearDown_t = CFUNCTYPE( ur_result_t, c_void_p )
3559-
3560-
###############################################################################
3561-
## @brief Function-pointer for urAdapterGet
3562-
if __use_win_types:
3563-
_urAdapterGet_t = WINFUNCTYPE( ur_result_t, c_ulong, POINTER(ur_adapter_handle_t), POINTER(c_ulong) )
3564-
else:
3565-
_urAdapterGet_t = CFUNCTYPE( ur_result_t, c_ulong, POINTER(ur_adapter_handle_t), POINTER(c_ulong) )
3566-
3567-
###############################################################################
3568-
## @brief Function-pointer for urAdapterRelease
3569-
if __use_win_types:
3570-
_urAdapterRelease_t = WINFUNCTYPE( ur_result_t, ur_adapter_handle_t )
3571-
else:
3572-
_urAdapterRelease_t = CFUNCTYPE( ur_result_t, ur_adapter_handle_t )
3573-
3574-
###############################################################################
3575-
## @brief Function-pointer for urAdapterRetain
3576-
if __use_win_types:
3577-
_urAdapterRetain_t = WINFUNCTYPE( ur_result_t, ur_adapter_handle_t )
3578-
else:
3579-
_urAdapterRetain_t = CFUNCTYPE( ur_result_t, ur_adapter_handle_t )
3580-
3581-
###############################################################################
3582-
## @brief Function-pointer for urAdapterGetLastError
3583-
if __use_win_types:
3584-
_urAdapterGetLastError_t = WINFUNCTYPE( ur_result_t, ur_adapter_handle_t, POINTER(c_char_p), POINTER(c_long) )
3585-
else:
3586-
_urAdapterGetLastError_t = CFUNCTYPE( ur_result_t, ur_adapter_handle_t, POINTER(c_char_p), POINTER(c_long) )
3587-
3588-
###############################################################################
3589-
## @brief Function-pointer for urAdapterGetInfo
3590-
if __use_win_types:
3591-
_urAdapterGetInfo_t = WINFUNCTYPE( ur_result_t, ur_adapter_handle_t, ur_adapter_info_t, c_size_t, c_void_p, POINTER(c_size_t) )
3592-
else:
3593-
_urAdapterGetInfo_t = CFUNCTYPE( ur_result_t, ur_adapter_handle_t, ur_adapter_info_t, c_size_t, c_void_p, POINTER(c_size_t) )
3594-
3595-
3596-
###############################################################################
3597-
## @brief Table of Global functions pointers
3598-
class ur_global_dditable_t(Structure):
3599-
_fields_ = [
3600-
("pfnInit", c_void_p), ## _urInit_t
3601-
("pfnTearDown", c_void_p), ## _urTearDown_t
3602-
("pfnAdapterGet", c_void_p), ## _urAdapterGet_t
3603-
("pfnAdapterRelease", c_void_p), ## _urAdapterRelease_t
3604-
("pfnAdapterRetain", c_void_p), ## _urAdapterRetain_t
3605-
("pfnAdapterGetLastError", c_void_p), ## _urAdapterGetLastError_t
3606-
("pfnAdapterGetInfo", c_void_p) ## _urAdapterGetInfo_t
3607-
]
3608-
36093593
###############################################################################
36103594
## @brief Function-pointer for urVirtualMemGranularityGetInfo
36113595
if __use_win_types:
@@ -3759,14 +3743,14 @@ class ur_dditable_t(Structure):
37593743
("Sampler", ur_sampler_dditable_t),
37603744
("Mem", ur_mem_dditable_t),
37613745
("PhysicalMem", ur_physical_mem_dditable_t),
3746+
("Global", ur_global_dditable_t),
37623747
("Enqueue", ur_enqueue_dditable_t),
37633748
("Queue", ur_queue_dditable_t),
37643749
("BindlessImagesExp", ur_bindless_images_exp_dditable_t),
37653750
("USM", ur_usm_dditable_t),
37663751
("USMExp", ur_usm_exp_dditable_t),
37673752
("CommandBufferExp", ur_command_buffer_exp_dditable_t),
37683753
("UsmP2PExp", ur_usm_p2p_exp_dditable_t),
3769-
("Global", ur_global_dditable_t),
37703754
("VirtualMem", ur_virtual_mem_dditable_t),
37713755
("Device", ur_device_dditable_t)
37723756
]
@@ -3785,7 +3769,7 @@ def __init__(self, version : ur_api_version_t):
37853769
self.__dditable = ur_dditable_t()
37863770

37873771
# initialize the UR
3788-
self.__dll.urInit(0, 0)
3772+
self.__dll.urLoaderInit(0, 0)
37893773

37903774
# call driver to get function pointers
37913775
Platform = ur_platform_dditable_t()
@@ -3927,6 +3911,20 @@ def __init__(self, version : ur_api_version_t):
39273911
self.urPhysicalMemRetain = _urPhysicalMemRetain_t(self.__dditable.PhysicalMem.pfnRetain)
39283912
self.urPhysicalMemRelease = _urPhysicalMemRelease_t(self.__dditable.PhysicalMem.pfnRelease)
39293913

3914+
# call driver to get function pointers
3915+
Global = ur_global_dditable_t()
3916+
r = ur_result_v(self.__dll.urGetGlobalProcAddrTable(version, byref(Global)))
3917+
if r != ur_result_v.SUCCESS:
3918+
raise Exception(r)
3919+
self.__dditable.Global = Global
3920+
3921+
# attach function interface to function address
3922+
self.urAdapterGet = _urAdapterGet_t(self.__dditable.Global.pfnAdapterGet)
3923+
self.urAdapterRelease = _urAdapterRelease_t(self.__dditable.Global.pfnAdapterRelease)
3924+
self.urAdapterRetain = _urAdapterRetain_t(self.__dditable.Global.pfnAdapterRetain)
3925+
self.urAdapterGetLastError = _urAdapterGetLastError_t(self.__dditable.Global.pfnAdapterGetLastError)
3926+
self.urAdapterGetInfo = _urAdapterGetInfo_t(self.__dditable.Global.pfnAdapterGetInfo)
3927+
39303928
# call driver to get function pointers
39313929
Enqueue = ur_enqueue_dditable_t()
39323930
r = ur_result_v(self.__dll.urGetEnqueueProcAddrTable(version, byref(Enqueue)))
@@ -4068,22 +4066,6 @@ def __init__(self, version : ur_api_version_t):
40684066
self.urUsmP2PDisablePeerAccessExp = _urUsmP2PDisablePeerAccessExp_t(self.__dditable.UsmP2PExp.pfnDisablePeerAccessExp)
40694067
self.urUsmP2PPeerAccessGetInfoExp = _urUsmP2PPeerAccessGetInfoExp_t(self.__dditable.UsmP2PExp.pfnPeerAccessGetInfoExp)
40704068

4071-
# call driver to get function pointers
4072-
Global = ur_global_dditable_t()
4073-
r = ur_result_v(self.__dll.urGetGlobalProcAddrTable(version, byref(Global)))
4074-
if r != ur_result_v.SUCCESS:
4075-
raise Exception(r)
4076-
self.__dditable.Global = Global
4077-
4078-
# attach function interface to function address
4079-
self.urInit = _urInit_t(self.__dditable.Global.pfnInit)
4080-
self.urTearDown = _urTearDown_t(self.__dditable.Global.pfnTearDown)
4081-
self.urAdapterGet = _urAdapterGet_t(self.__dditable.Global.pfnAdapterGet)
4082-
self.urAdapterRelease = _urAdapterRelease_t(self.__dditable.Global.pfnAdapterRelease)
4083-
self.urAdapterRetain = _urAdapterRetain_t(self.__dditable.Global.pfnAdapterRetain)
4084-
self.urAdapterGetLastError = _urAdapterGetLastError_t(self.__dditable.Global.pfnAdapterGetLastError)
4085-
self.urAdapterGetInfo = _urAdapterGetInfo_t(self.__dditable.Global.pfnAdapterGetInfo)
4086-
40874069
# call driver to get function pointers
40884070
VirtualMem = ur_virtual_mem_dditable_t()
40894071
r = ur_result_v(self.__dll.urGetVirtualMemProcAddrTable(version, byref(VirtualMem)))

0 commit comments

Comments
 (0)