Skip to content

Commit

Permalink
[common] move makeDisjointPool and makeProxyPool to common
Browse files Browse the repository at this point in the history
this will be useful for other adapters as well.
  • Loading branch information
igchor committed Feb 3, 2025
1 parent a4b9361 commit 16dcdde
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 27 deletions.
30 changes: 3 additions & 27 deletions source/adapters/level_zero/v2/usm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
#include "umf_pools/disjoint_pool_config_parser.hpp"
#include "usm.hpp"

#include <umf/pools/pool_disjoint.h>
#include <umf/pools/pool_proxy.h>
#include <umf/providers/provider_level_zero.h>

namespace umf {
Expand Down Expand Up @@ -158,28 +156,6 @@ makeProvider(usm::pool_descriptor poolDescriptor) {
return std::move(provider);
}

static umf::pool_unique_handle_t
makeDisjointPool(umf::provider_unique_handle_t &&provider,
usm::umf_disjoint_pool_config_t &poolParams) {
auto umfParams = getUmfParamsHandle(poolParams);
auto [ret, poolHandle] =
umf::poolMakeUniqueFromOps(umfDisjointPoolOps(), std::move(provider),
static_cast<void *>(umfParams.get()));
if (ret != UMF_RESULT_SUCCESS)
throw umf::umf2urResult(ret);
return std::move(poolHandle);
}

static umf::pool_unique_handle_t
makeProxyPool(umf::provider_unique_handle_t &&provider) {
auto [ret, poolHandle] = umf::poolMakeUniqueFromOps(
umfProxyPoolOps(), std::move(provider), nullptr);
if (ret != UMF_RESULT_SUCCESS)
throw umf::umf2urResult(ret);

return std::move(poolHandle);
}

ur_usm_pool_handle_t_::ur_usm_pool_handle_t_(ur_context_handle_t hContext,
ur_usm_pool_desc_t *pPoolDesc)
: hContext(hContext) {
Expand Down Expand Up @@ -207,10 +183,10 @@ ur_usm_pool_handle_t_::ur_usm_pool_handle_t_(ur_context_handle_t hContext,
if (disjointPoolConfigs.has_value()) {
auto &poolConfig =
disjointPoolConfigs.value().Configs[descToDisjoinPoolMemType(desc)];
poolManager.addPool(desc,
makeDisjointPool(makeProvider(desc), poolConfig));
poolManager.addPool(
desc, usm::makeDisjointPool(makeProvider(desc), poolConfig));
} else {
poolManager.addPool(desc, makeProxyPool(makeProvider(desc)));
poolManager.addPool(desc, usm::makeProxyPool(makeProvider(desc)));
}
}
}
Expand Down
23 changes: 23 additions & 0 deletions source/common/ur_pool_manager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include <umf/memory_pool.h>
#include <umf/memory_provider.h>
#include <umf/pools/pool_disjoint.h>
#include <umf/pools/pool_proxy.h>

#include <functional>
#include <unordered_map>
Expand Down Expand Up @@ -290,6 +291,28 @@ template <typename D> struct pool_manager {
}
};

inline umf::pool_unique_handle_t
makeDisjointPool(umf::provider_unique_handle_t &&provider,
usm::umf_disjoint_pool_config_t &poolParams) {
auto umfParams = getUmfParamsHandle(poolParams);
auto [ret, poolHandle] =
umf::poolMakeUniqueFromOps(umfDisjointPoolOps(), std::move(provider),
static_cast<void *>(umfParams.get()));
if (ret != UMF_RESULT_SUCCESS)
throw umf::umf2urResult(ret);
return std::move(poolHandle);
}

inline umf::pool_unique_handle_t
makeProxyPool(umf::provider_unique_handle_t &&provider) {
auto [ret, poolHandle] = umf::poolMakeUniqueFromOps(
umfProxyPoolOps(), std::move(provider), nullptr);
if (ret != UMF_RESULT_SUCCESS)
throw umf::umf2urResult(ret);

return std::move(poolHandle);
}

} // namespace usm

namespace std {
Expand Down

0 comments on commit 16dcdde

Please sign in to comment.