Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cupy matrices #1558

Merged
merged 36 commits into from
Feb 5, 2025
Merged

Cupy matrices #1558

merged 36 commits into from
Feb 5, 2025

Conversation

BrunoLiegiBastonLiegi
Copy link
Contributor

This adapts qibo for qiboteam/qibojit#199, which is addressing the cupy failures related to #1548.

Checklist:

  • Reviewers confirm new code works as expected.
  • Tests are passing.
  • Coverage does not decrease.
  • Documentation is updated.

Copy link

codecov bot commented Jan 21, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 99.61%. Comparing base (66b1a0f) to head (bca0443).
Report is 47 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1558      +/-   ##
==========================================
- Coverage   99.66%   99.61%   -0.06%     
==========================================
  Files          76       76              
  Lines       11440    11444       +4     
==========================================
- Hits        11402    11400       -2     
- Misses         38       44       +6     
Flag Coverage Δ
unittests 99.61% <100.00%> (-0.06%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Comment on lines 439 to 441
if backend.__class__.__name__ in [
"CuQuantumBackend",
]:
Copy link
Contributor

@renatomello renatomello Jan 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if it works for cupy, shouldn't it work for cuquantum?

(same for all the other times this appears)

Copy link
Contributor Author

@BrunoLiegiBastonLiegi BrunoLiegiBastonLiegi Jan 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe, did not test it, I think it depends on how much CuQuantum differs from Cupy. In this specific case, for instance, I think it all boils down to how the eigenvalues are calculated.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In any case I just gave it a try with cuquantum and several tests are failing anyway, thus it is probably better to more broadly review the backend separately.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding cuquantum some tests are already failing qiboteam/qibojit#181. With cuquantum==23.6.0 the qibojit tests are passing including cuquantum.

Copy link
Contributor

@andrea-pasquale andrea-pasquale left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @BrunoLiegiBastonLiegi.
Generally looks good, I'm struggling to test the changes since there are several tests which are failing (in main). I'm currently testing both of cuquantum and cupy on the cluster.

Here are the tests which are currently failing.
FAILED tests/test_models_variational.py::test_vqe[qibojit-cupy-BFGS-options2-False-vqe_bfgs.out] FAILED tests/test_models_variational.py::test_vqe[qibojit-cupy-parallel_L-BFGS-B-options4-False-None] FAILED tests/test_models_variational.py::test_vqe[qibojit-cupy-cma-options5-False-None] FAILED tests/test_models_variational.py::test_vqe[qibojit-cuquantum-BFGS-options2-False-vqe_bfgs.out] FAILED tests/test_models_variational.py::test_vqe[qibojit-cuquantum-parallel_L-BFGS-B-options4-False-None] FAILED tests/test_models_variational.py::test_vqe[qibojit-cuquantum-cma-options5-False-None] FAILED tests/test_models_variational.py::test_qaoa_optimization[qibojit-cupy-BFGS-options0-True-qaoa_bfgs.out] FAILED tests/test_models_variational.py::test_qaoa_optimization[qibojit-cupy-BFGS-options1-False-trotter_qaoa_bfgs.out] FAILED tests/test_models_variational.py::test_qaoa_optimization[qibojit-cupy-Powell-options2-False-trotter_qaoa_powell.out] FAILED tests/test_models_variational.py::test_qaoa_optimization[qibojit-cuquantum-BFGS-options0-True-qaoa_bfgs.out] FAILED tests/test_models_variational.py::test_qaoa_optimization[qibojit-cuquantum-BFGS-options1-False-trotter_qaoa_bfgs.out] FAILED tests/test_models_variational.py::test_qaoa_optimization[qibojit-cuquantum-Powell-options2-False-trotter_qaoa_powell.out] FAILED tests/test_quantum_info_clifford.py::test_clifford_to_circuit[qibojit-cupy-2-AG04-1] FAILED tests/test_quantum_info_clifford.py::test_clifford_to_circuit[qibojit-cupy-2-AG04-10] FAILED tests/test_quantum_info_clifford.py::test_clifford_to_circuit[qibojit-cupy-2-BM20-1] FAILED tests/test_quantum_info_clifford.py::test_clifford_to_circuit[qibojit-cupy-2-BM20-10] FAILED tests/test_quantum_info_clifford.py::test_clifford_to_circuit[qibojit-cupy-3-AG04-1] FAILED tests/test_quantum_info_clifford.py::test_clifford_to_circuit[qibojit-cupy-3-AG04-10] FAILED tests/test_quantum_info_clifford.py::test_clifford_to_circuit[qibojit-cupy-3-BM20-1] FAILED tests/test_quantum_info_clifford.py::test_clifford_to_circuit[qibojit-cupy-3-BM20-10] FAILED tests/test_quantum_info_clifford.py::test_clifford_to_circuit[qibojit-cupy-10-AG04-1] FAILED tests/test_quantum_info_clifford.py::test_clifford_to_circuit[qibojit-cupy-10-AG04-10] FAILED tests/test_quantum_info_clifford.py::test_clifford_to_circuit[qibojit-cupy-50-AG04-1] FAILED tests/test_quantum_info_clifford.py::test_clifford_to_circuit[qibojit-cupy-50-AG04-10] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cupy-2-False] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cupy-2-True] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cupy-10-False] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cupy-10-True] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cupy-2.718281828459045-False] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cupy-2.718281828459045-True] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cupy-5-False] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cupy-5-True] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cuquantum-2-False] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cuquantum-2-True] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cuquantum-10-False] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cuquantum-10-True] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cuquantum-2.718281828459045-False] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cuquantum-2.718281828459045-True] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cuquantum-5-False] FAILED tests/test_quantum_info_entropies.py::test_von_neumann_entropy[qibojit-cuquantum-5-True] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition0-2-False] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition0-2-True] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition0-10-False] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition0-10-True] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition0-2.718281828459045-False] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition0-2.718281828459045-True] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition0-5-False] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition0-5-True] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition1-2-False] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition1-2-True] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition1-10-False] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition1-10-True] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition1-2.718281828459045-False] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition1-2.718281828459045-True] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition1-5-False] FAILED tests/test_quantum_info_entropies.py::test_entanglement_entropy[qibojit-cupy-bipartition1-5-True] FAILED tests/test_tomography_gate_set_tomography.py::test_GST[qibojit-cupy-False-target_gates0] FAILED tests/test_tomography_gate_set_tomography.py::test_GST[qibojit-cuquantum-False-target_gates0] FAILED tests/test_tomography_gate_set_tomography.py::test_GST_with_transpiler[qibojit-cupy] FAILED tests/test_tomography_gate_set_tomography.py::test_GST_with_transpiler[qibojit-cuquantum] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cupy-NativeGates.U3-NativeGates.CZ] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cupy-NativeGates.U3-NativeGates.iSWAP] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cupy-NativeGates.U3-NativeGates.iSWAP|CZ] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cupy-NativeGates.GPI2-NativeGates.CZ] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cupy-NativeGates.GPI2-NativeGates.iSWAP] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cupy-NativeGates.GPI2-NativeGates.iSWAP|CZ] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cupy-NativeGates.U3|GPI2-NativeGates.CZ] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cupy-NativeGates.U3|GPI2-NativeGates.iSWAP] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cupy-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cuquantum-NativeGates.U3-NativeGates.CZ] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cuquantum-NativeGates.U3-NativeGates.iSWAP] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cuquantum-NativeGates.U3-NativeGates.iSWAP|CZ] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cuquantum-NativeGates.GPI2-NativeGates.CZ] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cuquantum-NativeGates.GPI2-NativeGates.iSWAP] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cuquantum-NativeGates.GPI2-NativeGates.iSWAP|CZ] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cuquantum-NativeGates.U3|GPI2-NativeGates.CZ] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cuquantum-NativeGates.U3|GPI2-NativeGates.iSWAP] FAILED tests/test_transpiler_decompositions.py::test_fSim_to_native[qibojit-cuquantum-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.GPI2-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.GPI2-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.GPI2-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.GPI2-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.GPI2-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.GPI2-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.GPI2-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.GPI2-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.GPI2-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3|GPI2-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3|GPI2-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3|GPI2-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3|GPI2-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3|GPI2-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3|GPI2-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cupy-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.GPI2-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.GPI2-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.GPI2-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.GPI2-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.GPI2-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.GPI2-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.GPI2-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.GPI2-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.GPI2-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3|GPI2-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3|GPI2-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3|GPI2-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3|GPI2-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3|GPI2-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3|GPI2-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_GeneralizedfSim_to_native[qibojit-cuquantum-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.GPI2-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.GPI2-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.GPI2-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.GPI2-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.GPI2-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.GPI2-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.GPI2-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.GPI2-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.GPI2-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3|GPI2-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3|GPI2-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3|GPI2-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3|GPI2-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3|GPI2-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3|GPI2-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-1-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.GPI2-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.GPI2-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.GPI2-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.GPI2-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.GPI2-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.GPI2-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.GPI2-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.GPI2-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.GPI2-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3|GPI2-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3|GPI2-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3|GPI2-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3|GPI2-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3|GPI2-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3|GPI2-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cupy-2-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.GPI2-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.GPI2-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.GPI2-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.GPI2-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.GPI2-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.GPI2-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.GPI2-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.GPI2-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.GPI2-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3|GPI2-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3|GPI2-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3|GPI2-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3|GPI2-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3|GPI2-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3|GPI2-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-1-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.GPI2-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.GPI2-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.GPI2-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.GPI2-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.GPI2-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.GPI2-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.GPI2-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.GPI2-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.GPI2-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3|GPI2-NativeGates.CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3|GPI2-NativeGates.CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3|GPI2-NativeGates.CZ-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3|GPI2-NativeGates.iSWAP-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3|GPI2-NativeGates.iSWAP-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3|GPI2-NativeGates.iSWAP-seed2] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-None] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-10] FAILED tests/test_transpiler_decompositions.py::test_unitary_to_native[qibojit-cuquantum-2-NativeGates.U3|GPI2-NativeGates.iSWAP|CZ-seed2] FAILED tests/test_transpiler_unroller.py::test_unroller[NativeGates.U3-NativeGates.CZ] FAILED tests/test_transpiler_unroller.py::test_unroller[NativeGates.U3-NativeGates.iSWAP] FAILED tests/test_transpiler_unroller.py::test_unroller[NativeGates.U3-NativeGates.iSWAP|CZ] FAILED tests/test_transpiler_unroller.py::test_unroller[NativeGates.GPI2-NativeGates.CZ] FAILED tests/test_transpiler_unroller.py::test_unroller[NativeGates.GPI2-NativeGates.iSWAP] FAILED tests/test_transpiler_unroller.py::test_unroller[NativeGates.GPI2-NativeGates.iSWAP|CZ] FAILED tests/test_transpiler_unroller.py::test_unroller[NativeGates.U3|GPI2-NativeGates.CZ] FAILED tests/test_transpiler_unroller.py::test_unroller[NativeGates.U3|GPI2-NativeGates.iSWAP] FAILED tests/test_transpiler_unroller.py::test_unroller[NativeGates.U3|GPI2-NativeGates.iSWAP|CZ]

