cuda-quantum icon indicating copy to clipboard operation
cuda-quantum copied to clipboard

Infinite loop when looping through kernel builder qubits

Open anthony-santana opened this issue 9 months ago • 0 comments

Required prerequisites

  • [X] Consult the security policy. If reporting a security vulnerability, do not report the bug using this form. Use the process described in the policy to report the issue.
  • [X] Make sure you've read the documentation. Your issue may be addressed there.
  • [X] Search the issue tracker to verify that this hasn't already been reported. +1 or comment there if it has.
  • [ ] If possible, make a PR with a failing test to give us a starting point to work on!

Describe the bug

The following will run an infinite loop:

import cudaq

kernel = cudaq.make_kernel()
qubits = kernel.qalloc(2)

for qubit in qubits:
    print(qubit)

which prints

.
.
.
Value(%1060 = quake.extract_ref %0[%c1059_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1061 = quake.extract_ref %0[%c1060_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1062 = quake.extract_ref %0[%c1061_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1063 = quake.extract_ref %0[%c1062_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1064 = quake.extract_ref %0[%c1063_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1065 = quake.extract_ref %0[%c1064_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1066 = quake.extract_ref %0[%c1065_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1067 = quake.extract_ref %0[%c1066_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1068 = quake.extract_ref %0[%c1067_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1069 = quake.extract_ref %0[%c1068_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1070 = quake.extract_ref %0[%c1069_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1071 = quake.extract_ref %0[%c1070_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1072 = quake.extract_ref %0[%c1071_i64] : (!quake.veq<2>, i64) -> !quake.ref)
Value(%1073 = quake.extract_ref %0[%c1072_i64] : (!quake.veq<2>, i64) -> !quake.ref)
.
.
.

Steps to reproduce the bug

See attached code

Expected behavior

We expect an error or for the loop to terminate properly.

Is this a regression? If it is, put the last known working version (or commit) here.

Not a regression

Environment

  • CUDA Quantum version:
  • Python version:
  • C++ compiler:
  • Operating system:

All latest

Suggestions

No response

anthony-santana avatar May 14 '24 19:05 anthony-santana