Limiting satune timeout
[satune.git] / src / Tuner / basictuner.cc
index 6f0f5e0283f9c4b1c2fe230a263d010bcfd4bb5d..30d729b2cb2c12d0a7842e78b4db45505fc0a6a5 100644 (file)
@@ -157,9 +157,9 @@ long long BasicTuner::evaluate(Problem *problem, TunerRecord *tuner) {
        uint timeinsecs = problem->getBestTime() / NANOSEC;
        uint adaptive = (timeinsecs > 30) ? timeinsecs * 5 : 150;
        uint maxtime = (adaptive < timeout) ? adaptive : timeout;
-
+       uint satuneTimeout = (2*maxtime < maxtime + 600)?2*maxtime: maxtime + 600;
        //Do run
-       snprintf(buffer, sizeof(buffer), "./run.sh deserializerun %s %u tuner%u result%u > log%u", problem->getProblem(), maxtime, execnum, execnum, execnum);
+       snprintf(buffer, sizeof(buffer), "timeout %u ./run.sh deserializerun %s %u tuner%u result%u > log%u", satuneTimeout, problem->getProblem(), maxtime, execnum, execnum, execnum);
        model_print("Running: %s\n", buffer);
        int status = system(buffer);
 
@@ -182,7 +182,10 @@ long long BasicTuner::evaluate(Problem *problem, TunerRecord *tuner) {
                updateTimeout(problem, metric);
                snprintf(buffer, sizeof(buffer), "tuner%uused", execnum);
                tuner->getTuner()->addUsed(buffer);
+       } else if (status == 124 << 8) {// timeout happens ...
+               tuner->getTuner()->copySettingstoUsedSettings();
        }
+
        //Increment execution count
        execnum++;