public void run() { try { while (!stop) { if (LogInfo.writeToStdout) readAndProcessCommand(); // Input commands Execution.inputMap.readEasy(Execution.getFile("input.map")); boolean killed = Execution.create && new File(Execution.getFile("kill")).exists(); if (killed) Execution.setExecStatus("killed", true); // Output status Execution.putOutput("log.note", LogInfo.note); Execution.putOutput("exec.memory", SysInfoUtils.getUsedMemoryStr()); Execution.putOutput( "exec.time", new StopWatch(LogInfo.getWatch().getCurrTimeLong()).toString()); Execution.putOutput("exec.errors", "" + LogInfo.getNumErrors()); Execution.putOutput("exec.warnings", "" + LogInfo.getNumWarnings()); Execution.setExecStatus("running", false); Execution.printOutputMap(Execution.getFile("output.map")); if (killed) throw new RuntimeException("Killed by 'kill' file"); Utils.sleep(timeInterval); } } catch (Exception e) { e.printStackTrace(); System.exit(1); // Die completely } }
public static void finish() { if (!makeThunk) { Record.finish(); if (monitor) monitorThread.finish(); setExecStatus("done", false); outputMap.printEasy(getFile("output.map")); StopWatch.getStats().printEasy(getFile("time.map")); if (create) stderr.println(virtualExecDir); if (LogInfo.getNumErrors() > 0 || LogInfo.getNumWarnings() > 0) stderr.printf("%d errors, %d warnings\n", LogInfo.getNumErrors(), LogInfo.getNumWarnings()); if (startMainTrack) end_track(); } System.exit(exitCode); }
@Override public void run() { builder = new Builder(); builder.build(); dataset = new Dataset(); dataset.read(); params = new Params(); for (String group : dataset.groups()) { String filename = Execution.getFile("dumped-" + group + ".gz"); out = IOUtils.openOutHard(filename); processExamples(group, dataset.examples(group)); out.close(); LogInfo.logs("Finished dumping to %s", filename); StopWatchSet.logStats(); } }
private void processExamples(String group, List<Example> examples) { Evaluation evaluation = new Evaluation(); if (examples.isEmpty()) return; final String prefix = "iter=0." + group; Execution.putOutput("group", group); LogInfo.begin_track_printAll("Processing %s: %s examples", prefix, examples.size()); LogInfo.begin_track("Dumping metadata"); dumpMetadata(group, examples); LogInfo.end_track(); LogInfo.begin_track("Examples"); for (int e = 0; e < examples.size(); e++) { Example ex = examples.get(e); LogInfo.begin_track_printAll("%s: example %s/%s: %s", prefix, e, examples.size(), ex.id); ex.log(); Execution.putOutput("example", e); StopWatchSet.begin("Parser.parse"); ParserState state = builder.parser.parse(params, ex, false); StopWatchSet.end(); out.printf("########## Example %s ##########\n", ex.id); dumpExample(exampleToLispTree(state)); LogInfo.logs("Current: %s", ex.evaluation.summary()); evaluation.add(ex.evaluation); LogInfo.logs("Cumulative(%s): %s", prefix, evaluation.summary()); LogInfo.end_track(); ex.predDerivations.clear(); // To save memory } LogInfo.end_track(); LogInfo.logs("Stats for %s: %s", prefix, evaluation.summary()); evaluation.logStats(prefix); evaluation.putOutput(prefix); LogInfo.end_track(); }
public static void init(String[] args, Object... objects) { // Parse options parser = new OptionsParser(); parser.doRegister("log", LogInfo.class); parser.doRegister("exec", Execution.class); parser.doRegisterAll(objects); // These options are specific to the execution, so we don't want to overwrite them // with a previous execution's. parser.setDefaultDirFileName("options.map"); parser.setIgnoreOptsFromFileName( "options.map", ListUtils.newList( "log.file", "exec.execDir", "exec.execPoolDir", "exec.actualPoolDir", "exec.makeThunk")); if (!parser.doParse(args)) System.exit(1); // Load classes if (jarFiles.size() > 0) { List<String> names = new ArrayList(); for (String jarFile : jarFiles) names.add(new File(jarFile).getName()); stderr.println("Loading JAR files: " + StrUtils.join(names)); for (String jarFile : jarFiles) // Load classes ClassInitializer.initializeJar(jarFile); } // Set character encoding if (charEncoding != null) CharEncUtils.setCharEncoding(charEncoding); if (printOptionsAndExit) { // Just print options and exit parser.doGetOptionPairs().print(stdout); System.exit(0); } // Create a new directory if (create) { createVirtualExecDir(); stderr.println(virtualExecDir); if (!makeThunk) LogInfo.file = getFile("log"); // Copy the Jar files for reference if (!makeThunk) { for (String jarFile : jarFiles) Utils.systemHard(String.format("cp %s %s", jarFile, virtualExecDir)); } } else { LogInfo.file = ""; } if (!makeThunk) { LogInfo.init(); if (startMainTrack) track("main()", true); } // Output options if (!makeThunk && virtualExecDir != null) logs("Execution directory: " + virtualExecDir); if (!makeThunk) getInfo().printEasy(getFile("info.map")); printOptions(); if (create && addToView.size() > 0) IOUtils.printLinesHard(Execution.getFile("addToView"), addToView); // Start monitoring if (!makeThunk && monitor) { monitorThread = new MonitorThread(); monitorThread.start(); } if (!makeThunk) Record.init(Execution.getFile("record")); }