These tests are passing for you locally @BrunoLiegiBastonLiegi ?

Comment on lines 439 to 441
if backend.__class__.__name__ in [
"CuQuantumBackend",
]:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding cuquantum some tests are already failing qiboteam/qibojit#181. With cuquantum==23.6.0 the qibojit tests are passing including cuquantum.

@BrunoLiegiBastonLiegi
Copy link
Contributor Author

Thanks @BrunoLiegiBastonLiegi. Generally looks good, I'm struggling to test the changes since there are several tests which are failing (in main). I'm currently testing both of cuquantum and cupy on the cluster.
These tests are passing for you locally @BrunoLiegiBastonLiegi ?

Yeah I know, that's also the reason why I am desperately trying to make selfhosted tests work (#1561).
Locally, in this branch I was able to fix all the cupy tests except for a bunch of them in the quantum_info.Clifford object. I did not test cuquantum though. Anyway, yes in main I see those tests failing as well.

@BrunoLiegiBastonLiegi
Copy link
Contributor Author

BrunoLiegiBastonLiegi commented Jan 30, 2025

@andrea-pasquale I was able to finally get the tests running on the cluster in #1561 (https://github.com/qiboteam/qibo/actions/runs/13053214507/job/36417932093?pr=1561), now we can maybe address the failures in that PR (and probably a corresponding PR in qibojit) and then come back at this.

