\doxysection{machine\+\_\+topology.\+hpp}
\hypertarget{machine__topology_8hpp_source}{}\label{machine__topology_8hpp_source}\index{ginkgo/core/base/machine\_topology.hpp@{ginkgo/core/base/machine\_topology.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{comment}{//\ SPDX-\/FileCopyrightText:\ 2017\ -\/\ 2024\ The\ Ginkgo\ authors}}
\DoxyCodeLine{00002\ \textcolor{comment}{//}}
\DoxyCodeLine{00003\ \textcolor{comment}{//\ SPDX-\/License-\/Identifier:\ BSD-\/3-\/Clause}}
\DoxyCodeLine{00004\ }
\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#ifndef\ GKO\_PUBLIC\_CORE\_BASE\_MACHINE\_TOPOLOGY\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_BASE\_MACHINE\_TOPOLOGY\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <cassert>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <cstddef>}}
\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <functional>}}
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <iostream>}}
\DoxyCodeLine{00013\ \textcolor{preprocessor}{\#include\ <memory>}}
\DoxyCodeLine{00014\ \textcolor{preprocessor}{\#include\ <mutex>}}
\DoxyCodeLine{00015\ \textcolor{preprocessor}{\#include\ <string>}}
\DoxyCodeLine{00016\ \textcolor{preprocessor}{\#include\ <type\_traits>}}
\DoxyCodeLine{00017\ \textcolor{preprocessor}{\#include\ <vector>}}
\DoxyCodeLine{00018\ }
\DoxyCodeLine{00019\ \textcolor{preprocessor}{\#include\ <ginkgo/config.hpp>}}
\DoxyCodeLine{00020\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/exception.hpp>}}
\DoxyCodeLine{00021\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/exception\_helpers.hpp>}}
\DoxyCodeLine{00022\ }
\DoxyCodeLine{00023\ }
\DoxyCodeLine{00024\ \textcolor{preprocessor}{\#if\ GKO\_HAVE\_HWLOC}}
\DoxyCodeLine{00025\ }
\DoxyCodeLine{00026\ \textcolor{preprocessor}{\#include\ <hwloc.h>}}
\DoxyCodeLine{00027\ }
\DoxyCodeLine{00028\ \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{00029\ }
\DoxyCodeLine{00030\ \textcolor{keyword}{struct\ }\doxymbox{\hyperlink{structhwloc__obj__type__t}{hwloc\_obj\_type\_t}}\ \{\};}
\DoxyCodeLine{00031\ \textcolor{keyword}{struct\ }\doxymbox{\hyperlink{structhwloc__obj__t}{hwloc\_obj\_t}}\ \{\};}
\DoxyCodeLine{00032\ }
\DoxyCodeLine{00033\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00034\ }
\DoxyCodeLine{00035\ }
\DoxyCodeLine{00036\ \textcolor{keyword}{struct\ }hwloc\_topology;}
\DoxyCodeLine{00037\ \textcolor{keyword}{struct\ }hwloc\_bitmap\_s;}
\DoxyCodeLine{00038\ }
\DoxyCodeLine{00039\ }
\DoxyCodeLine{00040\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00041\ }
\DoxyCodeLine{00042\ }
\DoxyCodeLine{00061\ \textcolor{keyword}{class\ }machine\_topology\ \{}
\DoxyCodeLine{00062\ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00063\ \ \ \ \ \textcolor{keyword}{using\ }hwloc\_manager\ =\ std::unique\_ptr<T,\ std::function<void(T*)>>;}
\DoxyCodeLine{00064\ }
\DoxyCodeLine{00068\ \ \ \ \ \textcolor{keyword}{struct\ }normal\_obj\_info\ \{}
\DoxyCodeLine{00072\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structhwloc__obj__t}{hwloc\_obj\_t}}\ obj;}
\DoxyCodeLine{00073\ }
\DoxyCodeLine{00081\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ logical\_id;}
\DoxyCodeLine{00082\ }
\DoxyCodeLine{00086\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ os\_id;}
\DoxyCodeLine{00087\ }
\DoxyCodeLine{00091\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ gp\_id;}
\DoxyCodeLine{00092\ }
\DoxyCodeLine{00096\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ numa;}
\DoxyCodeLine{00097\ }
\DoxyCodeLine{00101\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ memory\_size;}
\DoxyCodeLine{00102\ \ \ \ \ \};}
\DoxyCodeLine{00103\ }
\DoxyCodeLine{00104\ }
\DoxyCodeLine{00121\ \ \ \ \ \textcolor{keyword}{struct\ }io\_obj\_info\ \{}
\DoxyCodeLine{00125\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structhwloc__obj__t}{hwloc\_obj\_t}}\ obj;}
\DoxyCodeLine{00126\ }
\DoxyCodeLine{00133\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ logical\_id;}
\DoxyCodeLine{00134\ }
\DoxyCodeLine{00138\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ os\_id;}
\DoxyCodeLine{00139\ }
\DoxyCodeLine{00143\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ gp\_id;}
\DoxyCodeLine{00144\ }
\DoxyCodeLine{00148\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ closest\_numa;}
\DoxyCodeLine{00149\ }
\DoxyCodeLine{00153\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structhwloc__obj__t}{hwloc\_obj\_t}}\ non\_io\_ancestor;}
\DoxyCodeLine{00154\ }
\DoxyCodeLine{00158\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ ancestor\_local\_id;}
\DoxyCodeLine{00159\ }
\DoxyCodeLine{00163\ \ \ \ \ \ \ \ \ std::string\ ancestor\_type;}
\DoxyCodeLine{00164\ }
\DoxyCodeLine{00168\ \ \ \ \ \ \ \ \ std::vector<int>\ closest\_pu\_ids;}
\DoxyCodeLine{00169\ }
\DoxyCodeLine{00173\ \ \ \ \ \ \ \ \ std::string\ pci\_bus\_id;}
\DoxyCodeLine{00174\ \ \ \ \ \};}
\DoxyCodeLine{00175\ }
\DoxyCodeLine{00176\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00182\ \ \ \ \ \textcolor{keyword}{static}\ machine\_topology*\ \doxymbox{\hyperlink{classgko_1_1machine__topology_a78ca968f9890a1e3d6758136ead05982}{get\_instance}}()}
\DoxyCodeLine{00183\ \ \ \ \ \{}
\DoxyCodeLine{00184\ \ \ \ \ \ \ \ \ \textcolor{keyword}{static}\ machine\_topology\ instance;}
\DoxyCodeLine{00185\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \&instance;}
\DoxyCodeLine{00186\ \ \ \ \ \}}
\DoxyCodeLine{00187\ }
\DoxyCodeLine{00200\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1machine__topology_aa63dcb3e4080720109cf9e48bfc97f42}{bind\_to\_cores}}(\textcolor{keyword}{const}\ std::vector<int>\&\ ids,}
\DoxyCodeLine{00201\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\ singlify\ =\ \textcolor{keyword}{true})\textcolor{keyword}{\ const}}
\DoxyCodeLine{00202\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00203\ \ \ \ \ \ \ \ \ hwloc\_binding\_helper(this-\/>cores\_,\ ids,\ singlify);}
\DoxyCodeLine{00204\ \ \ \ \ \}}
\DoxyCodeLine{00205\ }
\DoxyCodeLine{00211\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1machine__topology_a9a18cb07c0fcc866997c727abfac52d9}{bind\_to\_core}}(\textcolor{keyword}{const}\ \textcolor{keywordtype}{int}\&\ \textcolor{keywordtype}{id})\textcolor{keyword}{\ const}}
\DoxyCodeLine{00212\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00213\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1machine__topology_a78ca968f9890a1e3d6758136ead05982}{machine\_topology::get\_instance}}()-\/>\doxymbox{\hyperlink{classgko_1_1machine__topology_aa63dcb3e4080720109cf9e48bfc97f42}{bind\_to\_cores}}(std::vector<int>\{\textcolor{keywordtype}{id}\});}
\DoxyCodeLine{00214\ \ \ \ \ \}}
\DoxyCodeLine{00215\ }
\DoxyCodeLine{00228\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1machine__topology_a6c1579ec42001ec51ecb7102578bd932}{bind\_to\_pus}}(\textcolor{keyword}{const}\ std::vector<int>\&\ ids,}
\DoxyCodeLine{00229\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\ singlify\ =\ \textcolor{keyword}{true})\textcolor{keyword}{\ const}}
\DoxyCodeLine{00230\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00231\ \ \ \ \ \ \ \ \ hwloc\_binding\_helper(this-\/>pus\_,\ ids,\ singlify);}
\DoxyCodeLine{00232\ \ \ \ \ \}}
\DoxyCodeLine{00233\ }
\DoxyCodeLine{00239\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1machine__topology_a9788d302561048fa91257f71ca9fa4be}{bind\_to\_pu}}(\textcolor{keyword}{const}\ \textcolor{keywordtype}{int}\&\ \textcolor{keywordtype}{id})\textcolor{keyword}{\ const}}
\DoxyCodeLine{00240\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00241\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1machine__topology_a78ca968f9890a1e3d6758136ead05982}{machine\_topology::get\_instance}}()-\/>\doxymbox{\hyperlink{classgko_1_1machine__topology_a6c1579ec42001ec51ecb7102578bd932}{bind\_to\_pus}}(std::vector<int>\{\textcolor{keywordtype}{id}\});}
\DoxyCodeLine{00242\ \ \ \ \ \}}
\DoxyCodeLine{00243\ }
\DoxyCodeLine{00250\ \ \ \ \ \textcolor{keyword}{const}\ normal\_obj\_info*\ \doxymbox{\hyperlink{classgko_1_1machine__topology_ae864a73979eab71c483a1fa98f06e40e}{get\_pu}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \textcolor{keywordtype}{id})\textcolor{keyword}{\ const}}
\DoxyCodeLine{00251\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00252\ \ \ \ \ \ \ \ \ GKO\_ENSURE\_IN\_BOUNDS(\textcolor{keywordtype}{id},\ this-\/>pus\_.size());}
\DoxyCodeLine{00253\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \&this-\/>pus\_[id];}
\DoxyCodeLine{00254\ \ \ \ \ \}}
\DoxyCodeLine{00255\ }
\DoxyCodeLine{00262\ \ \ \ \ \textcolor{keyword}{const}\ normal\_obj\_info*\ \doxymbox{\hyperlink{classgko_1_1machine__topology_ad858b0c51fc5f1b52e30a99eead96195}{get\_core}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \textcolor{keywordtype}{id})\textcolor{keyword}{\ const}}
\DoxyCodeLine{00263\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00264\ \ \ \ \ \ \ \ \ GKO\_ENSURE\_IN\_BOUNDS(\textcolor{keywordtype}{id},\ this-\/>cores\_.size());}
\DoxyCodeLine{00265\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \&this-\/>cores\_[id];}
\DoxyCodeLine{00266\ \ \ \ \ \}}
\DoxyCodeLine{00267\ }
\DoxyCodeLine{00274\ \ \ \ \ \textcolor{keyword}{const}\ io\_obj\_info*\ \doxymbox{\hyperlink{classgko_1_1machine__topology_a418532af26120076cf61ffe885e8af9e}{get\_pci\_device}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \textcolor{keywordtype}{id})\textcolor{keyword}{\ const}}
\DoxyCodeLine{00275\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00276\ \ \ \ \ \ \ \ \ GKO\_ENSURE\_IN\_BOUNDS(\textcolor{keywordtype}{id},\ this-\/>pci\_devices\_.size());}
\DoxyCodeLine{00277\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \&this-\/>pci\_devices\_[id];}
\DoxyCodeLine{00278\ \ \ \ \ \}}
\DoxyCodeLine{00279\ }
\DoxyCodeLine{00286\ \ \ \ \ \textcolor{keyword}{const}\ io\_obj\_info*\ \doxymbox{\hyperlink{classgko_1_1machine__topology_a362ec0a57033790a9ce4612eba164a57}{get\_pci\_device}}(\textcolor{keyword}{const}\ std::string\&\ pci\_bus\_id)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00287\ }
\DoxyCodeLine{00293\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1machine__topology_a5da1e2bca0ff43d4c11f95fadd8b9fbd}{get\_num\_pus}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ this-\/>pus\_.size();\ \}}
\DoxyCodeLine{00294\ }
\DoxyCodeLine{00300\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1machine__topology_a7bf12a293f262450787591c656973191}{get\_num\_cores}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ this-\/>cores\_.size();\ \}}
\DoxyCodeLine{00301\ }
\DoxyCodeLine{00307\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1machine__topology_afd8db0ad172e7aa0727a2f22c6f6eb51}{get\_num\_pci\_devices}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ this-\/>pci\_devices\_.size();\ \}}
\DoxyCodeLine{00308\ }
\DoxyCodeLine{00314\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1machine__topology_a58f01249d4e688c8cf412d7f97388317}{get\_num\_numas}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ this-\/>num\_numas\_;\ \}}
\DoxyCodeLine{00315\ }
\DoxyCodeLine{00322\ \ \ \ \ \textcolor{keywordtype}{void}\ hwloc\_binding\_helper(}
\DoxyCodeLine{00323\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ std::vector<machine\_topology::normal\_obj\_info>\&\ obj,}
\DoxyCodeLine{00324\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ std::vector<int>\&\ ids,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\ singlify\ =\ \textcolor{keyword}{true})\ \textcolor{keyword}{const};}
\DoxyCodeLine{00325\ }
\DoxyCodeLine{00334\ \ \ \ \ \textcolor{keywordtype}{void}\ load\_objects(\doxymbox{\hyperlink{structhwloc__obj__type__t}{hwloc\_obj\_type\_t}}\ type,}
\DoxyCodeLine{00335\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::vector<normal\_obj\_info>\&\ objects)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00336\ }
\DoxyCodeLine{00345\ \ \ \ \ \textcolor{keywordtype}{void}\ load\_objects(\doxymbox{\hyperlink{structhwloc__obj__type__t}{hwloc\_obj\_type\_t}}\ type,}
\DoxyCodeLine{00346\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::vector<io\_obj\_info>\&\ vector)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00347\ }
\DoxyCodeLine{00354\ \ \ \ \ \textcolor{keywordtype}{int}\ get\_obj\_id\_by\_os\_index(\textcolor{keyword}{const}\ std::vector<normal\_obj\_info>\&\ objects,}
\DoxyCodeLine{00355\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ os\_index)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00356\ }
\DoxyCodeLine{00363\ \ \ \ \ \textcolor{keywordtype}{int}\ get\_obj\_id\_by\_gp\_index(\textcolor{keyword}{const}\ std::vector<normal\_obj\_info>\&\ objects,}
\DoxyCodeLine{00364\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ gp\_index)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00365\ }
\DoxyCodeLine{00366\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00371\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1machine__topology}{machine\_topology}}();}
\DoxyCodeLine{00372\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1machine__topology}{machine\_topology}}(\doxymbox{\hyperlink{classgko_1_1machine__topology}{machine\_topology}}\&)\ =\ \textcolor{keyword}{delete};}
\DoxyCodeLine{00373\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1machine__topology}{machine\_topology}}(\doxymbox{\hyperlink{classgko_1_1machine__topology}{machine\_topology}}\&\&)\ =\ \textcolor{keyword}{delete};}
\DoxyCodeLine{00374\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1machine__topology}{machine\_topology}}\&\ operator=(\doxymbox{\hyperlink{classgko_1_1machine__topology}{machine\_topology}}\&)\ =\ \textcolor{keyword}{delete};}
\DoxyCodeLine{00375\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1machine__topology}{machine\_topology}}\&\ operator=(\doxymbox{\hyperlink{classgko_1_1machine__topology}{machine\_topology}}\&\&)\ =\ \textcolor{keyword}{delete};}
\DoxyCodeLine{00376\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1machine__topology}{\string~machine\_topology}}()\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00377\ }
\DoxyCodeLine{00378\ \ \ \ \ std::vector<normal\_obj\_info>\ pus\_;}
\DoxyCodeLine{00379\ \ \ \ \ std::vector<normal\_obj\_info>\ cores\_;}
\DoxyCodeLine{00380\ \ \ \ \ std::vector<normal\_obj\_info>\ packages\_;}
\DoxyCodeLine{00381\ \ \ \ \ std::vector<normal\_obj\_info>\ numa\_nodes\_;}
\DoxyCodeLine{00382\ \ \ \ \ std::vector<io\_obj\_info>\ pci\_devices\_;}
\DoxyCodeLine{00383\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ num\_numas\_;}
\DoxyCodeLine{00384\ }
\DoxyCodeLine{00385\ \ \ \ \ hwloc\_manager<hwloc\_topology>\ topo\_;}
\DoxyCodeLine{00386\ \};}
\DoxyCodeLine{00387\ }
\DoxyCodeLine{00388\ }
\DoxyCodeLine{00389\ \textcolor{keyword}{using\ }MachineTopology\ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}please\ use\ machine\_topology"{}})\ =}
\DoxyCodeLine{00390\ \ \ \ \ machine\_topology;}
\DoxyCodeLine{00391\ }
\DoxyCodeLine{00392\ }
\DoxyCodeLine{00393\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00394\ }
\DoxyCodeLine{00395\ }
\DoxyCodeLine{00396\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_BASE\_MACHINE\_TOPOLOGY\_HPP\_}}

\end{DoxyCode}
