32 GlobalHandler::GlobalHandler() =
default;
33 GlobalHandler::~GlobalHandler() =
default;
37 return *SyclGlobalObjectsHandler;
40 template <
typename T,
typename... Types>
41 T &GlobalHandler::getOrCreate(InstWithLock<T> &IWL, Types... Args) {
45 IWL.Inst = std::make_unique<T>(Args...);
50 Scheduler &GlobalHandler::getScheduler() {
return getOrCreate(MScheduler); }
53 return getOrCreate(MProgramManager);
56 std::unordered_map<PlatformImplPtr, ContextImplPtr> &
57 GlobalHandler::getPlatformToDefaultContextCache() {
58 return getOrCreate(MPlatformToDefaultContextCache);
61 std::mutex &GlobalHandler::getPlatformToDefaultContextCacheMutex() {
62 return getOrCreate(MPlatformToDefaultContextCacheMutex);
65 Sync &GlobalHandler::getSync() {
return getOrCreate(MSync); }
67 std::vector<PlatformImplPtr> &GlobalHandler::getPlatformCache() {
68 return getOrCreate(MPlatformCache);
71 std::mutex &GlobalHandler::getPlatformMapMutex() {
72 return getOrCreate(MPlatformMapMutex);
75 std::mutex &GlobalHandler::getFilterMutex() {
76 return getOrCreate(MFilterMutex);
78 std::vector<plugin> &GlobalHandler::getPlugins() {
79 return getOrCreate(MPlugins);
82 GlobalHandler::getDeviceFilterList(
const std::string &InitValue) {
83 return getOrCreate(MDeviceFilterList, InitValue);
87 return getOrCreate(MXPTIRegistry);
90 std::mutex &GlobalHandler::getHandlerExtendedMembersMutex() {
91 return getOrCreate(MHandlerExtendedMembersMutex);
96 ThreadPool &TP = getOrCreate(MHostTaskThreadPool, Size);
104 GlobalHandler::instance().MPlatformToDefaultContextCache.Inst.reset(
nullptr);
111 GlobalHandler::instance().MPlatformToDefaultContextCache.Inst.release();
119 void GlobalHandler::registerDefaultContextReleaseHandler() {
126 if (GlobalHandler::instance().MHostTaskThreadPool.Inst)
127 GlobalHandler::instance().MHostTaskThreadPool.Inst->finishAndWait();
137 GlobalHandler::instance().MPlatformCache.Inst.reset(
nullptr);
138 GlobalHandler::instance().MScheduler.Inst.reset(
nullptr);
139 GlobalHandler::instance().MProgramManager.Inst.reset(
nullptr);
144 if (GlobalHandler::instance().MPlugins.Inst) {
145 for (
plugin &Plugin : GlobalHandler::instance().getPlugins()) {
149 void *PluginParameter =
nullptr;
153 GlobalHandler::instance().MPlugins.Inst.reset(
nullptr);
157 delete &GlobalHandler::instance();
161 extern "C" __SYCL_EXPORT BOOL WINAPI DllMain(HINSTANCE hinstDLL,
166 case DLL_PROCESS_DETACH:
170 case DLL_PROCESS_ATTACH:
171 case DLL_THREAD_ATTACH:
172 case DLL_THREAD_DETACH: