Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/draft.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
- name: Clippy
run: cargo clippy --release --no-deps --all-targets -- -D warnings

- name: Report
- name: Cargo Test
run: cargo test --release -- -Z unstable-options --format json --report-time | cargo2junit > results.xml

- name: Upload reports
Expand All @@ -55,6 +55,5 @@ jobs:
name: coverage
path: |
results.xml
cobertura.xml
retention-days: 4
continue-on-error: true
16 changes: 3 additions & 13 deletions .github/workflows/ready.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,6 @@ jobs:
with:
components: clippy, rustfmt

- name: Prepare tarpaulin
uses: baptiste0928/cargo-install@v3
with:
crate: cargo-tarpaulin
locked: false

- name: Prepare cargo2junit
uses: baptiste0928/cargo-install@v3
with:
Expand All @@ -58,22 +52,18 @@ jobs:

- name: Formatting
run: cargo fmt -- --check
- name: Le clippy
- name: Clippy
run: cargo clippy --release --no-deps --all-targets -- -D warnings

- name: Count coverage
run: cargo tarpaulin --engine llvm --out Xml --root . --manifest-path Cargo.toml

- name: Report
run: cargo test --release -- -Z unstable-options --format json --report-time | cargo2junit > results.xml
- name: Cargo Test
run: cargo test --release -- --nocapture -Z unstable-options --format json --report-time | cargo2junit > results.xml

- name: Upload reports
uses: actions/upload-artifact@v4
with:
name: coverage
path: |
results.xml
cobertura.xml
retention-days: 7
continue-on-error: true

Expand Down
6 changes: 4 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[package]
name = "gourd"
version = "1.1.2"
version = "1.2.0"
edition = "2021"
default-run = "gourd"
authors = [
Expand Down Expand Up @@ -63,12 +63,13 @@ elf = "0.7.4"
[dependencies]

# To execute threads locally using a thread-pool executor.
tokio = { version = "1", features = ["full"] }
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }

# To encode/decode data in gourd.toml and other Gourd files.
toml = "0.8.12"
serde = { version = "1.0", features = ["derive"] }
chrono = { version = "0.4", features = ["serde"] }
shellexpand = { version = "3.1.0", default-features = false, features = ["base-0", "tilde"] }
glob = "0.3.1"
regex-lite = "0.1.5"

