pyqrack-cuda 1.46.0__tar.gz → 1.46.2__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.46.0/pyqrack_cuda.egg-info → pyqrack_cuda-1.46.2}/PKG-INFO +1 -1
  2. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/qrack_ace_backend.py +23 -14
  3. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2/pyqrack_cuda.egg-info}/PKG-INFO +1 -1
  4. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/setup.py +1 -1
  5. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/LICENSE +0 -0
  6. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/MANIFEST.in +0 -0
  7. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/Makefile +0 -0
  8. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/README.md +0 -0
  9. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyproject.toml +0 -0
  10. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/__init__.py +0 -0
  11. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/neuron_activation_fn.py +0 -0
  12. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/pauli.py +0 -0
  13. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/qrack_circuit.py +0 -0
  14. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/qrack_neuron.py +0 -0
  15. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/qrack_neuron_torch_layer.py +0 -0
  16. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/qrack_simulator.py +0 -0
  17. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/qrack_stabilizer.py +0 -0
  18. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/qrack_system/__init__.py +0 -0
  19. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/qrack_system/qrack_system.py +0 -0
  20. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/quimb_circuit_type.py +0 -0
  21. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/stats/__init__.py +0 -0
  22. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/stats/load_quantized_data.py +0 -0
  23. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack/stats/quantize_by_range.py +0 -0
  24. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack_cuda.egg-info/SOURCES.txt +0 -0
  25. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack_cuda.egg-info/dependency_links.txt +0 -0
  26. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack_cuda.egg-info/not-zip-safe +0 -0
  27. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack_cuda.egg-info/requires.txt +0 -0
  28. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/pyqrack_cuda.egg-info/top_level.txt +0 -0
  29. {pyqrack_cuda-1.46.0 → pyqrack_cuda-1.46.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrack-cuda
3
- Version: 1.46.0
3
+ Version: 1.46.2
4
4
  Summary: pyqrack - Pure Python vm6502q/qrack Wrapper
5
5
  Home-page: https://github.com/vm6502q/pyqrack
6
6
  Author: Daniel Strano
@@ -48,10 +48,12 @@ class QrackAceBackend:
48
48
  isBinaryDecisionTree=False,
49
49
  toClone=None,
50
50
  ):
51
- if recursive_stack_depth < 1:
52
- recursive_stack_depth = 1
53
51
  if toClone:
54
52
  qubit_count = toClone.num_qubits()
53
+ recursive_stack_depth = toClone.recursive_stack_depth
54
+ if recursive_stack_depth < 1:
55
+ recursive_stack_depth = 1
56
+ self.recursive_stack_depth = recursive_stack_depth
55
57
  if recursive_stack_depth > 1:
56
58
  recursive_stack_depth -= 1
57
59
  self.sim = (
@@ -510,12 +512,20 @@ class QrackAceBackend:
510
512
 
511
513
  def m_all(self):
512
514
  result = 0
513
- # Whenever a nonzero syndrome occurs (so the code has an error),
514
- # we insert the more-probable results and collapse towards it.
515
- # Randomize the order of post-selection to amortize error.
515
+ # Randomize the order of measurement to amortize error.
516
+ # However, locality of collapse matters:
517
+ # always measure across rows, and by consecutive rows.
516
518
  lqubits = list(range(self.sim.num_qubits() // 3))
517
- random.shuffle(lqubits)
519
+ row = rand.randint(0, self.col_length - 1)
520
+ index = row * self.row_length
521
+ lqubits = lqubits[index:] + lqubits[:index]
522
+ col = rand.randint(0, self.row_length - 1)
523
+ if random.randint(0, 1):
524
+ lqubits.reverse()
518
525
  for lq in lqubits:
526
+ lq_row = i // self.row_length
527
+ lq_col = (i + col) % self.row_length
528
+ lq = lq_row * self.row_length + lq_col
519
529
  if self.m(lq):
520
530
  result |= 1 << lq
521
531
 
@@ -524,14 +534,13 @@ class QrackAceBackend:
524
534
  def measure_shots(self, q, s, high_accuracy=True):
525
535
  if high_accuracy:
526
536
  samples = []
527
- _q = q.copy()
528
537
  for _ in range(s):
529
538
  clone = self.sim.clone()
539
+ _sample = clone.m_all()
530
540
  sample = 0
531
- random.shuffle(_q)
532
- for b in _q:
533
- if clone.m(b):
534
- sample |= 1 << q.index(b)
541
+ for i in range(len(q)):
542
+ if (_sample >> q[i]) & 1:
543
+ sample |= 1 << i
535
544
  samples.append(sample)
536
545
 
537
546
  return samples
@@ -568,9 +577,9 @@ class QrackAceBackend:
568
577
  other_bits = [0, 1]
569
578
  else:
570
579
  other_bits = [1, 2]
571
- self.sim.mcx([other_bits[0]], other_bits[1])
572
- result = self.sim.prob(hq[1])
573
- self.sim.mcx([other_bits[0]], other_bits[1])
580
+ self.sim.mcx([hq[other_bits[0]]], hq[other_bits[1]])
581
+ result = self.sim.prob(hq[other_bits[0]])
582
+ self.sim.mcx([hq[other_bits[0]]], hq[other_bits[1]])
574
583
 
575
584
  return result
576
585
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrack-cuda
3
- Version: 1.46.0
3
+ Version: 1.46.2
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.46.0"
10
+ VERSION = "1.46.2"
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