@BrunoLiegiBastonLiegi
Copy link
Contributor Author

BrunoLiegiBastonLiegi commented Feb 3, 2025

@renatomello The only tests failing under cupy right now, are a bunch from the Clifford.to_circuit method:
https://github.com/qiboteam/qibo/actions/runs/13115954919/job/36590167571
which was a known issue already, #1458
Can we ask you for hand with those?

edit: Ok I think I know why they are failing for cupy only. The reason is that with the cupy engine the symplectic matrix is linearized, all the gates are implemented for acting on a 1d array, but you're passing a 2d matrix in the to_circuit.

edit 2: Actually, I am not even sure how this was working even with numpy, as the gates are implemented to act on matrices with packed bits. @renatomello what's your take on that?

Copy link
Contributor

@andrea-pasquale andrea-pasquale left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @BrunoLiegiBastonLiegi, feel free to merge the corresponding PR in qibojit. Depending on whether we want to address #1458 we can either merge or wait for the fix.

@BrunoLiegiBastonLiegi
Copy link
Contributor Author

Thanks @BrunoLiegiBastonLiegi, feel free to merge the corresponding PR in qibojit. Depending on whether we want to address #1458 we can either merge or wait for the fix.

I'd say it would be better to fix that here as well. I was able to fix the tests with the algorithm=BM20 locally, but I am still struggling with the other one, AG04.

