Measure the CPU/GPU crossover on each machine

Open
#20 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
rust

Research direction

Start with the shortcut: logic in src/lib.rs and trace how backend="auto" chooses CPU or GPU. Read the environment variable and setter paths first; the issue suggests adding a threshold setting before calibration. Done means the threshold can be set by environment variable or setter, and CPU is chosen on ties; calibration is a possible follow-up.

Written by the indexing model from the issue text.

Description

enhancement
What you want to do

backend="auto" switches to the GPU at 14 qubits (and 20 for circuits that measure part-way), values
measured on one Ryzen 5 5500 + RX 6600 (src/lib.rs, marked shortcut:). On other machines the
best crossover may be a few qubits away, so "auto" picks the slower backend in that range.

Implementation notes

Start with the environment variable and setter, which are the cheapest. Calibration can follow.
Keep the CPU on a tie, for its 64-bit precision.

What it could look like
qsengine.calibrate()                    # times both backends, saves the crossover
qsengine.set_gpu_threshold(16)          # or set it by hand
# or the environment variable QSENGINE_GPU_MIN_QUBITS=16
Contributing
  • I would like to open a pull request for this (see CONTRIBUTING.md).
Dominant language
Rust
Stars
1
Forks
0
Avg merge
12m
Merged PRs (30d)
4

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from kaiwave/qsengine

All issues in kaiwave/qsengine

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.