Skip to content

Commit

Permalink
Simplify example Fast Downward experiment.
Browse files Browse the repository at this point in the history
  • Loading branch information
jendrikseipp committed Mar 10, 2022
1 parent 76c4fb7 commit 148281c
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 56 deletions.
22 changes: 19 additions & 3 deletions examples/downward/2020-09-11-A-cg-vs-ff.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
#! /usr/bin/env python

import os
import shutil

import project


REPO = project.get_repo_base()
BENCHMARKS_DIR = os.environ["DOWNWARD_BENCHMARKS"]
SCP_LOGIN = "myname@myserver.com"
REMOTE_REPOS_DIR = "/infai/seipp/projects"
if project.REMOTE:
SUITE = project.SUITE_SATISFICING
ENV = project.BaselSlurmEnvironment(email="my.name@unibas.ch")
ENV = project.BaselSlurmEnvironment(email="my.name@myhost.ch")
else:
SUITE = ["depot:p01.pddl", "grid:prob01.pddl", "gripper:prob01.pddl"]
ENV = project.LocalEnvironment(processes=2)
Expand All @@ -35,15 +38,14 @@
"search_start_time",
"search_start_memory",
"total_time",
"initial_h_value",
"h_values",
"coverage",
"expansions",
"memory",
project.EVALUATIONS_PER_TIME,
]

exp = project.CommonExperiment(environment=ENV)
exp = project.FastDownwardExperiment(environment=ENV)
for config_nick, config in CONFIGS:
for rev, rev_nick in REVS:
algo_name = f"{rev_nick}:{config_nick}" if rev_nick else config_nick
Expand All @@ -57,6 +59,20 @@
)
exp.add_suite(BENCHMARKS_DIR, SUITE)

exp.add_parser(exp.EXITCODE_PARSER)
exp.add_parser(exp.TRANSLATOR_PARSER)
exp.add_parser(exp.SINGLE_SEARCH_PARSER)
exp.add_parser(project.DIR / "parser.py")
exp.add_parser(exp.PLANNER_PARSER)

exp.add_step("build", exp.build)
exp.add_step("start", exp.start_runs)
exp.add_fetcher(name="fetch")

if not project.REMOTE:
exp.add_step("remove-eval-dir", shutil.rmtree, exp.eval_dir, ignore_errors=True)
project.add_scp_step(exp, SCP_LOGIN, REMOTE_REPOS_DIR)

project.add_absolute_report(
exp, attributes=ATTRIBUTES, filter=[project.add_evaluations_per_time]
)
Expand Down
64 changes: 11 additions & 53 deletions examples/downward/project.py
Original file line number Diff line number Diff line change
@@ -1,36 +1,29 @@
from collections import namedtuple
import getpass
from pathlib import Path
import platform
import shutil
import subprocess
import sys

from downward.experiment import FastDownwardExperiment
from downward.reports.absolute import AbsoluteReport
from downward.reports.scatter import ScatterPlotReport
from downward.reports.taskwise import TaskwiseReport
from lab import tools
from lab.environments import BaselSlurmEnvironment, LocalEnvironment
from lab.environments import (
BaselSlurmEnvironment,
LocalEnvironment,
TetralithEnvironment,
)
from lab.experiment import ARGPARSER
from lab.reports import Attribute, geometric_mean


# Silence import-unused messages. Experiment scripts may use these imports.
assert BaselSlurmEnvironment and LocalEnvironment and ScatterPlotReport
assert LocalEnvironment and ScatterPlotReport and TaskwiseReport


DIR = Path(__file__).resolve().parent
NODE = platform.node()
REMOTE = NODE.endswith(".scicore.unibas.ch") or NODE.endswith(".cluster.bc2.ch")

User = namedtuple("User", ["scp_login", "remote_repos"])
USERS = {
"jendrik": User(
scp_login="seipp@login.scicore.unibas.ch",
remote_repos="/infai/seipp/projects",
),
}
USER = USERS.get(getpass.getuser())
REMOTE = NODE.endswith((".scicore.unibas.ch", ".cluster.bc2.ch"))


def parse_args():
Expand Down Expand Up @@ -121,16 +114,16 @@ def _get_exp_dir_relative_to_repo():
return repo_name / rel_script_dir / "data" / expname


def add_scp_step(exp):
remote_exp = Path(USER.remote_repos) / _get_exp_dir_relative_to_repo()
def add_scp_step(exp, login, repos_dir):
remote_exp = Path(repos_dir) / _get_exp_dir_relative_to_repo()
exp.add_step(
"scp-eval-dir",
subprocess.call,
[
"scp",
"-r", # Copy recursively.
"-C", # Compress files.
f"{USER.scp_login}:{remote_exp}-eval",
f"{login}:{remote_exp}-eval",
f"{exp.path}-eval",
],
)
Expand Down Expand Up @@ -172,38 +165,3 @@ def add_absolute_report(exp, *, name=None, outfile=None, **kwargs):
if not REMOTE:
exp.add_step(f"open-{name}", subprocess.call, ["xdg-open", outfile])
exp.add_step(f"publish-{name}", subprocess.call, ["publish", outfile])


class CommonExperiment(FastDownwardExperiment):
def __init__(self, **kwargs):
super().__init__(**kwargs)

self.add_step("build", self.build)
self.add_step("start", self.start_runs)
self.add_fetcher(name="fetch")

if not REMOTE:
self.add_step(
"remove-eval-dir", shutil.rmtree, self.eval_dir, ignore_errors=True
)
add_scp_step(self)

self.add_parser(self.EXITCODE_PARSER)
self.add_parser(self.TRANSLATOR_PARSER)
self.add_parser(self.SINGLE_SEARCH_PARSER)
self.add_parser(self.PLANNER_PARSER)
self.add_parser(DIR / "parser.py")

def _add_runs(self):
"""
Example showing how to modify the automatically generated runs.
This uses private members, so it might break between different
versions of Lab.
"""
FastDownwardExperiment._add_runs(self)
for run in self.runs:
command = run.commands["planner"]
# Slightly raise soft limit for output to stdout.
command[1]["soft_stdout_limit"] = 1.5 * 1024

0 comments on commit 148281c

Please sign in to comment.