Expand Down Expand Up @@ -183,3 +184,4 @@ redundant_static_lifetimes = "allow"
missing_docs_in_private_items = "warn"
missing_safety_doc = "warn"
undocumented_unsafe_blocks = "warn"
literal_string_with_formatting_args = "allow"
2 changes: 1 addition & 1 deletion build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ fn generate_html(man_path: PathBuf, out_folder: &Path) -> Result<PathBuf> {
let out_path = out_folder.join(man_path.with_extension("html").file_name().unwrap());
let style_path = out_folder.join("manpage.css");

fs::write(&out_path, format!("{}{}{}", PREAMBLE, html, POSTAMBLE))?;
fs::write(&out_path, format!("{PREAMBLE}{html}{POSTAMBLE}"))?;
fs::write(style_path, STYLE)?;

Ok(out_path)
Expand Down
2 changes: 1 addition & 1 deletion docs/maintainer/architecture/section.tex
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ \subsection{Interactions}
\item \texttt{gourd version}
\end{itemize}

\subsection{An overview of an experiments lifetime}
\subsection{An overview of an experiment's lifetime}

The first thing that a user will do is run either \texttt{gourd run local}
or \texttt{gourd run slurm}.
Expand Down
8 changes: 8 additions & 0 deletions docs/maintainer/version-history/section.tex
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@ \section{Version History}
\input{version-history/definitions}
% \version{x} for start of version x section

\version{1.2.0}{Sponge Gourd}{}

Major internal reworkings, redesigned \texttt{gourd analyse}.
Past this major release version the project is open source.
For more details on this release, see

https://github.com/ConSol-Lab/gourd/pull/19

\version{1.0.2}{Snake Gourd}{}

This patch addresses the following:
Expand Down
68 changes: 34 additions & 34 deletions docs/user/gourd-tutorial.7.tex
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
\newcommand{\thecommand}{GOURD-TUTORIAL}
\newcommand{\mansection}{7}
\newcommand{\mansectionname}{DelftBlue Tools Manual}
\newcommand{\mandate}{19 AUGUST 2024}
\setDate{19 AUGUST 2024}
\newcommand{\mandate}{25 MARCH 2025}
\setDate{25 MARCH 2025}
\setVersionWord{Version:}
\setVersion{1.1.2}
\setVersion{1.2.0}


\input{docs/user/latex2man_styling.tex}
Expand Down Expand Up @@ -153,7 +153,8 @@
\end{Description}

Each program links to a \Arg{binary} -- the executable file that runs our
algorithm. In this case, our Fibonacci algorithms are compiled in Rust.
algorithm.
In this case, our Fibonacci algorithms are compiled in Rust.
If you are following this tutorial with
\Prog{gourd}~\Arg{init}
\Arg{--example}~\Arg{fibonacci-comparison},
Expand Down Expand Up @@ -199,24 +200,28 @@
a valid number - let's see how this will crash the programs.

Inputs are combined with programs in a \textbf{cross product} to create
\emph{runs}. Each program-input combination is exactly one \emph{run}.
\emph{runs}.
Each program-input combination is exactly one \emph{run}.
In this example, 3 programs * 4 inputs results in 12 \emph{runs}.

\subsection{Running the evaluation}

Our \File{gourd.toml} is complete - now it is time to run the evaluation
using \Prog{gourd}~\Arg{run}. Typing \Prog{gourd}~\Arg{run} in a terminal
using \Prog{gourd}~\Arg{run}.
Typing \Prog{gourd}~\Arg{run} in a terminal
will tell you that it has two subcommands:

\begin{Description}[subcommands]\setlength{\itemsep}{0cm}
\item[\Arg{local}] Run locally on your computer. If connected via SSH to a
\item[\Arg{local}] Run locally on your computer.
If connected via SSH to a
cluster computer, \Arg{local} uses the very limited computing power of
the login node.
\item[\Arg{slurm}] Send to the SLURM cluster scheduler on a supercomputer.
\end{Description}

The \Arg{slurm} subcommand needs some extra configuration, so let's go with
\Arg{local} for now. Type \Prog{gourd}~\Arg{run}~\Arg{local}.
\Arg{local} for now.
Type \Prog{gourd}~\Arg{run}~\Arg{local}.

\begin{verbatim}

Expand Down Expand Up @@ -250,19 +255,17 @@

\end{verbatim}

If you are seeing similar output, you have successfully reproduced a Gourd
experiment!
If you are seeing similar output, you have successfully reproduced a Gourd experiment!

\subsection{Displaying status}

The \Arg{run} command has created an experiment from the experimental
setup and executed it on your computer. Each of the twelve runs are shown
here, grouped by program, alongside with their completion status. In fact,
you can show this view at any time by typing \Prog{gourd}~\Arg{status}.
The \Arg{run} command has created an experiment from the experimental setup and executed it on your computer.
Each of the twelve runs are shown here, grouped by program, alongside with their completion status.
In fact, you can show this view at any time by typing \Prog{gourd}~\Arg{status}.

We can see that runs 0,~4,~and~8 have failed. Let's take a closer look at
why that is! Type \Prog{gourd}~\Arg{status}~\Opt{-i}~\Arg{4} to check on
run number 4.
We can see that runs 0,~4,~and~8 have failed.
Let's take a closer look at why that is!
Type \Prog{gourd}~\Arg{status}~\Opt{-i}~\Arg{4} to check on run number 4.

\begin{verbatim}

Expand Down Expand Up @@ -296,8 +299,7 @@

These files reveal that \File{bad\_test} fails because the Fibonacci
programs are expecting a number, but the input is "some text" instead!
Let's fix the problem and replace it with 10, a decidedly more valid
number.
Let's fix the problem and replace it with 10, a decidedly more valid number.

\begin{verbatim}

Expand All @@ -315,9 +317,8 @@
Now we have fixed the problem, and the input called \File{bad\_test} is not
so bad after all.

You can imagine that running the whole experiment again when only 1/4 of
the results are invalid would be a waste. We are going to use
\Prog{gourd}~\Arg{rerun} to repeat only the runs that failed.
You can imagine that running the whole experiment again when only 1/4 of the results are invalid would be a waste.
We are going to use \Prog{gourd}~\Arg{rerun} to repeat only the runs that failed.

\begin{verbatim}

Expand All @@ -333,12 +334,11 @@

\end{verbatim}

The \Prog{gourd}~\Arg{rerun} command suggests rerunning the failed runs
only! Another option supported by \Arg{rerun} is to specify a list of IDs
for it to reschedule.
The \Prog{gourd}~\Arg{rerun} command suggests rerunning the failed runs only!
Another option supported by \Arg{rerun} is to specify a list of IDs for it to reschedule.

After \Arg{rerun}, it is necessary to use \Prog{gourd}~\Arg{continue} to
actually execute the newly created runs. Try this in your terminal.
After \Arg{rerun}, it is necessary to use \Prog{gourd}~\Arg{continue} to actually execute the newly created runs.
Try this in your terminal.

\subsection{Collecting data}

Expand All @@ -347,14 +347,14 @@
\Prog{gourd} also provides a simple way to process the numerous metrics
files that our runs have generated.

By running \Prog{gourd}~\Arg{analyse}, you can create a CSV file that
collects all metrics from the application's run. On UNIX-like operating
systems, RUsage provides a large array of useful data such as context
switches and page faults in addition to basic timing.
By running \Prog{gourd}~\Arg{analyse}~\Arg{table}, you can create a CSV
file that collects all metrics from the application's run.
On UNIX-like operating systems, RUsage provides a large array of useful
data such as context switches and page faults in addition to basic timing.

Furthermore, \Prog{gourd}~\Arg{analyse}~\OptArg{-o }{ output-type} supports
other ways of collecting and visualising the experiment's output.
Try the \File{plot-png} output type, which produces a cactus-plot summary
Furthermore, \Prog{gourd}~\Arg{analyse} supports
ways of collecting and visualising the experiment's output.
Try the \Prog{gourd}~\Arg{analyse}~\Arg{plot}, which produces a cactus-plot summary
of the programs' runtimes.

\section{SEE ALSO}
Expand Down
Loading