Commit 0346774
authored
fix: To fix Python QEC conversion for empty repetition-code X matrices (#660)
This PR tries to fix [[B]
6428084](https://nvbugspro.nvidia.com/bug/6428084) .
It also adds one test to expose this bug and verify the fix.
Thanks for looking this PR.
In our suggested fix, we keep the existing C++ `cudaqx::tensor`
semantics unchanged: an empty directional parity/observable tensor may
remain rank 0.
In the Python binding layer, we add a small wrapper for matrix-returning
`Code` methods that detects this valid rank-0 empty sentinel and
converts it to an empty 2-D NumPy matrix with the correct width, e.g.
`(0, code.get_num_data_qubits())`.
It also adds rank validation in the generic tensor-to-NumPy helpers
before reading `shape[0]` / `shape[1]` and skips `memcpy` for zero-sized
tensors, so invalid-rank conversions fail cleanly instead of causing
undefined behaviour.
Signed-off-by: Kaiqi Yan <kaiqiy@nvidia.com>1 parent 511d204 commit 0346774
3 files changed
Lines changed: 62 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
227 | 227 | | |
228 | 228 | | |
229 | 229 | | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
230 | 245 | | |
231 | 246 | | |
232 | 247 | | |
| |||
364 | 379 | | |
365 | 380 | | |
366 | 381 | | |
367 | | - | |
| 382 | + | |
| 383 | + | |
368 | 384 | | |
369 | 385 | | |
370 | 386 | | |
371 | 387 | | |
372 | 388 | | |
373 | | - | |
374 | | - | |
| 389 | + | |
| 390 | + | |
375 | 391 | | |
376 | 392 | | |
377 | 393 | | |
378 | 394 | | |
379 | 395 | | |
380 | | - | |
381 | | - | |
| 396 | + | |
| 397 | + | |
382 | 398 | | |
383 | 399 | | |
384 | 400 | | |
385 | 401 | | |
386 | 402 | | |
387 | | - | |
388 | | - | |
| 403 | + | |
| 404 | + | |
389 | 405 | | |
390 | 406 | | |
391 | 407 | | |
392 | 408 | | |
393 | 409 | | |
394 | | - | |
395 | | - | |
| 410 | + | |
| 411 | + | |
396 | 412 | | |
397 | 413 | | |
398 | 414 | | |
399 | 415 | | |
400 | 416 | | |
401 | | - | |
402 | | - | |
| 417 | + | |
| 418 | + | |
403 | 419 | | |
404 | 420 | | |
405 | 421 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
256 | 257 | | |
257 | 258 | | |
258 | 259 | | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
259 | 264 | | |
260 | 265 | | |
261 | 266 | | |
262 | 267 | | |
263 | 268 | | |
264 | 269 | | |
265 | | - | |
| 270 | + | |
| 271 | + | |
266 | 272 | | |
267 | 273 | | |
268 | 274 | | |
| |||
274 | 280 | | |
275 | 281 | | |
276 | 282 | | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
277 | 287 | | |
278 | 288 | | |
279 | 289 | | |
280 | 290 | | |
281 | 291 | | |
282 | | - | |
| 292 | + | |
| 293 | + | |
283 | 294 | | |
284 | 295 | | |
285 | 296 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
42 | 64 | | |
43 | 65 | | |
44 | 66 | | |
| |||
0 commit comments