22 #if !defined( BOLT_AMP_CONTROL_H )
23 #define BOLT_AMP_CONTROL_H
88 enum e_AutoTuneMode{NoAutoTune=0x0,
90 AutoTuneWorkShape=0x2,
93 static const unsigned None=0;
94 static const unsigned Compile = 0x1;
95 static const unsigned ShowCode = 0x2;
96 static const unsigned SaveCompilerTemps = 0x4;
97 static const unsigned DebugKernelRun = 0x8;
98 static const unsigned AutoTune = 0x10;
112 Concurrency::accelerator accel=
getDefault().getAccelerator(),
113 e_UseHostMode useHost=
getDefault().getUseHost(),
116 m_accelerator(accel),
121 m_wgPerComputeUnit(
getDefault().m_wgPerComputeUnit),
126 control(
const control& ref) :
127 m_accelerator(ref.m_accelerator),
128 m_useHost(ref.m_useHost),
129 m_forceRunMode(ref.m_forceRunMode),
130 m_debug(ref.m_debug),
131 m_autoTune(ref.m_autoTune),
132 m_wgPerComputeUnit(ref.m_wgPerComputeUnit),
133 m_waitMode(ref.m_waitMode),
134 m_unroll(ref.m_unroll)
141 void setAccelerator(::Concurrency::accelerator accel) { m_accelerator = accel; };
146 void setUseHost(e_UseHostMode useHost) { m_useHost = useHost; };
179 Concurrency::accelerator& getAccelerator( ) {
return m_accelerator; };
180 const Concurrency::accelerator& getAccelerator( )
const {
return m_accelerator; };
182 e_UseHostMode getUseHost()
const {
return m_useHost; };
183 e_RunMode getForceRunMode()
const {
return m_forceRunMode; };
184 unsigned getDebug()
const {
return m_debug;};
185 int const getWGPerComputeUnit()
const {
return m_wgPerComputeUnit; };
186 e_WaitMode getWaitMode()
const {
return m_waitMode; };
187 int getUnroll()
const {
return m_unroll; };
207 static control _defaultControl(
true );
208 return _defaultControl;
220 m_accelerator( Concurrency::accelerator::default_accelerator ),
222 m_forceRunMode(Automatic),
223 m_debug(debug::None),
224 m_autoTune(AutoTuneAll),
225 m_wgPerComputeUnit(8),
226 m_waitMode(BusyWait),
231 ::Concurrency::accelerator m_accelerator;
232 e_UseHostMode m_useHost;
233 e_RunMode m_forceRunMode;
234 e_AutoTuneMode m_autoTune;
236 int m_wgPerComputeUnit;
237 e_WaitMode m_waitMode;