blob: aebf23f261f0a33a274bb33b8a6d20cdaa2ca802 [file] [log] [blame]
// Copyright © 2022 Apple Inc.
#include <ATen/detail/MPSHooksInterface.h>
#include <c10/util/CallOnce.h>
namespace at {
namespace detail {
const MPSHooksInterface& getMPSHooks() {
static std::unique_ptr<MPSHooksInterface> mps_hooks;
#if !defined C10_MOBILE
static c10::once_flag once;
c10::call_once(once, [] {
mps_hooks = MPSHooksRegistry()->Create("MPSHooks", MPSHooksArgs{});
if (!mps_hooks) {
mps_hooks = std::make_unique<MPSHooksInterface>();
}
});
#else
if (mps_hooks == nullptr) {
mps_hooks = std::make_unique<MPSHooksInterface>();
}
#endif
return *mps_hooks;
}
} // namespace detail
C10_DEFINE_REGISTRY(MPSHooksRegistry, MPSHooksInterface, MPSHooksArgs)
} // namespace at