1717
1818#include < umf/providers/provider_level_zero.h>
1919
20+ static inline void UMF_CALL_THROWS (umf_result_t res) {
21+ if (res != UMF_RESULT_SUCCESS) {
22+ throw res;
23+ }
24+ }
25+
2026namespace umf {
2127ur_result_t getProviderNativeError (const char *providerName,
2228 int32_t nativeError) {
@@ -99,35 +105,21 @@ descToDisjoinPoolMemType(const usm::pool_descriptor &desc) {
99105static umf::provider_unique_handle_t
100106makeProvider (usm::pool_descriptor poolDescriptor) {
101107 umf_level_zero_memory_provider_params_handle_t hParams;
102- umf_result_t umf_ret = umfLevelZeroMemoryProviderParamsCreate (&hParams);
103- if (umf_ret != UMF_RESULT_SUCCESS) {
104- throw umf::umf2urResult (umf_ret);
105- }
106-
108+ UMF_CALL_THROWS (umfLevelZeroMemoryProviderParamsCreate (&hParams));
107109 std::unique_ptr<umf_level_zero_memory_provider_params_t ,
108110 decltype (&umfLevelZeroMemoryProviderParamsDestroy)>
109111 params (hParams, &umfLevelZeroMemoryProviderParamsDestroy);
110112
111- umf_ret = umfLevelZeroMemoryProviderParamsSetContext (
112- hParams, poolDescriptor.hContext ->getZeHandle ());
113- if (umf_ret != UMF_RESULT_SUCCESS) {
114- throw umf::umf2urResult (umf_ret);
115- };
113+ UMF_CALL_THROWS (umfLevelZeroMemoryProviderParamsSetContext (
114+ hParams, poolDescriptor.hContext ->getZeHandle ()));
116115
117116 ze_device_handle_t level_zero_device_handle =
118117 poolDescriptor.hDevice ? poolDescriptor.hDevice ->ZeDevice : nullptr ;
119118
120- umf_ret = umfLevelZeroMemoryProviderParamsSetDevice (hParams,
121- level_zero_device_handle);
122- if (umf_ret != UMF_RESULT_SUCCESS) {
123- throw umf::umf2urResult (umf_ret);
124- }
125-
126- umf_ret = umfLevelZeroMemoryProviderParamsSetMemoryType (
127- hParams, urToUmfMemoryType (poolDescriptor.type ));
128- if (umf_ret != UMF_RESULT_SUCCESS) {
129- throw umf::umf2urResult (umf_ret);
130- }
119+ UMF_CALL_THROWS (umfLevelZeroMemoryProviderParamsSetDevice (
120+ hParams, level_zero_device_handle));
121+ UMF_CALL_THROWS (umfLevelZeroMemoryProviderParamsSetMemoryType (
122+ hParams, urToUmfMemoryType (poolDescriptor.type )));
131123
132124 std::vector<ze_device_handle_t > residentZeHandles;
133125
@@ -140,13 +132,13 @@ makeProvider(usm::pool_descriptor poolDescriptor) {
140132 residentZeHandles.push_back (device->ZeDevice );
141133 }
142134
143- umf_ret = umfLevelZeroMemoryProviderParamsSetResidentDevices (
144- hParams, residentZeHandles.data (), residentZeHandles.size ());
145- if (umf_ret != UMF_RESULT_SUCCESS) {
146- throw umf::umf2urResult (umf_ret);
147- }
135+ UMF_CALL_THROWS (umfLevelZeroMemoryProviderParamsSetResidentDevices (
136+ hParams, residentZeHandles.data (), residentZeHandles.size ()));
148137 }
149138
139+ UMF_CALL_THROWS (umfLevelZeroMemoryProviderParamsSetFreePolicy (
140+ hParams, UMF_LEVEL_ZERO_MEMORY_PROVIDER_FREE_POLICY_BLOCKING_FREE));
141+
150142 auto [ret, provider] =
151143 umf::providerMakeUniqueFromOps (umfLevelZeroMemoryProviderOps (), hParams);
152144 if (ret != UMF_RESULT_SUCCESS) {
0 commit comments