Skip to content

Commit 2975d26

Browse files
authored
[SYCL][UR][L0 v2] use blocking free when returning memory to the driver (#17375)
1 parent e2eaf58 commit 2975d26

File tree

1 file changed

+18
-26
lines changed
  • unified-runtime/source/adapters/level_zero/v2

1 file changed

+18
-26
lines changed

unified-runtime/source/adapters/level_zero/v2/usm.cpp

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
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+
2026
namespace umf {
2127
ur_result_t getProviderNativeError(const char *providerName,
2228
int32_t nativeError) {
@@ -99,35 +105,21 @@ descToDisjoinPoolMemType(const usm::pool_descriptor &desc) {
99105
static umf::provider_unique_handle_t
100106
makeProvider(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

Comments
 (0)