Skip to content
Snippets Groups Projects
  1. May 29, 2024
    • STEVAN Antoine's avatar
      improve performances by not shuffling vectors (dragoon/komodo!122) · 47ba0de8
      STEVAN Antoine authored
      in `./bins/inbreeding/`, this MR does
      - refactor the "list item drawing" from `environment.rs` and `strategy.rs` into the `draw_unique_elements` function of new `random.rs` module
      - use a `HashSet` to draw unique indices in the slice of "things" to draw from and then extracts the items corresponding to these indices
      
      ## results
      ```bash
      use ./bins/inbreeding
      use std bench
      
      const PRNG_SEED = 0
      const OPTS = {
          nb_bytes: (10 * 1_024),
          k: 10,
          n: 20,
          nb_measurements: 100,
          nb_scenarii: 10,
          measurement_schedule: 1,
          measurement_schedule_start: 2_000,
          max_t: 2_000,
          strategies: [ "single:5" ],
          environment: null,
      }
      
      def run [rev: string] {
          git co $rev
      
          inbreeding build
      
          let a = bench --rounds 5 {
              inbreeding run --options ($OPTS | update environment "fixed:0") --prng-seed $PRNG_SEED
          }
          let b = bench --rounds 5 {
              inbreeding run --options ($OPTS | update environment "fixed:1") --prng-seed $PRNG_SEED
          }
      
          {
              0: $a,
              1: $b,
          }
      }
      
      let main = run a29b511d
      let mr = run fix-shuffle
      ```
      ```bash
      let table = [
          [env, main, mr, improvement];
      
          ["fixed:0", $main."0".mean, $mr."0".mean, (($main."0".mean - $mr."0".mean) / $main."0".mean * 100)],
          ["fixed:1", $main."1".mean, $mr."1".mean, (($main."1".mean - $mr."1".mean) / $main."1".mean * 100)],
      ]
      
      $table | to md --pretty
      ```
      
      | env     | main                    | mr                      | improvement        |
      | ------- | ----------------------- | ----------------------- | ------------------ |
      | fixed:0 | 8sec 504ms 794µs 784ns | 6sec 353ms 206µs 645ns | 25.298530930431912 |
      | fixed:1 | 727ms 648µs 292ns      | 639ms 443µs 782ns      | 12.12186037811795  |
      
      the improvement is quite nice, even though not huge, but the code is cleaner anyways 🙏
      47ba0de8
  2. May 28, 2024
    • STEVAN Antoine's avatar
      include the standard deviation of "inbreeding" measurements (dragoon/komodo!119) · a29b511d
      STEVAN Antoine authored
      this adds `$.diversity.e` to the output of `inbreeding load` and input of `inbreeding plot` to show errors bars in the final plot.
      
      these can be discarded by running something similar to
      ```bash
      inbreeding load $experiment
          | reject diversity.e
          | inbreeding plot --options { k: $OPTS.k }
      ```
      a29b511d
    • STEVAN Antoine's avatar
      split "inbreeding" load and plot (dragoon/komodo!118) · 31d58f4c
      STEVAN Antoine authored
      plotting "inbreeding" results is now done in two steps
      - `load` the data from raw experiment files with `inbreeding load`
      - `plot` the results by piping this data into `inbreeding plot`
      31d58f4c
    • STEVAN Antoine's avatar
      split `examples/` into `benchmarks/` and `bins/` (dragoon/komodo!117) · bb626120
      STEVAN Antoine authored
      ## new structure for the repository
      - benchmarks are in `./benchmarks/` and can be run with either `cargo run --package benchmarks --bin <bench>` or the commands in `./benchmarks/README.md`
      ```
      ├── Cargo.toml
      ├── README.md
      └── src
          └── bin
              ├── commit.rs
              ├── fec.rs
              ├── linalg.rs
              ├── operations
              │   ├── curve_group.rs
              │   └── field.rs
              ├── recoding.rs
              ├── setup.rs
              └── setup_size.rs
      ```
      
      - examples are now in `./bins/` as standalone binaries and can be run either with `cargo run --package <pkg>` or with the help of the `cargo bin` command from `.nushell/cargo.nu`
      ```
      ├── curves
      │   ├── Cargo.toml
      │   ├── README.md
      │   └── src
      │       └── main.rs
      ├── inbreeding
      │   ├── build.nu
      │   ├── Cargo.toml
      │   ├── consts.nu
      │   ├── mod.nu
      │   ├── plot.nu
      │   ├── README.md
      │   ├── run.nu
      │   └── src
      │       ├── environment.rs
      │       ├── main.rs
      │       └── strategy.rs
      ├── rank
      │   ├── Cargo.toml
      │   └── src
      │       └── main.rs
      └── rng
          ├── Cargo.toml
          └── src
              └── main.rs
      ```
      
      - Nushell modules are now located in `./.nushell/`
      
      ## changelog
      apart from the changes to the general structure of the repo:
      - `binary.nu` -> `.nushell/binary.nu`
      - new `cargo bin` command from `.nushell/cargo.nu`
      - `error throw` is now defined in `.nushell/error.nu`
      - main TOML has been greatly simplified because the dependencies of "examples" have been moved to the associated crates
      - the rest is basically the same but in the new structure
      bb626120
Loading