158 lines
14 KiB
TeX
158 lines
14 KiB
TeX
\hypertarget{classparadiseo_1_1smp_1_1_scheduler}{}\doxysection{paradiseo\+::smp\+::Scheduler$<$ E\+OT, Policy $>$ Class Template Reference}
|
|
\label{classparadiseo_1_1smp_1_1_scheduler}\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
|
|
|
|
|
|
{\ttfamily \#include $<$scheduler.\+h$>$}
|
|
|
|
\doxysubsection*{Public Member Functions}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_a73a5cf14c34dcbd08339504082cd1fda}{Scheduler}} (unsigned workers\+Nb)
|
|
\item
|
|
\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_a84b118f77e28d50d71e2b08b2db8423c}{$\sim$\+Scheduler}} ()
|
|
\item
|
|
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_af1c0b7aceef7a5cb8e5e959736f11874}{operator()}} (\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&func, \mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&pop)
|
|
\end{DoxyCompactItemize}
|
|
\doxysubsection*{Protected Member Functions}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_a50cc51162245ca758e50704e1e052483}{operator()}} (\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&func, \mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&pop, const \mbox{\hyperlink{structparadiseo_1_1smp_1_1_linear_policy}{Linear\+Policy}} \&)
|
|
\item
|
|
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_aacbf905de811e7a985bacb89435c6da4}{operator()}} (\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&func, \mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&pop, const \mbox{\hyperlink{structparadiseo_1_1smp_1_1_progressive_policy}{Progressive\+Policy}} \&)
|
|
\item
|
|
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_abe2f7f58de797c9b8b4ca8d464b7a226}{apply\+Linear\+Policy}} (\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&func, std\+::vector$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $\ast$ $>$ \&pop)
|
|
\item
|
|
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_a8a5f5b39b455ae469ac74b2e99448b11}{apply\+Progressive\+Policy}} (\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&func, std\+::vector$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $\ast$ $>$ \&pop, int id)
|
|
\item
|
|
std\+::vector$<$ std\+::vector$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $\ast$ $>$ $>$ \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_abd4cfd0a104a325e0b4aec63ea1e291c}{sub\+Groups}} (\mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&pop)
|
|
\end{DoxyCompactItemize}
|
|
\doxysubsection*{Protected Attributes}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_aba9590b8107801bc325ad89bedd2e394}\label{classparadiseo_1_1smp_1_1_scheduler_aba9590b8107801bc325ad89bedd2e394}}
|
|
std\+::vector$<$ std\+::thread $>$ {\bfseries workers}
|
|
\item
|
|
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_aa74a0d339c55fce76868e37f4d8ae969}\label{classparadiseo_1_1smp_1_1_scheduler_aa74a0d339c55fce76868e37f4d8ae969}}
|
|
std\+::vector$<$ std\+::vector$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $\ast$ $>$ $>$ {\bfseries pop\+Packages}
|
|
\item
|
|
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_ac888b57d95d55e5f221b2991c153ffba}\label{classparadiseo_1_1smp_1_1_scheduler_ac888b57d95d55e5f221b2991c153ffba}}
|
|
std\+::atomic$<$ bool $>$ {\bfseries done}
|
|
\item
|
|
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_af2793b25cc73c0019243ad20627cff26}\label{classparadiseo_1_1smp_1_1_scheduler_af2793b25cc73c0019243ad20627cff26}}
|
|
std\+::vector$<$ unsigned $>$ {\bfseries planning}
|
|
\item
|
|
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_af2e67d2b9da11b8e4a0a7529f4e87212}\label{classparadiseo_1_1smp_1_1_scheduler_af2e67d2b9da11b8e4a0a7529f4e87212}}
|
|
std\+::vector$<$ std\+::atomic$<$ int $>$ $>$ {\bfseries is\+Working}
|
|
\item
|
|
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_a7e56bb965fa429fb311e31b313e10d5b}\label{classparadiseo_1_1smp_1_1_scheduler_a7e56bb965fa429fb311e31b313e10d5b}}
|
|
std\+::vector$<$ std\+::mutex $>$ {\bfseries m}
|
|
\end{DoxyCompactItemize}
|
|
|
|
|
|
\doxysubsection{Detailed Description}
|
|
\subsubsection*{template$<$class E\+OT, class Policy = Linear\+Policy$>$\newline
|
|
class paradiseo\+::smp\+::\+Scheduler$<$ E\+O\+T, Policy $>$}
|
|
|
|
\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{Scheduler}} \+: Dispatch load between workers according to a policy.
|
|
|
|
Dispatch load between the specified number of workers according to a policy.
|
|
|
|
\doxysubsection{Constructor \& Destructor Documentation}
|
|
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_a73a5cf14c34dcbd08339504082cd1fda}\label{classparadiseo_1_1smp_1_1_scheduler_a73a5cf14c34dcbd08339504082cd1fda}}
|
|
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!Scheduler@{Scheduler}}
|
|
\index{Scheduler@{Scheduler}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
|
|
\doxysubsubsection{\texorpdfstring{Scheduler()}{Scheduler()}}
|
|
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
|
|
\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{Scheduler}} (\begin{DoxyParamCaption}\item[{unsigned}]{workers\+Nb }\end{DoxyParamCaption})}
|
|
|
|
Constructor
|
|
\begin{DoxyParams}{Parameters}
|
|
{\em workers\+Nb} & number of workers to perform tasks \\
|
|
\hline
|
|
\end{DoxyParams}
|
|
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_a84b118f77e28d50d71e2b08b2db8423c}\label{classparadiseo_1_1smp_1_1_scheduler_a84b118f77e28d50d71e2b08b2db8423c}}
|
|
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!````~Scheduler@{$\sim$Scheduler}}
|
|
\index{````~Scheduler@{$\sim$Scheduler}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
|
|
\doxysubsubsection{\texorpdfstring{$\sim$Scheduler()}{~Scheduler()}}
|
|
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
|
|
\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::$\sim$\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{Scheduler}}}
|
|
|
|
Destructor
|
|
|
|
\doxysubsection{Member Function Documentation}
|
|
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_abe2f7f58de797c9b8b4ca8d464b7a226}\label{classparadiseo_1_1smp_1_1_scheduler_abe2f7f58de797c9b8b4ca8d464b7a226}}
|
|
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!applyLinearPolicy@{applyLinearPolicy}}
|
|
\index{applyLinearPolicy@{applyLinearPolicy}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
|
|
\doxysubsubsection{\texorpdfstring{applyLinearPolicy()}{applyLinearPolicy()}}
|
|
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
|
|
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::apply\+Linear\+Policy (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&}]{func, }\item[{std\+::vector$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $\ast$ $>$ \&}]{pop }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}
|
|
|
|
Apply an unary functor on a sub-\/group of population
|
|
\begin{DoxyParams}{Parameters}
|
|
{\em func} & unary functor \\
|
|
\hline
|
|
{\em pop} & reference to the sub-\/group \\
|
|
\hline
|
|
\end{DoxyParams}
|
|
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_a8a5f5b39b455ae469ac74b2e99448b11}\label{classparadiseo_1_1smp_1_1_scheduler_a8a5f5b39b455ae469ac74b2e99448b11}}
|
|
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!applyProgressivePolicy@{applyProgressivePolicy}}
|
|
\index{applyProgressivePolicy@{applyProgressivePolicy}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
|
|
\doxysubsubsection{\texorpdfstring{applyProgressivePolicy()}{applyProgressivePolicy()}}
|
|
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
|
|
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::apply\+Progressive\+Policy (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&}]{func, }\item[{std\+::vector$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $\ast$ $>$ \&}]{pop, }\item[{int}]{id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}
|
|
|
|
Apply an unary functor on a sub-\/group of population
|
|
\begin{DoxyParams}{Parameters}
|
|
{\em func} & unary functor \\
|
|
\hline
|
|
{\em pop} & reference to the sub-\/group \\
|
|
\hline
|
|
{\em id} & id of the thread \\
|
|
\hline
|
|
\end{DoxyParams}
|
|
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_af1c0b7aceef7a5cb8e5e959736f11874}\label{classparadiseo_1_1smp_1_1_scheduler_af1c0b7aceef7a5cb8e5e959736f11874}}
|
|
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!operator()@{operator()}}
|
|
\index{operator()@{operator()}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
|
|
\doxysubsubsection{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
|
|
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
|
|
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::operator() (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&}]{func, }\item[{\mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&}]{pop }\end{DoxyParamCaption})}
|
|
|
|
Start an unary functor on workers on all the pop
|
|
\begin{DoxyParams}{Parameters}
|
|
{\em func} & unary functor \\
|
|
\hline
|
|
{\em pop} & reference to the population \\
|
|
\hline
|
|
\end{DoxyParams}
|
|
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_a50cc51162245ca758e50704e1e052483}\label{classparadiseo_1_1smp_1_1_scheduler_a50cc51162245ca758e50704e1e052483}}
|
|
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!operator()@{operator()}}
|
|
\index{operator()@{operator()}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
|
|
\doxysubsubsection{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
|
|
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
|
|
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::operator() (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&}]{func, }\item[{\mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&}]{pop, }\item[{const \mbox{\hyperlink{structparadiseo_1_1smp_1_1_linear_policy}{Linear\+Policy}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}
|
|
|
|
Perform scheduling with a linear policy \mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_aacbf905de811e7a985bacb89435c6da4}\label{classparadiseo_1_1smp_1_1_scheduler_aacbf905de811e7a985bacb89435c6da4}}
|
|
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!operator()@{operator()}}
|
|
\index{operator()@{operator()}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
|
|
\doxysubsubsection{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
|
|
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
|
|
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::operator() (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&}]{func, }\item[{\mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&}]{pop, }\item[{const \mbox{\hyperlink{structparadiseo_1_1smp_1_1_progressive_policy}{Progressive\+Policy}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}
|
|
|
|
Perform scheduling with a linear policy \mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_abd4cfd0a104a325e0b4aec63ea1e291c}\label{classparadiseo_1_1smp_1_1_scheduler_abd4cfd0a104a325e0b4aec63ea1e291c}}
|
|
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!subGroups@{subGroups}}
|
|
\index{subGroups@{subGroups}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
|
|
\doxysubsubsection{\texorpdfstring{subGroups()}{subGroups()}}
|
|
{\footnotesize\ttfamily template$<$class E\+OT , class Policy = Linear\+Policy$>$ \\
|
|
std\+::vector$<$std\+::vector$<$\mbox{\hyperlink{struct_dummy}{E\+OT}}$\ast$$>$ $>$ \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::sub\+Groups (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&}]{pop }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}
|
|
|
|
Create sub-\/groups with similar size from a population.
|
|
\begin{DoxyParams}{Parameters}
|
|
{\em pop} & reference to the pop \\
|
|
\hline
|
|
\end{DoxyParams}
|
|
|
|
|
|
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
|
|
\item
|
|
smp/src/scheduler.\+h\item
|
|
smp/src/scheduler.\+cpp\end{DoxyCompactItemize}
|