Skip to content
Snippets Groups Projects
  1. Feb 03, 2025
    • STEVAN Antoine's avatar
      rework benchmarks: script and output format (!193) · ab0d9a8b
      STEVAN Antoine authored
      this is an attempt at making benchmarks easier to work with
      - `benchmarks run` will read benchmarks from NUON data and run them
      - `benchmarks plot` will plot benchmark results
      - the output format will be something 
        - a directory whose name is the hash of the CPU spec and the Komodo commit hash
        - contains `cpu.json` with the CPU info
        - contains `komodo.txt` with the Komodo commit hash
        - contains NDJSON result files
      
      > 💡 **Note**
      >
      > results will typically be uploaded to https://gitlab.isae-supaero.fr/dragoon/komodo-benchmark-results
      
      > 💡 **Note**
      >
      > this MR goes alongside the [`komodo-benchmark-results@restart`](https://gitlab.isae-supaero.fr/dragoon/komodo-benchmark-results/-/compare/main...restart) branch
      
      ## changelog
      - bump Nushell to 0.101.0
        - parallel `$in` => remove useless `let input = $in` when possible, e.g. still required when using the function's `$in` in a `for` loop
        - `group-by` changed => `group-by x --to-table` will now produce a table with columns `x` and `items` instead of `group` and `items` as in 0.95.0
      - add link to results repo
      - the Nushell benchmarks lib
        - rename `--force` to `--no-confirm (-y)`
        - add `--append` 
        - reject columns that GPLT will complain about, e.g. `$.points.k` for the FRI plots
        - add `--save` to the FRI plot
      - move the "field" and "curve group" benchmarks from `benchmarks/src/bin/operations/` to `benchmarks/src/bin/`
      - remove `benchmarks/params/fri.nu` because it's been uniformized with the other methods
      - rewrite the README
      - add main function to `benchmarks/` that runs the benchmarks from a NUON record specification
      - simplify the output of FRI run
      
      ## TODO
      - [x] fix "_atomic operations_" (done in 4f69a1d6)
      - [x] check that _plotting_ still works
      
      ## images
      
      ### Field
      ![complex_curve_group_operations](/uploads/57b36926cce041cf405a9b44f190b8b8/complex_curve_group_operations.png)
      ![complex_field_operations](/uploads/0747c85dbaff8980561aa9d922fcd5e7/complex_field_operations.png)
      ![simple_curve_group_operations](/uploads/974cf70fed68f8d8ac898d54be3f27be/simple_curve_group_operations.png)
      ![simple_field_operations](/uploads/a3d4d0dcdeb35d4c434eaa38fb51e7b5/simple_field_operations.png)
      
      ### Linear algebra
      ![linalg-inverse](/uploads/bc290ffa39459ce0f9bbd393b50b7b98/linalg-inverse.png)
      ![linalg-mul](/uploads/96d8c2a63ed48d6a0d3508b4a948153b/linalg-mul.png)
      ![linalg-transpose](/uploads/128e35eca91497d8aadb0130c05aeee3/linalg-transpose.png)
      
      ### FEC
      ![encoding](/uploads/405c4d3ef9ec5135ebdd7ce2e6c96bfe/encoding.png)
      ![decoding](/uploads/d793234d44e9fc6f34f0c2a9372863cd/decoding.png)
      ![recoding](/uploads/413021de997c86d45b1287fcfe7804c7/recoding.png)
      ![combined](/uploads/6d1c3ae6d3bf5547434ca29ae80b5536/combined.png)
      ![ratio](/uploads/6cebd7a0bcef57d1b1256bc3941c1b0a/ratio.png)
      
      ### ZK
      ![setup](/uploads/1feb169452aa3274dc924edf772c9a5b/setup.png)
      ![commit](/uploads/0a2775c2116ca7d3fa7b956b934d1565/commit.png)
      
      ### FRI
      ![commits_single](/uploads/4602725e551a025d42815183a61d11b2/commits_single.png)
      ![commits_single_normalized](/uploads/2ffebea940af1cbbe9bd64499343e0e9/commits_single_normalized.png)
      ![end_to_end](/uploads/46917abd2f5976dfa6d3039cc0ab2c0e/end_to_end.png)
      ![evaluating](/uploads/cf4dc496cd5144615bf5f9b06d27dccd/evaluating.png)
      ![proofs](/uploads/b0828bfa62c2226c8d63c9ecd387049f/proofs.png)
      ![proofs_normalized](/uploads/8fbf0d713884e2e147c62313a001f379/proofs_normalized.png)
      ![proving](/uploads/161539dc412330be1878cdda82c3d966/proving.png)
      ![verifying_single](/uploads/2df7e777481d7789478386f8e83e0783/verifying_single.png)
      ab0d9a8b
  2. Nov 26, 2024
    • STEVAN Antoine's avatar
      update benchmarks readme (!176) · 07602875
      STEVAN Antoine authored
      ## changelog
      - add more snippets and instructions
      - add missing imports
      - update the "atomic operations" section
      - add a table of contents
      07602875
  3. Nov 21, 2024
    • STEVAN Antoine's avatar
      add FRI (dragoon/komodo!175) · 202d8bcc
      STEVAN Antoine authored
      FRI protocol from [`dragoon/fri`](https://gitlab.isae-supaero.fr/dragoon/fri)
      
      ## changelog
      - add binary assets to be used as inputs
      - add `fri` and `fri_test_utils` as local dependencies until [`dragoon/fri`](https://gitlab.isae-supaero.fr/dragoon/fri) becomes public
      - add `fri` feature and module (see section below for the public definitions)
      - fix bug in 32bd6566
      - bump Rust in e7a2c244
      - add a versatile example
      - add Nushell pipeline to run benchmarks and plot results
      - add some tests
      
      ## `fri` module API
      ```rust
      struct Block<F: PrimeField, H: Hasher>
      ```
      
      ```rust
      fn evaluate<F: PrimeField>(bytes: &[u8], k: usize, n: usize) -> Vec<Vec<F>>
      ```
      
      ```rust
      fn encode<F: PrimeField>(
          bytes: &[u8],
          evaluations: Vec<Vec<F>>,
          k: usize,
      ) -> Vec<fec::Shard<F>>
      ```
      
      ```rust
      fn prove<const N: usize, F: PrimeField, H: Hasher, P>(
          evaluations: Vec<Vec<F>>,
          shards: Vec<fec::Shard<F>>,
          blowup_factor: usize,
          remainder_plus_one: usize,
          nb_queries: usize,
      ) -> Result<Vec<Block<F, H>>, KomodoError>
      where
          P: DenseUVPolynomial<F>,
          for<'a, 'b> &'a P: Div<&'b P, Output = P>,
          <H as rs_merkle::Hasher>::Hash: AsRef<[u8]>,
      ```
      
      ```rust
      fn verify<const N: usize, F: PrimeField, H: Hasher, P>(
          block: Block<F, H>,
          domain_size: usize,
          nb_queries: usize,
      ) -> Result<(), KomodoError>
      where
          P: DenseUVPolynomial<F>,
          for<'a, 'b> &'a P: Div<&'b P, Output = P>,
          <H as rs_merkle::Hasher>::Hash: AsRef<[u8]>,
      ```
      
      ```rust
      fn decode<F: PrimeField, H: Hasher>(blocks: Vec<Block<F, H>>, n: usize) -> Vec<u8>
      ```
      
      ## results
      
      ### times
      
      ![evaluating](/uploads/69607a2f987e26c23dd172d469c682c5/evaluating.png)
      ![encoding](/uploads/540ac15c21ba7500ad34b068c5d9d7dc/encoding.png)
      ![proving](/uploads/a694525c7d1277fe0b53dd87b6443900/proving.png)
      ![verifying_single](/uploads/8f03a3a0abca329eea396f3ba8b76512/verifying_single.png)
      ![decoding](/uploads/ba2cb0aa54f2ecff16340333121f16ca/decoding.png)
      
      ### sizes
      
      ![commits_single](/uploads/59a96661482fb1d918efc098e060cd45/commits_single.png)
      ![commits_single_normalized](/uploads/11398ed3f37ab4917b717cb717c9070d/commits_single_normalized.png)
      ![proofs](/uploads/17da07f4ef4ee637236deba7835cc022/proofs.png)
      ![proofs_normalized](/uploads/b2aae9491c56767ad1bf5674cf980361/proofs_normalized.png)
      202d8bcc
  4. Jul 12, 2024
    • STEVAN Antoine's avatar
      refactor the Nushell modules (!158) · dad69f2c
      STEVAN Antoine authored
      this MR is two-fold
      - it restructures the two main Nushell modules so that they are easier to read and use
      - it improves the "run" and "plot" modules for the benchmarks
      
      ## changelog
      - `.nushell/` is now renamed to `nu-utils/`
      - `benchmarks/` is now a valid Nushell module which exports a bunch of modules
        - `benchmarks linalg`: measure and plot linear algebra operations
        - `benchmarks setup`: measure and plot trusted setup building
        - `benchmarks commit`: measure and plot crafting commitments
        - `benchmarks recoding`: measure and plot the recoding of shards
        - `benchmarks fec`: measure and plot FEC operations, such as encoding and recoding, and allow combining these results with the pure recoding ones
      - the submodules of `benchmarks` typically have a `run` and a `plot` command, whith the exception of `benchmarks fec` which has a `run` module and multiple "plot" commands in `benchmarks fec plot`
      - the "run" commands will create a random temp file by default and ask for confirmation otherwise if the output file already exists, unless `--force` is used
      - snippetds in `benchmarks/README.md` have been updated
      dad69f2c
    • STEVAN Antoine's avatar
      fix colors and markers for elliptic curves in plots (!157) · 8853e01b
      STEVAN Antoine authored
      ## results
      ![setup](/uploads/1f3a383689d3c8fd5a3f1331deabdec0/setup.png)
      ![commit](/uploads/bcf3bfdd991725abb97cbe4f8890840b/commit.png)
      ![inverse](/uploads/35316c887c6b2347baa86c4db119f762/inverse.png)
      ![mul](/uploads/262c27e99d7f2b5c8fb45761607a8717/mul.png)
      ![transpose](/uploads/2378460cb687d0a9320a24a840ed2eef/transpose.png)
      8853e01b
  5. Jul 05, 2024
    • STEVAN Antoine's avatar
      improve linalg benchmarks (!153) · 1395283f
      STEVAN Antoine authored
      this adds a new custom field to the `benchmarks::fields` new module and fixes the "linalg" commands to run the benchmarks
      
      ## results
      > 💡 **Note**
      >
      > using the data from !156
      
      ![inverse](/uploads/9368bc1b23a8f8772a05b8c8bab85b96/inverse.png)
      ![mul](/uploads/62b9633f47360c01ffbc92fdf15afcbe/mul.png)
      ![transpose](/uploads/c6892261d27306037a0a2a614f93d584/transpose.png)
      1395283f
  6. May 28, 2024
    • 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
  7. May 23, 2024
    • STEVAN Antoine's avatar
      dont' hardcode curves in the benchmarks (!99) · d7e84161
      STEVAN Antoine authored
      up until now, elliptic curves have been hardcoded in the benchmarks, forcing to run them on all supported curves...
      
      this MR makes it possible to use only a subset of curves.
      
      > 💡 **Note**  
      > when running the same commands from !104, minus the "inbreeding" ones which are not affected by this MR, the time goes from 12min 33sec to 4min 28sec 🎉 
      
      
      ## TODO
      - [x] setup
      - [x] commit
      - [x] recoding
      - [x] fec
      - [ ] linalg
      - [ ] setup size
      - [ ] field operations
      - [ ] group operations
      
      > 💡 **Note**  
      > because all the unticked bullet points above are far from critical to the paper and do require to measure all curves, i won't change these for now
      d7e84161
    • STEVAN Antoine's avatar
      Refactor plot commands (!104) · 0f43be24
      STEVAN Antoine authored
      this MR moves run and plot commands from `examples/benches/README.md` to
      - `scripts/setup/`: `run.nu` and `plot.nu`
      - `scripts/commit/`: `run.nu` and `plot.nu`
      - `scripts/recoding/`: `run.nu` and `plot.nu`
      - `scripts/fec/`: `run.nu` and `plot.nu`
      - `scripts/inbreeding/`: `build.nu`, `run.nu` and `plot.nu`
      
      to generate all the figures at once
      ```bash
      use scripts/setup/run.nu; seq 0 13 | each { 2 ** $in } | run --output data/setup.ndjson
      use ./scripts/setup/plot.nu; plot data/setup.ndjson --save ~/setup.pdf
      
      use scripts/commit/run.nu; seq 0 13 | each { 2 ** $in } | run --output data/commit.ndjson
      use ./scripts/commit/plot.nu; plot data/commit.ndjson --save ~/commit.pdf
      
      use scripts/recoding/run.nu; seq 0 18 | each { 512 * 2 ** $in } | run --ks [2, 4, 8, 16] --output data/recoding.ndjson
      use ./scripts/recoding/plot.nu; plot data/recoding.ndjson --save ~/recoding.pdf
      
      use scripts/fec/run.nu; seq 0 18 | each { 512 * 2 ** $in } | run --ks [2, 4, 8, 16] --output data/fec.ndjson
      use ./scripts/fec/plot.nu; plot encoding data/fec.ndjson --save ~/encoding.pdf
      use ./scripts/fec/plot.nu; plot decoding data/fec.ndjson --save ~/decoding.pdf
      use ./scripts/fec/plot.nu; plot e2e data/fec.ndjson --save ~/e2e.pdf
      
      use ./scripts/fec/plot.nu; plot combined data/fec.ndjson --recoding data/recoding.ndjson --save ~/comparison.pdf
      use ./scripts/fec/plot.nu; plot ratio data/fec.ndjson --recoding data/recoding.ndjson --save ~/ratio.pdf
      
      ./scripts/inbreeding/build.nu
      ./scripts/inbreeding/run.nu --output data/inbreeding.nuon
      ./scripts/inbreeding/plot.nu data/inbreeding.nuon --save ~/inbreeding.pdf
      ```
      
      > 💡 **Note**  
      > this took around 27min 18sec in total on my machine with 14min 45sec for the inbreeding section only and 12min 33sec for the rest
      0f43be24
  8. May 21, 2024
    • STEVAN Antoine's avatar
      run examples in release mode (!101) · be3b6b93
      STEVAN Antoine authored
      - update `benches/README.md` to use `cargo run --release --example ...`
      - add `build-examples` to `Makefile` to build all examples in release
      
      ### minor change
      add two `eprintln!` in `inbreeding.rs` to show the experiment parameters
      be3b6b93
    • STEVAN Antoine's avatar
      better plots (!102) · 9c3cd0a7
      STEVAN Antoine authored
      - new `scripts/plot.nu` with common tools and options
      - better sets of parameters
      - better commands in `benches/README.md`
      9c3cd0a7
  9. May 13, 2024
    • STEVAN Antoine's avatar
      make figures better (!98) · b4e53ac6
      STEVAN Antoine authored
      this MR makes the plot a bit nicer.
      
      ## new figures
      ![setup](/uploads/e6a7ac4e7460d8ff7015906216f9d30b/setup.png)
      ![commit](/uploads/a40700913594771cefeba45a44b2370b/commit.png)
      ![recoding](/uploads/1f3e86763c897dcf034e4b01ba858ada/recoding.png)
      ![decoding](/uploads/dd703ba4af59b4043ae5bb966f8b55ae/decoding.png)
      ![encoding](/uploads/6dbc077bbfe8086357074a0e18c8b530/encoding.png)
      ![e2e](/uploads/9eb92dbb8dc013ef803bde70f3e04f02/e2e.png)
      ![inbreeding](/uploads/9f7dac6a48c24e97448e92a69a506d2f/inbreeding.png)
      b4e53ac6
  10. Apr 29, 2024
    • STEVAN Antoine's avatar
      improve FEC bench (!96) · 70941cae
      STEVAN Antoine authored and DETCHART Jonathan's avatar DETCHART Jonathan committed
      we want to compare
      - _naive recoding_: k-decoding followed by 1-encoding
      - _komodo recoding_: k-recoding with $k = \#\text{shards}$
      
      # results
      > 💡 **Note**  
      > we see that the _naive recoding_ is around 100 times slower compared to the _komodo recoding_ 🎉 
      
      > 💡 **Note**  
      > the format of the labels is always `{curve} / {k}`
      
      ![e2e](/uploads/9ffbae9188434f27f7018155de74982b/e2e.png)
      ![recoding](/uploads/17ddb76efe7719970849eeda655a68da/recoding.png)
      70941cae
    • STEVAN Antoine's avatar
      use GPLT instead of custom scripts (!95) · 8d56debb
      STEVAN Antoine authored
      i've moved the plotting scripts to [GPLT](https://gitlab.isae-supaero.fr/a.stevan/gplt) which allows to install a single command, called `gplt`, with two subcommands
      - `gplt plot` which is the same as old `python scripts/plot/plot.py`
      - `gplt multi_bar` which is the same as old `python scripts/plot/multi_bar.py`
      8d56debb
    • STEVAN Antoine's avatar
      fix "recoding" bench and default linestyle in plot command (!94) · 0236cbed
      STEVAN Antoine authored
      otherwise, k doesn't play any role in the "recoding" benchmark
      0236cbed
  11. Apr 26, 2024
    • STEVAN Antoine's avatar
      add a "fec" bench (!93) · 392f640a
      STEVAN Antoine authored
      this MR adds
      - `examples/benches/bench_fec.rs` to the list of example benches
      - instructions on how to run the new benchmark and plot the results
      
      ## results
      ![encoding](/uploads/d474aa6f39ea20c6b346fb17d2e7ecdc/encoding.png)
      ![decoding](/uploads/061944e49f02541ea93ac0de9547ce37/decoding.png)
      ![e2e](/uploads/bb27f4bb6290c4697a65faa59a0ac4e0/e2e.png)
      392f640a
    • STEVAN Antoine's avatar
      add some minor fixes around the benches (!92) · 89c6377d
      STEVAN Antoine authored
      - fix the path to the "bench" readme and remove it from the plot scripts
      - "BLS-12-381" to "BLS12-381" for consistency
      89c6377d
    • STEVAN Antoine's avatar
      use better names in `plot.py` (!91) · 2e6398e8
      STEVAN Antoine authored
      this MR goes from
      ```rust
      let xs = seq 0 5 | each { 2 ** $in } | wrap x
      let twice = $xs | insert measurement { 2 * $in.x } | insert error { 0.1 + 0.5 * $in.x }
      let square = $xs | insert measurement { $in.x ** 2 } | insert error { 1 + 1.5 * $in.x }
      
      python scripts/plot/plot.py --title title --x-label x --y-label y --fullscreen ([
          { group: "x ^ 2", items: $square },
          { group: "2 * x", items: $twice }
      ] | to json)
      ```
      to
      ```rust
      let xs = seq 0 5 | each { 2 ** $in }
      let twice = $xs | wrap x | insert y { 2 * $in.x } | insert e { 0.1 + 0.5 * $in.x }
      let square = $xs | wrap x | insert y { $in.x ** 2 } | insert e { 1 + 1.5 * $in.x }
      
      python scripts/plot/plot.py --title title --x-label x --y-label y --fullscreen ([
          { name: "x ^ 2", points: $square },
          { name: "2 * x", points: $twice }
      ] | to json)
      ```
      updates the "bench" README and adds type annotations to the `plot.py` script.
      2e6398e8
    • STEVAN Antoine's avatar
      migrate recoding benchmark to PLNK (!89) · 22f7943d
      STEVAN Antoine authored
      this MR
      - moves the last "recoding" benchmark to `examples/benches/`
      - moves the README, which is now all alone, to `examples/benches/`
      - adds a mention to `examples/benches/README.md` in `README.md`
      - some minor improvements to the bench README
      
      ## TODO
      - [x] find a way to plot the "recoding" results (thanks to !90)
      22f7943d
  12. Apr 25, 2024
    • STEVAN Antoine's avatar
      make plot scripts more powerful and minor tweaks (!88) · 72f3cd8a
      STEVAN Antoine authored
      ## changelog
      - use `out> *.ndjson` in the README to simplify running the benchmarks
      - create a `scripts/math.nu` module with `ns-to-ms` and `compute-stats` to refactor some of the most common operations
      - add `--fullscreen` to `plot.py` and `multi_bar.py`
      - add `--x-scale` and `--y-scale` to `plot.py`
      72f3cd8a
    • STEVAN Antoine's avatar
      migrate criterion benchmarks to PLNK (!87) · eaa8acbd
      STEVAN Antoine authored
      ## changelog
      - benchmarks
        - _commit_ has been removed in favor of `examples/benches/commit.rs`
        - _linalg_ has been migrated to `examples/benches/` as `bench_linalg`
        - _setup_ has been migrated to `examples/benches/` as `bench_setup`
      - `read-atomic-ops` command has been moved to `scripts/parse.nu` module
      - `scripts/plot/bench_commit.py` has been made more general and renamed to `scripts/plot/plot.py`
      - `scripts/plot/benches.py` has been removed because it's not required anymore => `plot.py` and `multi_bar.py` are general enough
      eaa8acbd
    • STEVAN Antoine's avatar
      bump PLNK to 0.6.0 (!85) · 4b193d97
      STEVAN Antoine authored
      this MR
      - bumps PLNK to 0.6.0
      - update all existing code
      - uses the PLNK lib in `examples/benches/commit.rs`
      - fixes the y label of the plot in `scripts/plot/bench_commit.py`: was _ns_, should be _ms_
      4b193d97
  13. Apr 24, 2024
    • STEVAN Antoine's avatar
      use PLNK instead of duplicating "bench" framework (!84) · a4ef3e2a
      STEVAN Antoine authored
      i've basically refactored the whole "bench" framework that was inlined in  `examples/benches/operations/field.rs` and `examples/benches/operations/curve_group.rs` into a new repo called [PLNK](https://gitlab.isae-supaero.fr/a.stevan/plnk).
      
      nothing effectively changes on the side of Komodo but now the code is much simpler here :)
      a4ef3e2a
    • STEVAN Antoine's avatar
      write manual atomic benchmarks (!82) · 10acafb1
      STEVAN Antoine authored
      this idea is to not use `criterion` and measure exactly what we want
      
      ## results
      ![simple_field](/uploads/c114cee9ef4b0e56e9ab290d1cbbab2e/simple_field.png)
      ![complex_field](/uploads/7bc8ea613793718f6460438f1df6fd24/complex_field.png)
      ![simple_curve_group](/uploads/a9f8642fc1f1fa558c2bee366622646f/simple_curve_group.png)
      ![complex_curve_group](/uploads/76a3fbe2430959e20150070beeb196a5/complex_curve_group.png)
      10acafb1
    • STEVAN Antoine's avatar
      add error margins to the plot of the oneshot bench commit (!83) · b711ad5b
      STEVAN Antoine authored
      we see that the Arkworks / Komodo versions of the same curves are basically the same.
      ![Figure_1](/uploads/faa1523bbd3037390eb0c56f037995ea/Figure_1.png)
      b711ad5b
  14. Apr 23, 2024
  15. Apr 22, 2024
    • STEVAN Antoine's avatar
      improve the _atomic_ benchmark plots (!79) · ed16b5d8
      STEVAN Antoine authored
      this MR improves the "_atomic_" script in `benches/README.md` to allow filtering _species_ to show in the _multibar_ plot.
      
      in addition to this, the warmup time and the number of samples of Criterion have been increased back to 3sec and 100 respectively.
      
      > **Note**  
      > the benchmarks take 15min on my machine, i.e. by running the following two commands in Nushell
      > ```bash
      > cargo criterion --output-format verbose --message-format json --bench field_operations out> field.ndjson
      > cargo criterion --output-format verbose --message-format json --bench curve_group_operations out> curve.ndjson
      > ```
      
      ## results
      ![foo](/uploads/5cdc5af344f4ad0510b3d1993c09389f/foo.png)
      ![bar](/uploads/2563b465727d85b886f77c5574ae616d/bar.png)
      ![baz](/uploads/7a485c61d218c8e065afdd880171a12b/baz.png)
      ed16b5d8
    • STEVAN Antoine's avatar
      measure atomic operations of curve groups and prime fields (dragoon/komodo!78) · 4dcfdfb0
      STEVAN Antoine authored
      this MR adds two now benchmarks:
      - `field_operations` in `benches/operations/field.rs`
      - `curve_group_operations` in `benches/operations/curve_group.rs`
      
      as well as `scripts/plot/multi_bar.py` to plot the results, see `benches/README.md` for the commands to run.
      
      ## results
      ![curve_group](/uploads/0a27dcdc7965090b0429867e1822a40c/curve_group.png)
      
      ![field](/uploads/461455568a0a637f78f9c2b6d1a68f59/field.png)
      4dcfdfb0
  16. Apr 12, 2024
  17. Apr 10, 2024
  18. Apr 02, 2024
    • STEVAN Antoine's avatar
      add a benchmark for the _trusted setup_ (dragoon/komodo!52) · 4273d869
      STEVAN Antoine authored
      as per title
      
      ## changelog
      - add a `setup.rs` benchmark which measures
        - the creation of a random setup
        - the serialization of a setup
        - the deserialization of a setup
      - refactor `plot.py` a bit to
        - use `argparse`
        - take `--bench` to plot either _linalg_ or _setup_ results
        - write a complete `plot_setup` function
        - add a bit of documentation here and there
      
      ## example results
      ![Figure_1](/uploads/ea4bddc5c0c426d0824bad55e2e2e5aa/Figure_1.png)
      4273d869
  19. Mar 26, 2024
    • STEVAN Antoine's avatar
      benchmark the `linalg` module (!43) · 5d1cb661
      STEVAN Antoine authored
      this MR
      - adds `criterion` as a dependency
      - creates a `linalg.rs` benchmark file
      - makes the following function `pub`lic
        - `Matrix::transpose`
        - `Matrix::invert`
        - `Matrix::mul`
      - creates a new `benches/` directory containing
        - a README with commands
        - a `plot.py` file to plot results
        - a `linalg.rs` file with the benchmarks
      
      ## example results
      ![Figure_1](/uploads/f352a6f411662361fa9ca381710271d5/Figure_1.png)
      5d1cb661
Loading