mosesdecoder/moses/Search.cpp
2016-05-29 11:44:31 -04:00

51 lines
1.2 KiB
C++

#include "Manager.h"
#include "SearchCubePruning.h"
#include "SearchNormal.h"
#include "InputType.h"
#include "util/exception.hh"
namespace Moses
{
Search::Search(Manager& manager)
: m_manager(manager)
, m_source(manager.GetSource())
, m_options(*manager.options())
, m_inputPath()
, m_initialTransOpt()
, m_bitmaps(manager.GetSource().GetSize(), manager.GetSource().m_sourceCompleted)
, interrupted_flag(0)
{
m_initialTransOpt.SetInputPath(m_inputPath);
m_timer.start();
}
bool
Search::
out_of_time()
{
int const& timelimit = m_options.search.timeout;
if (timelimit > 0) {
double elapsed_time = GetUserTime();
if (elapsed_time > timelimit) {
VERBOSE(1,"Decoding is out of time (" << elapsed_time << ","
<< timelimit << ")" << std::endl);
interrupted_flag = 1;
return true;
}
}
int const& segment_timelimit = m_options.search.segment_timeout;
if (segment_timelimit > 0) {
double elapsed_time = m_timer.get_elapsed_time();
if (elapsed_time > segment_timelimit) {
VERBOSE(1,"Decoding for segment is out of time (" << elapsed_time << ","
<< segment_timelimit << ")" << std::endl);
interrupted_flag = 1;
return true;
}
}
return false;
}
}