12 #ifdef ETL_MANUAL_SELECT 31 #ifdef ETL_MANUAL_SELECT 32 forced_impl<sum_impl> sum_selector;
33 forced_impl<pool_impl> pool_selector;
34 forced_impl<transpose_impl> transpose_selector;
35 forced_impl<dot_impl> dot_selector;
36 forced_impl<conv_impl> conv_selector;
37 forced_impl<conv_multi_impl> conv_multi_selector;
38 forced_impl<conv4_impl> conv4_selector;
39 forced_impl<gemm_impl> gemm_selector;
40 forced_impl<outer_impl> outer_selector;
41 forced_impl<bias_add_impl> bias_add_selector;
42 forced_impl<fft_impl> fft_selector;
61 #ifdef ETL_MANUAL_SELECT 63 return c.sum_selector.forced || c.pool_selector.forced || c.transpose_selector.forced || c.dot_selector.forced || c.conv_selector.forced
64 || c.conv_multi_selector.forced || c.conv4_selector.forced || c.gemm_selector.forced || c.outer_selector.forced || c.bias_add_selector.forced
65 || c.fft_selector.forced;
73 #ifdef ETL_MANUAL_SELECT 81 forced_impl<T>& get_forced_impl();
87 inline forced_impl<sum_impl>& get_forced_impl() {
95 inline forced_impl<pool_impl>& get_forced_impl() {
103 inline forced_impl<transpose_impl>& get_forced_impl() {
111 inline forced_impl<dot_impl>& get_forced_impl() {
119 inline forced_impl<conv_impl>& get_forced_impl() {
127 inline forced_impl<conv_multi_impl>& get_forced_impl() {
135 inline forced_impl<conv4_impl>& get_forced_impl() {
143 inline forced_impl<gemm_impl>& get_forced_impl() {
151 inline forced_impl<outer_impl>& get_forced_impl() {
159 inline forced_impl<bias_add_impl>& get_forced_impl() {
167 inline forced_impl<fft_impl>& get_forced_impl() {
272 #ifdef ETL_MANUAL_SELECT 278 template <
typename Selector, Selector V>
279 struct selected_context {
280 forced_impl<Selector> old_selector;
289 decltype(
auto) selector = get_forced_impl<Selector>();
291 old_selector = selector;
294 selector.forced =
true;
302 ~selected_context() {
303 get_forced_impl<Selector>() = old_selector;
321 #define SERIAL_SECTION if (auto etl_serial_context__ = etl::detail::serial_context()) 326 #define PARALLEL_SECTION if (auto etl_parallel_context__ = etl::detail::parallel_context()) 331 #define CPU_SECTION if (auto etl_cpu_context__ = etl::detail::cpu_context()) 333 #ifdef ETL_MANUAL_SELECT 338 #define SELECTED_SECTION(v) if (auto etl_selected_context__ = etl::detail::selected_context<decltype(v), v>()) ~cpu_context()
Destruct a cpu context.
Definition: context.hpp:260
bool serial
Force serial execution.
Definition: context.hpp:27
parallel_context()
Default construct a parallel context.
Definition: context.hpp:217
bool old_cpu
The previous value of cpu.
Definition: context.hpp:243
The contextual configuration of ETL.
Definition: context.hpp:26
bool parallel
Force parallel execution.
Definition: context.hpp:28
serial_context()
Default construct a serial context.
Definition: context.hpp:184
bool old_serial
The previous value of serial.
Definition: context.hpp:177
Root namespace for the ETL library.
Definition: adapter.hpp:15
context & local_context()
Return the configuration context of the current thread.
Definition: context.hpp:50
RAII helper for setting the context to serial.
Definition: context.hpp:176
bool cpu
Force CPU evaluation.
Definition: context.hpp:29
cpu_context()
Default construct a cpu context.
Definition: context.hpp:250
auto parallel(Expr &&expr) -> parallel_expr< detail::build_type< Expr >>
Create a parallel expression wrapping the given expression.
Definition: wrapper_expression_builder.hpp:79
RAII helper for setting the context to cpu.
Definition: context.hpp:242
RAII helper for setting the context to parallel.
Definition: context.hpp:209
bool is_something_forced()
Indicates if some implementation is forced in the context.
Definition: context.hpp:60
auto serial(Expr &&expr) -> serial_expr< detail::build_type< Expr >>
Create a serial expression wrapping the given expression.
Definition: wrapper_expression_builder.hpp:66
~parallel_context()
Destruct a parallel context.
Definition: context.hpp:227
~serial_context()
Destruct a serial context.
Definition: context.hpp:194
bool old_parallel
The previous value of parallel.
Definition: context.hpp:210