void Base::SourceAudioPreRead(std::size_t numFrames) //-------------------------------------------------- { if(!InternalHasTimeInfo()) { if(InternalHasGetStreamPosition()) { SoundDevice::TimeInfo timeInfo; timeInfo.StreamFrames = InternalHasGetStreamPosition(); timeInfo.SystemTimestamp = Clock().NowNanoseconds(); timeInfo.Speed = 1.0; UpdateTimeInfo(timeInfo); } else { SoundDevice::TimeInfo timeInfo; { Util::lock_guard<Util::mutex> lock(m_StreamPositionMutex); timeInfo.StreamFrames = m_StreamPositionRenderFrames + numFrames; } timeInfo.SystemTimestamp = Clock().NowNanoseconds() + Util::Round<int64>(m_BufferAttributes.Latency * 1000000000.0); timeInfo.Speed = 1.0; UpdateTimeInfo(timeInfo); } } }
void IPPCEvaluator::UpdateTimePerMove(double step_time) { if (step_time < 0.99 * EvalLog::allocated_time) { if (EvalLog::plan_time_ratio < 1.0) EvalLog::plan_time_ratio += 0.01; if (EvalLog::plan_time_ratio > 1.0) EvalLog::plan_time_ratio = 1.0; } else if (step_time > EvalLog::allocated_time) { double delta = (step_time - EvalLog::allocated_time) / (EvalLog::allocated_time + 1E-6); if (delta < 0.02) delta = 0.02; // Minimum reduction per step if (delta > 0.05) delta = 0.05; // Maximum reduction per step EvalLog::plan_time_ratio -= delta; // if (EvalLog::plan_time_ratio < 0) // EvalLog::plan_time_ratio = 0; } EvalLog::curr_inst_remaining_budget = log_.GetRemainingBudget(instance_); EvalLog::curr_inst_remaining_steps--; UpdateTimeInfo(instance_); Globals::config.time_per_move = EvalLog::plan_time_ratio * EvalLog::allocated_time; if (!Globals::config.silence && out_) { *out_ << "Total time: curr_inst / inst_target / remaining / since_start = " << (get_time_second() - EvalLog::curr_inst_start_time) << " / " << (EvalLog::curr_inst_target_time * (EvalLog::curr_inst_steps - EvalLog::curr_inst_remaining_steps)) << " / " << EvalLog::curr_inst_remaining_budget << " / " << (get_time_second() - EvalLog::start_time) << endl; } }
int IPPCEvaluator::Handshake(string instance) { int num_remaining_runs = log_.GetNumRemainingRuns(instance); if (num_remaining_runs == 0) { return 0; } double start_t = get_time_second(); instance_ = instance; client_ = new Client(); client_->setHostName(hostname_); client_->setPort(port_); client_->initializeSocket(); client_->connectToServer(); client_->sendMessage(client_->createSessionRequestMes(instance)); string sessionInitMes = client_->recvMessage(); if (!Globals::config.silence && out_) { *out_ << sessionInitMes << endl; } client_->processSessionInitMes(sessionInitMes); double end_t = get_time_second(); if (!Globals::config.silence && out_) { *out_ << "Time for handsake " << (end_t - start_t) << endl; } log_.SetInitialBudget(instance); EvalLog::curr_inst_steps = num_remaining_runs * Globals::config.sim_len; EvalLog::curr_inst_remaining_steps = num_remaining_runs * Globals::config.sim_len; EvalLog::curr_inst_target_time = EvalLog::curr_inst_budget / EvalLog::curr_inst_steps; UpdateTimeInfo(instance); EvalLog::plan_time_ratio = 1.0; Globals::config.time_per_move = EvalLog::plan_time_ratio * EvalLog::allocated_time; return num_remaining_runs; }