Runscript Examples¶
A collection of example runscripts to help you get started can be found in the
./runscripts directory after executing btool init.
Alternatively, you can find them below.
runscript-example.xml gives a small example on how basic sequential
and cluster benchmarks can be defined.
runscript-example.xml
<runscript output="output-folder">
<machine name="hpc" cpu="24x8xE5520@2.27GHz" memory="24GB"/>
<config name="seq-generic" template="templates/seq-generic.sh"/>
<system name="clasp" version="3.4.0" measures="clasp" config="seq-generic">
<setting name="setting-1" cmdline="--stats --quiet=1,0" tag="basic">
<!-- value: 'float,float,float' -> range: start,end,step -->
<variable cmd="--time-limit={}" value="30,600,30"/>
<!-- value: 'any;any;...' -> pool of values -->
<variable cmd="--memory-limit={}" value="1024;2048"/>
</setting>
</system>
<seqjob name="seq-gen" timeout="900s" runs="1" parallel="1"/>
<distjob name="dist-gen" timeout="1200s" runs="1" template_options="--single" script_mode="timeout" walltime="23h 59m 59s" cpt="4"/>
<benchmark name="no-pigeons">
<folder path="benchmarks/clasp/">
<ignore prefix="pigeons"/>
</folder>
<files path="benchmarks/clasp">
<add file="pigeons/pigeonhole10-unsat.lp" cmdline="--text"/>
</files>
</benchmark>
<project name="clasp-seq-job" job="seq-gen">
<runtag machine="hpc" benchmark="no-pigeons" tag="basic"/>
</project>
<project name="clasp-dist-job" job="dist-gen">
<runtag machine="hpc" benchmark="no-pigeons" tag="basic"/>
</project>
</runscript>
runscript-seq.xml and runscript-dist.xml show more possibilities and
additional features.
runscript-seq.xml
<runscript output="output">
<machine name="houat" cpu="8xE5520@2.27GHz" memory="24GB"/>
<config name="seq-generic" template="templates/seq-generic.sh"/>
<system name="clasp" version="3.4.0" measures="clasp" config="seq-generic" cmdline="--stats">
<setting name="default" cmdline="1" tag="basic"/>
<setting name="vsids" cmdline="--heu=vsids 1"/>
</system>
<seqjob name="seq-generic" timeout="120s" runs="1" parallel="4"/>
<benchmark name="seq-suite">
<folder path="benchmarks/clasp">
<ignore prefix="pigeons"/>
</folder>
<files path="benchmarks/clasp">
<add file="pigeons/pigeonhole10-unsat.lp"/>
<add file="pigeons/pigeonhole11-unsat.lp"/>
</files>
</benchmark>
<project name="clasp-big" job="seq-generic">
<runtag machine="houat" benchmark="seq-suite" tag="*all*"/>
</project>
</runscript>
runscript-dist.xml
<runscript output="output">
<machine name="hpc" cpu="24x8xE5520@2.27GHz" memory="24GB"/>
<config name="dist-generic" template="templates/seq-generic.sh"/>
<system name="clasp" version="3.4.0" measures="clasp" config="dist-generic">
<setting name="one-as" tag="one-as" cmdline="--stats 1" dist_template="templates/single.dist"/>
</system>
<distjob name="dist-generic" timeout="1200s" runs="1" template_options="--single" script_mode="timeout" walltime="23h 59m 59s" cpt="4"/>
<benchmark name="dist-suite">
<folder path="benchmarks/clasp"/>
</benchmark>
<project name="clasp-one-as" job="dist-generic">
<runtag machine="hpc" benchmark="dist-suite" tag="*all*"/>
</project>
</runscript>
runscript-all is an attempt to create a runscript using all available features.
runscript-all.xml
<runscript output="outputdist">
<machine name="houat" cpu="8xE5520@2.27GHz" memory="24GB"/>
<machine name="hpc" cpu="24x8xE5520@2.27GHz" memory="24GB"/>
<config name="seq-generic" template="templates/seq-generic.sh"/>
<system name="clasp" version="3.4.0" measures="clasp" config="seq-generic" cmdline="--stats" cmdline_post="--configuration=auto">
<setting name="default" tag="seq" cmdline="-q" cmdline_post="1"/>
<setting name="tlimits" tag="seq">
<variable cmd="--time-limit" value="1800,3600,600"/>
<encoding file ="encodings/setting_enc.lp"/>
<encoding file ="encodings/setting_inst_enc.lp" encoding_tag="use-enc"/>
</setting>
<setting name="models" tag="seq">
<variable cmd="{}" value="2;4;6" post="true"/>
</setting>
</system>
<config name="dist-generic" template="templates/seq-generic.sh"/>
<system name="clingo" version="5.8.0" measures="clasp" config="dist-generic">
<setting name="one-as" tag="one-as" cmdline="--stats 1" dist_template="templates/single.dist" dist_options="#SBATCH --hint=compute_bound"/>
<setting name="all-as" tag="all-as" cmdline="--stats -q 0"/>
</system>
<seqjob name="seq-generic" timeout="120s" runs="1" memout="1000" parallel="8"/>
<distjob name="dist-generic" timeout="120s" runs="1" memout="1000" template_options="--single" script_mode="timeout" walltime="23h 59m 59s" cpt="4" partition="short"/>
<benchmark name="seq-suite">
<folder path="benchmarks/clasp" group="true" cmdline="--restarts=no">
<ignore prefix="pigeons"/>
<encoding file="encodings/folder_enc.lp"/>
</folder>
<files path="benchmarks/clasp" encoding_tag="use-enc">
<add file="pigeons/pigeonhole10-unsat.lp" cmdline="--heu=vsids 1"/>
<add file="pigeons/pigeonhole11-unsat.lp" group="unsat"/>
<encoding file="encodings/files_enc.lp"/>
</files>
</benchmark>
<benchmark name="dist-suite">
<spec path="benchmarks/dist" instance_tag="set1"/>
</benchmark>
<project name="clasp-seq" job="seq-generic">
<runtag machine="houat" benchmark="seq-suite" tag="seq"/>
</project>
<project name="clingo-all-as" job="dist-generic">
<runtag machine="houat" benchmark="dist-suite" tag="par one-as"/>
</project>
<project name="clingo-one-as" job="dist-generic">
<runspec machine="hpc" benchmark="dist-suite" system="clingo" version="5.8.0" setting="one-as"/>
</project>
</runscript>
Examples for the encoding support feature can be found here.
For a more detailed explanation of a runscript and its components check here