Faster CPU backend for large registers (≥ 20 qubits)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- rust
- Área
- performance
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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).
- Lenguaje dominante
- Rust
- Estrellas
- 1
- Forks
- 0
- Merge medio
- 12 min
- PR fusionados (30 d)
- 4
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de kaiwave/qsengine
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
-
Fold long circuit drawingsAbiertoenhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
Todos los issues de kaiwave/qsengine
Issues similares
-
bug order-flow studies ui
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
userFRM/egui-charts#2417 ·
Los mantenedores suelen responder en 1 día
-
In a plain-text message, Font, Font Size, Font Color and Text Highlight Color stay livePosiblemente ocupada @ragelfundionctrumnar la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
UCS-Care-Group/mailcraft#862 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
smoltcp-rs/smoltcp#1243 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 4 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día