pyqrack-cuda 1.49.1__tar.gz → 1.49.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyqrack_cuda-1.49.1/pyqrack_cuda.egg-info → pyqrack_cuda-1.49.3}/PKG-INFO +1 -1
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_ace_backend.py +45 -48
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3/pyqrack_cuda.egg-info}/PKG-INFO +1 -1
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/setup.py +1 -1
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/LICENSE +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/MANIFEST.in +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/Makefile +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/README.md +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyproject.toml +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/__init__.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/neuron_activation_fn.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/pauli.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_circuit.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_neuron.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_neuron_torch_layer.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_simulator.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_stabilizer.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_system/__init__.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_system/qrack_system.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/quimb_circuit_type.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/stats/__init__.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/stats/load_quantized_data.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/stats/quantize_by_range.py +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack_cuda.egg-info/SOURCES.txt +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack_cuda.egg-info/dependency_links.txt +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack_cuda.egg-info/not-zip-safe +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack_cuda.egg-info/requires.txt +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack_cuda.egg-info/top_level.txt +0 -0
- {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/setup.cfg +0 -0
@@ -63,13 +63,17 @@ class QrackAceBackend:
|
|
63
63
|
self.long_range_columns = long_range_columns
|
64
64
|
self._is_init = [False] * qubit_count
|
65
65
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
col_seq *
|
70
|
-
|
71
|
-
|
72
|
-
|
66
|
+
if long_range_columns >= self.row_length:
|
67
|
+
self._is_col_long_range = [True] * long_range_columns
|
68
|
+
else:
|
69
|
+
col_seq = [True] * long_range_columns + [False]
|
70
|
+
len_col_seq = len(col_seq)
|
71
|
+
self._is_col_long_range = (
|
72
|
+
col_seq * ((self.row_length + len_col_seq - 1) // len_col_seq)
|
73
|
+
)[: self.row_length]
|
74
|
+
if long_range_columns < self.row_length:
|
75
|
+
self._is_col_long_range[-1] = False
|
76
|
+
|
73
77
|
self._hardware_offset = []
|
74
78
|
tot_qubits = 0
|
75
79
|
for _ in range(self.col_length):
|
@@ -456,6 +460,31 @@ class QrackAceBackend:
|
|
456
460
|
lq1_lr = self._is_col_long_range[lq1 % self.row_length]
|
457
461
|
lq2_lr = self._is_col_long_range[lq2 % self.row_length]
|
458
462
|
|
463
|
+
lq1_row = lq1 // self.row_length
|
464
|
+
lq1_col = lq1 % self.row_length
|
465
|
+
lq2_row = lq2 // self.row_length
|
466
|
+
lq2_col = lq2 % self.row_length
|
467
|
+
|
468
|
+
connected_cols = []
|
469
|
+
c = (lq1_col - 1) % self.row_length
|
470
|
+
while self._is_col_long_range[c] and (len(connected_cols) < (self.row_length - 1)):
|
471
|
+
connected_cols.append(c)
|
472
|
+
c = (c - 1) % self.row_length
|
473
|
+
connected_cols.append(c)
|
474
|
+
boundary = len(connected_cols)
|
475
|
+
c = (lq1_col + 1) % self.row_length
|
476
|
+
while self._is_col_long_range[c] and (len(connected_cols) < (self.row_length - 1)):
|
477
|
+
connected_cols.append(c)
|
478
|
+
c = (c + 1) % self.row_length
|
479
|
+
connected_cols.append(c)
|
480
|
+
|
481
|
+
if lq1_lr and lq2_lr:
|
482
|
+
if lq2_col in connected_cols:
|
483
|
+
gate(self._unpack(lq1), self._unpack(lq2)[0])
|
484
|
+
else:
|
485
|
+
shadow(self._unpack(lq1)[0], self._unpack(lq2)[0])
|
486
|
+
return
|
487
|
+
|
459
488
|
self._correct(lq1)
|
460
489
|
|
461
490
|
if not self._is_init[lq1]:
|
@@ -476,32 +505,9 @@ class QrackAceBackend:
|
|
476
505
|
|
477
506
|
return
|
478
507
|
|
479
|
-
lq1_row = lq1 // self.row_length
|
480
|
-
lq1_col = lq1 % self.row_length
|
481
|
-
lq2_row = lq2 // self.row_length
|
482
|
-
lq2_col = lq2 % self.row_length
|
483
|
-
|
484
|
-
connected_cols = []
|
485
|
-
c = (lq1_col - 1) % cols
|
486
|
-
while self._is_col_long_range[c]:
|
487
|
-
connected_cols.append(c)
|
488
|
-
c = (c - 1) % cols
|
489
|
-
connected_cols.append(c)
|
490
|
-
boundary = len(connected_cols)
|
491
|
-
c = (lq1_col + 1) % cols
|
492
|
-
while self._is_col_long_range[c]:
|
493
|
-
connected_cols.append(c)
|
494
|
-
c = (c + 1) % cols
|
495
|
-
connected_cols.append(c)
|
496
|
-
|
497
508
|
hq1 = None
|
498
509
|
hq2 = None
|
499
|
-
if
|
500
|
-
if lq2_col in connected_cols:
|
501
|
-
gate(self._unpack(lq1), self._unpack(lq2)[0])
|
502
|
-
else:
|
503
|
-
shadow(self._unpack(lq1)[0], self._unpack(lq2)[0])
|
504
|
-
elif (lq2_col in connected_cols) and (connected_cols.index(lq2_col) < boundary):
|
510
|
+
if (lq2_col in connected_cols) and (connected_cols.index(lq2_col) < boundary):
|
505
511
|
if lq1_lr:
|
506
512
|
self._correct(lq2)
|
507
513
|
hq1 = self._unpack(lq1)
|
@@ -1093,31 +1099,22 @@ class QrackAceBackend:
|
|
1093
1099
|
for col in range(cols):
|
1094
1100
|
connected_cols = [col]
|
1095
1101
|
c = (col - 1) % cols
|
1096
|
-
while self._is_col_long_range[c]:
|
1102
|
+
while self._is_col_long_range[c] and (len(connected_cols) < self.row_length):
|
1097
1103
|
connected_cols.append(c)
|
1098
1104
|
c = (c - 1) % cols
|
1099
1105
|
connected_cols.append(c)
|
1100
1106
|
c = (col + 1) % cols
|
1101
|
-
while self._is_col_long_range[c]:
|
1107
|
+
while self._is_col_long_range[c] and (len(connected_cols) < self.row_length):
|
1102
1108
|
connected_cols.append(c)
|
1103
1109
|
c = (c + 1) % cols
|
1104
1110
|
connected_cols.append(c)
|
1105
1111
|
|
1106
|
-
|
1107
|
-
|
1108
|
-
for
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
b = logical_index(r, c)
|
1113
|
-
if a != b:
|
1114
|
-
coupling_map.add((a, b))
|
1115
|
-
else:
|
1116
|
-
for row in range(rows):
|
1117
|
-
a = logical_index(row, col)
|
1118
|
-
for c in connected_cols:
|
1119
|
-
for r in range(0, rows):
|
1120
|
-
b = logical_index(r, c)
|
1112
|
+
for row in range(rows):
|
1113
|
+
a = logical_index(row, col)
|
1114
|
+
for c in connected_cols:
|
1115
|
+
for r in range(0, rows):
|
1116
|
+
b = logical_index(r, c)
|
1117
|
+
if a != b:
|
1121
1118
|
coupling_map.add((a, b))
|
1122
1119
|
|
1123
1120
|
return sorted(coupling_map)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|