Faster CPU backend for large registers (≥ 20 qubits)
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 48/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- rust
- Domaine
- performance
Piste de recherche
Start with apply_gate_kernel in src/engine.rs around line 75 and compare its CPU benchmark with Qiskit Aer at 20 or more qubits. The issue lists gate special cases, controlled-gate indexing, cache blocking, and two-qubit fusion as possible optimization paths. Done means CPU circuits run faster without an API change; the issue names no benchmark file or test command.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
What you want to do
In the benchmark the CPU backend falls behind Qiskit Aer from 20 qubits (1.17 s vs 431 ms at 22). Each extra qubit costs 3–4× instead of 2× once the 16 MiB state stops fitting in L3 cache. Users without a GPU hit this wall first.
Implementation notes
Ranked roughly by expected gain per line of code:
- Special-case permutation and diagonal gates.
apply_gate_kernel(src/engine.rs:75) runs a
full 2×2 complex multiply for X, CX, Z, CZ, S, T, P and RZ. X and CX only need to swap amplitudes.
Diagonal gates only need to multiply one half (or both halves by a phase). This halves the
arithmetic and the memory writes for diagonal gates. - Controlled gates should only visit pairs whose control bits are set. At the moment the kernel
visits every pair and skips non-matching ones with a branch. Enumerating only the indices that
match turns a full pass into half a pass (CX) or a quarter (CCX). - Cache blocking. Apply runs of gates whose targets are all below some qubit k to one
2^k-amplitude block at a time, so each block stays in L2/L3 while several gates hit it. - Two-qubit fusion. Merge consecutive gates on the same pair of qubits into one 4×4 matrix.
That needs a 4×4 kernel.
What it could look like
No API change: the same circuits just run faster on `backend="cpu"`.
Contributing
- I would like to open a pull request for this (see CONTRIBUTING.md).
- Langage dominant
- Rust
- Étoiles
- 1
- Forks
- 0
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de kaiwave/qsengine
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
-
Fold long circuit drawingsOuverteenhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 54/100
Toutes les issues de kaiwave/qsengine
Issues similaires
-
needs-triage tooling
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
neilsh/stunt-reel#317 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
storytold/craft-fonts#65 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
storytold/craft-libs#723 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
n0-computer/iroh#4669 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour