WIP: documentation for the pp pipeline
This commit is contained in:
parent
e778ad75b3
commit
c3988dacd2
@ -1,8 +1,8 @@
|
|||||||
all: execution.pdf execution.txt
|
all: execution.pdf execution.txt pp.pdf pp.txt
|
||||||
|
|
||||||
%.pdf: %.ms
|
%.pdf: %.ms
|
||||||
groff -ms -t -Tpdf $^ > $@
|
groff -ms -t -p -Tpdf $^ > $@
|
||||||
#killall -HUP mupdf
|
-killall -HUP mupdf
|
||||||
|
|
||||||
%.txt: %.ms
|
%.txt: %.ms
|
||||||
groff -ms -t -Tutf8 $^ > $@
|
groff -ms -t -p -Tutf8 $^ > $@
|
||||||
|
75
garlic/doc/pp.ms
Normal file
75
garlic/doc/pp.ms
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
.TL
|
||||||
|
Garlic: experiment results
|
||||||
|
.AU
|
||||||
|
Rodrigo Arias Mallo
|
||||||
|
.AI
|
||||||
|
Barcelona Supercomputing Center
|
||||||
|
.\"#####################################################################
|
||||||
|
.nr GROWPS 3
|
||||||
|
.nr PSINCR 1.5p
|
||||||
|
.\".nr PD 0.5m
|
||||||
|
.nr PI 2m
|
||||||
|
\".2C
|
||||||
|
.\"#####################################################################
|
||||||
|
.LP
|
||||||
|
Consider a program of interest for which an experiment has been designed to
|
||||||
|
measure some properties. When the experiment is executed, it will generate some
|
||||||
|
results which are generally non-deterministic. The experimenter may want to
|
||||||
|
present some information in a visual plot or graph based on these results.
|
||||||
|
.PP
|
||||||
|
In this escenario, the experiment depends on the program\[em]any
|
||||||
|
changes in the program will cause nix to build the experiment again using the
|
||||||
|
updated program. The results will also depend on the experiment, and
|
||||||
|
the graph on the results. This chain of dependencies can be shown in
|
||||||
|
the following dependency tree:
|
||||||
|
.PS
|
||||||
|
right
|
||||||
|
circlerad=0.22; arrowhead=7;
|
||||||
|
circle "Prog"
|
||||||
|
arrow
|
||||||
|
circle "Exp"
|
||||||
|
arrow
|
||||||
|
circle "Result"
|
||||||
|
arrow
|
||||||
|
circle "Graph"
|
||||||
|
.PE
|
||||||
|
Ideally, the dependencies should be handled by nix, so it can detect any
|
||||||
|
change and rebuild the necessary parts automatically. Unfortunately, nix
|
||||||
|
is not able to build R as a derivation directly as it requires access
|
||||||
|
to the
|
||||||
|
.I "target cluster"
|
||||||
|
with several user accounts. In addition, the results are often
|
||||||
|
non-deterministic so the graph G cannot depend on the content of the
|
||||||
|
results.
|
||||||
|
.PP
|
||||||
|
In order to let several users use the results from a cache, we use the
|
||||||
|
.I "nix store"
|
||||||
|
to make them available for read only. To generate the results from the
|
||||||
|
experiment, we add some extra steps that must be executed manually.
|
||||||
|
.PS
|
||||||
|
right
|
||||||
|
circlerad=0.22; arrowhead=7;
|
||||||
|
circle "Prog"
|
||||||
|
arrow
|
||||||
|
E: circle "Exp"
|
||||||
|
RUN: circle "Run" at E + (0.8,-0.5)
|
||||||
|
FETCH: circle "Fetch" at E + (1.6,-0.5)
|
||||||
|
R: circle "Result" at E + (2.4,0)
|
||||||
|
arrow
|
||||||
|
G: circle "Graph"
|
||||||
|
arrow dashed from E to RUN chop
|
||||||
|
arrow dashed from RUN to FETCH chop
|
||||||
|
arrow dashed from FETCH to R chop
|
||||||
|
arrow from E to R chop
|
||||||
|
.PE
|
||||||
|
The run and fetch steps are provided by the helper tool
|
||||||
|
.I garlic ,
|
||||||
|
which launches the experiment using the user credential at the
|
||||||
|
.I "target cluster"
|
||||||
|
and then fetches the results, placing them in a directory known by nix.
|
||||||
|
Is the directory is not found, nix will issue a message to suggest the
|
||||||
|
user to launch the experiment and it will fail to build the result
|
||||||
|
derivation. When the result is successfully built by any user, the
|
||||||
|
derivation won't need to be rebuilt again until the experiment changes,
|
||||||
|
as the hash only depends on the experiment and not on the contents of
|
||||||
|
the results.
|
Loading…
Reference in New Issue
Block a user