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.
Files changed (29) hide show
  1. {pyqrack_cuda-1.49.1/pyqrack_cuda.egg-info → pyqrack_cuda-1.49.3}/PKG-INFO +1 -1
  2. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_ace_backend.py +45 -48
  3. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3/pyqrack_cuda.egg-info}/PKG-INFO +1 -1
  4. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/setup.py +1 -1
  5. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/LICENSE +0 -0
  6. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/MANIFEST.in +0 -0
  7. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/Makefile +0 -0
  8. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/README.md +0 -0
  9. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyproject.toml +0 -0
  10. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/__init__.py +0 -0
  11. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/neuron_activation_fn.py +0 -0
  12. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/pauli.py +0 -0
  13. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_circuit.py +0 -0
  14. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_neuron.py +0 -0
  15. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_neuron_torch_layer.py +0 -0
  16. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_simulator.py +0 -0
  17. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_stabilizer.py +0 -0
  18. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_system/__init__.py +0 -0
  19. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/qrack_system/qrack_system.py +0 -0
  20. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/quimb_circuit_type.py +0 -0
  21. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/stats/__init__.py +0 -0
  22. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/stats/load_quantized_data.py +0 -0
  23. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack/stats/quantize_by_range.py +0 -0
  24. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack_cuda.egg-info/SOURCES.txt +0 -0
  25. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack_cuda.egg-info/dependency_links.txt +0 -0
  26. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack_cuda.egg-info/not-zip-safe +0 -0
  27. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack_cuda.egg-info/requires.txt +0 -0
  28. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/pyqrack_cuda.egg-info/top_level.txt +0 -0
  29. {pyqrack_cuda-1.49.1 → pyqrack_cuda-1.49.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrack-cuda
3
- Version: 1.49.1
3
+ Version: 1.49.3
4
4
  Summary: pyqrack - Pure Python vm6502q/qrack Wrapper
5
5
  Home-page: https://github.com/vm6502q/pyqrack
6
6
  Author: Daniel Strano
@@ -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
- col_seq = [True] * long_range_columns + [False]
67
- len_col_seq = len(col_seq)
68
- self._is_col_long_range = (
69
- col_seq * ((self.row_length + len_col_seq - 1) // len_col_seq)
70
- )[: self.row_length]
71
- if long_range_columns < self.row_length:
72
- self._is_col_long_range[-1] = False
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 lq1_lr and lq2_lr:
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
- is_long = self._is_col_long_range[col]
1107
- if is_long:
1108
- for row in range(rows):
1109
- a = logical_index(row, col)
1110
- for c in connected_cols:
1111
- for r in range(0, rows):
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)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrack-cuda
3
- Version: 1.49.1
3
+ Version: 1.49.3
4
4
  Summary: pyqrack - Pure Python vm6502q/qrack Wrapper
5
5
  Home-page: https://github.com/vm6502q/pyqrack
6
6
  Author: Daniel Strano
@@ -7,7 +7,7 @@ from setuptools import setup
7
7
  from setuptools.command.build_py import build_py
8
8
 
9
9
 
10
- VERSION = "1.49.1"
10
+ VERSION = "1.49.3"
11
11
 
12
12
  # Read long description from README.
13
13
  README_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'README.md')
File without changes
File without changes
File without changes
File without changes
File without changes