void SamplerSMARTS::nextMode(bool rotate, FlowID fid, EmuMode mod){ if (rotate){ fetchNextMode(); I(next_mode != EmuInit); //If in live mode and warmup is to be forced if(BootLoader::genwarm > 0 && next_mode == EmuTiming) { BootLoader::genwarm--; setMode(EmuWarmup, fid); //setMode(EmuDetail, fid); } else if(BootLoader::live_warmup > 0 && next_mode == EmuTiming) { BootLoader::live_warmup--; //BootLoader::sample_count++; setMode(EmuDetail, fid); //setMode(EmuRabbit, fid); } else { setMode(next_mode, fid); } I(mode == next_mode); if (next_mode == EmuRabbit){ setModeNativeRabbit(); } setNextSwitch(getNextSwitch() + sequence_size[sequence_pos]); }else{ I(0); } }
void SamplerSMARTS::nextMode(bool rotate, FlowID fid, EmuMode mod){ if (rotate){ fetchNextMode(); I(next_mode != EmuInit); setMode(next_mode, fid); I(mode == next_mode); if (next_mode == EmuRabbit){ setModeNativeRabbit(); } setNextSwitch(getNextSwitch() + sequence_size[sequence_pos]); }else{ I(0); } }
void SamplerPeriodic::syncTimeAndSamples(FlowID fid) { if( mode == EmuDetail && lastMode == EmuTiming) { lastMode = mode; syncTimeAndFinishWaitingForOthers(fid); return; } lastMode = mode; syncTimeAndContinue(fid); if (next_mode == EmuRabbit){ setModeNativeRabbit(); } if( mode == next2EmuTiming ){ clearInTiming(fid); updatenSamples(); } }
void SamplerPeriodic::syncTimeAndTimingModes(FlowID fid) { if(mode == EmuTiming /*&& next_mode != EmuTiming*/) { clearInTiming(fid); lastMode = mode; syncTimeAndWaitForOthers(fid); return; } I(mode != EmuTiming || next_mode == EmuTiming); if( mode == EmuDetail && lastMode == EmuTiming){ syncTimeAndWaitForOthers(fid); }else{ lastMode = mode; syncTimeAndContinue(fid); if (next_mode == EmuRabbit){ setModeNativeRabbit(); } I(!(doPower && fid == winnerFid && lastMode == EmuTiming)); } }