QuantumSavory / QuantumSavory.jl

A full stack simulator of quantum hardware, from the low-level analog physics to high-level network dynamics. Includes discrete event simulator, symbolic representation for quantum object, and works with many backend simulators.
https://quantumsavory.github.io/QuantumSavory.jl/
MIT License
28 stars 10 forks source link

More thorough benchmarks [$200] #131

Open Krastanov opened 2 weeks ago

Krastanov commented 2 weeks ago
Bug bounty logistic details (click to expand) To claim exclusive time to work on this bounty either post a comment here or message [skrastanov@umass.edu](mailto:skrastanov@umass.edu) with: - your name - github username - **(optional)** a brief list of previous pertinent projects you have engaged in If you want to, you can work on this project without making a claim, however claims are encouraged to give you and other contributors peace of mind. Whoever has made a claim takes precedence when solutions are considered. You can always propose your own funded project, if you would like to contribute something of value that is not yet covered by an official bounty.

The project is claimed by @coderight1 until Aug 12th 2024.

Project: "More thorough benchmarks" [$200]

We have a small benchmark suite already implemented, which is executed as part of our CI runs. It is defined in the benchmark folder and reported for each pull request. We would like to expand this benchmark suite to include many more facets of this library. E.g. basic register operations using a variety of backends; queries and tags and locks on registers and channels; time to import; time to run examples. The new benchmarks should be legible, easy to follow, and organized by topic. Most of them should be microbenchmarks testing only one concept, but a few holistic benchmarks would make sense as well.

Required skills: Generic Julia skills.

Reviewer: Stefan Krastanov

Duration: 1 month

Payout procedure:

The Funding for these bounties comes from the National Science Foundation and from the NSF Center for Quantum Networks. The payouts are managed by the NumFOCUS foundation and processed in bulk once every two months. If you live in a country in which NumFOCUS can make payments, you can participate in this bounty program.

Click here for more details about the bug bounty program.

coderight1 commented 2 weeks ago

Hi @Krastanov , I have recently started learning Julia , and willing to work on this.

Krastanov commented 2 weeks ago

Please feel free to go ahead with it. Before I reserve it for you though, let's discuss what you plan to add in this comment thread. While this is a good issue for a first-time developer, it is not an easy issue for someone who has not written any user code with this library. I would suggest trying to run a few examples and creating a simulation of something interesting first. The benchmarks are supposed to have a very thorough coverage.

coderight1 commented 2 weeks ago

Hi @Krastanov,

Thank you for the opportunity. I appreciate your advice and would like to proceed with the following plan for expanding the benchmark suite:

Basic Register Operations: Add benchmarks for creating, updating, and deleting registers using various backends.

Queries, Tags, and Locks: Benchmark the time for queries, adding/removing tags, and locking/unlocking operations on registers and channels.

Import Time: Measure the time it takes to import the library in different environments.

Example Run Time: Benchmark the execution time of existing examples. Create and benchmark new examples to cover additional scenarios.

To keep things organized, I plan to create different files for each facet of the library, such as basic register operations, queries and tags, locks on registers and channels, etc. This way, the benchmarks will be easier to manage and understand.

Please let me know if there are any specific areas you would like me to prioritize or any additional details I should consider.

Krastanov commented 2 weeks ago

Sounds good! A few suggestions:

I will make this reserved for 1month, but we can extend if necessary. Thank you for taking this on.