Skip to content

Commit

Permalink
feat: Add spinner docs infrastructure
Browse files Browse the repository at this point in the history
  • Loading branch information
cl3to committed Oct 11, 2024
1 parent 8205d17 commit f5c50dc
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 0 deletions.
Binary file added docs/assets/spinner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
66 changes: 66 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
![spinner logo](assets/spinner.png){width="300"}
# Spinner

**Spinner** is an open-source, parameterized sweep benchmark tool designed for High-Performance Computing (HPC). It facilitates the efficient execution of user-supplied applications, data collection, and version control, all while using a simple YAML file format to manage configurations. Spinner is ideal for conducting repeatable, shareable, and insightful experiments across various HPC environments.

## Features

- **Parameterized Sweeps**: Dynamically replace parameters in command templates, enabling easy execution of parameter sweeps.
- **YAML Configuration**: Simplifies the setup and sharing of experimental configurations. Versioning and metadata management are built-in for reproducibility and collaboration.
- **Non-Intrusive Design**: Spinner executes user-defined commands without modifying your applications.
- **Automatic Re-run**: Automatically rerun failed experiments, making it ideal for unstable applications or testing a range of parameter combinations.
- **Data Collection**: Captures detailed output from each experiment, storing raw data and experiment metadata in dataframes. This provides a clear picture of experiment outcomes beyond summary statistics.
- **HPC Proven**: Successfully tested with major HPC applications such as LAMMPS, GROMACS, Task Bench, XSBench, and RSBench on multiple clusters.

## Getting Started

### Installation

You can install Spinner via pip:

```bash
pip install spinner
```

### Quick Start

1. **Create a YAML file** that defines your experiments and parameters. Example:

```yaml
metadata:
description: Timeout test
version: "1.0"
runs: 1
timeout: 5
retry: False
retry_limit: 0

sleep_test:
command:
template: >
sleep {{sleep_ammount}} && printf "
I slept {{sleep_ammount}}
# this may not print due to timeout!
"
sleep_test:
sleep_ammount:
- 1
- 200
```
2. **Run Spinner** with your configuration:
```bash
spinner -c timeout_test.yaml -r -o timeout_test.pkl
```

3. **Collect Results**: Spinner will log the results, including runtime metrics and application output, in dataframes for easy analysis.

## Documentation

For full documentation, including advanced usage and configuration options, please visit the [official documentation](#).

## Contributing

We welcome contributions! Please check the [contribution guidelines](contribute.md) for more information.
File renamed without changes.
40 changes: 40 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
site_name: Spinner
repo_url: https://github.com/LSC-Unicamp/spinner
repo_name: LSC-Unicamp/spinner
edit_uri: tree/main/docs

theme:
name: material
font:
text: Roboto
code: Roboto Mono
logo: assets/spinner.png
favicon: assets/spinner.png
palette:
# Dark Mode
- scheme: slate
toggle:
icon: material/weather-sunny
name: Dark Mode
primary: indigo
accent: indigo
# Light Mode
- scheme: default
toggle:
icon: material/weather-night
name: Light Mode
primary: indigo
accent: indigo

markdown_extensions:
- attr_list
- pymdownx.emoji:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
- pymdownx.highlight:
anchor_linenums: true
line_spans: __span
pygments_lang_class: true
- pymdownx.inlinehilite
- pymdownx.snippets
- pymdownx.superfences
4 changes: 4 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ dev = [
"isort==5.13.2",
"taskipy==1.13.0"
]
docs = [
"mkdocs==1.6.1",
"mkdocs-material==9.5.40"
]

[project.scripts]
spinner = "cli.main:cli"
Expand Down

0 comments on commit f5c50dc

Please sign in to comment.