@BrunoLiegiBastonLiegi
Copy link
Contributor Author

After a full day of painful tries I realized that supporting the AG04 is not trivial. It would probably take to rewrite the whole routine specifically taking into account that the matrix is not 2d but rather a 1d linearized matrix. This would mostly mean that all the indexing is messed up and has to be adapted. It should not be hard, but it surely takes some effort. For this reason I decided for now to drop support for the AG04 algorithm with cupy (the BM20 one still works). I will open an issue to remind us about this in case we decide to address it in the future.

Copy link

github-actions bot commented Feb 4, 2025

Run on QPU sim completed! :atom:

You can download the coverage report as an artifact, from the workflow summary page:
https://github.com/qiboteam/qibo/actions/runs/13139181903

Copy link

github-actions bot commented Feb 4, 2025

Run on QPU sim completed! :atom:

You can download the coverage report as an artifact, from the workflow summary page:
https://github.com/qiboteam/qibo/actions/runs/13139860729

Copy link

github-actions bot commented Feb 5, 2025

Run on QPU sim completed! :atom:

You can download the coverage report as an artifact, from the workflow summary page:
https://github.com/qiboteam/qibo/actions/runs/13157643881

@BrunoLiegiBastonLiegi BrunoLiegiBastonLiegi added this pull request to the merge queue Feb 5, 2025
Merged via the queue into master with commit 1988db0 Feb 5, 2025
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants