dwavesystems / dwavesystems/dwave-system

`DWaveCliqueSampler` occasionally produces an out-of-range qubit coupling

Open
#591 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
98
Forks
67
Avg merge
7m
Merged PRs (30d)
1

Description

A per-group-coupling-range test [occasionally fails](https://app.circleci.com/pipelines/github/dwavesystems/dwave-system/738/workflows/e1d31324-dd7a-4619-b28e-4fa485f6b385/jobs/13888) with:

```
======================================================================
ERROR: test_per_qubit_coupling_range_3_Zephyr (tests.qpu.test_dwavecliquesampler.TestDWaveCliqueSampler.test_per_qubit_coupling_range_3_Zephyr)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/distiller/project/env/lib/python3.13/site-packages/parameterized/parameterized.py", line 530, in standalone_func
return func(*(a + p.args), **p.kwargs)
File "/Users/distiller/project/tests/qpu/test_dwavecliquesampler.py", line 92, in test_per_qubit_coupling_range
sampler.sample(bqm, chain_strength=chain_strength).resolve()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/Users/distiller/project/env/lib/python3.13/site-packages/dimod/sampleset.py", line 1490, in resolve
samples = self._result_hook(self._future)
File "/Users/distiller/project/env/lib/python3.13/site-packages/dimod/sampleset.py", line 1374, in hook
sampleset.resolve()
~~~~~~~~~~~~~~~~~^^
File "/Users/distiller/project/env/lib/python3.13/site-packages/dimod/sampleset.py", line 1490, in resolve
samples = self._result_hook(self._future)
File "/Users/distiller/project/dwave/system/composites/embedding.py", line 314, in async_unembed
response.resolve()
~~~~~~~~~~~~~~~~^^
File "/Users/distiller/project/env/lib/python3.13/site-packages/dimod/sampleset.py", line 1490, in resolve
samples = self._result_hook(self._future)
File "/Users/distiller/project/env/lib/python3.13/site-packages/dimod/decorators.py", line 86, in
return SampleSet.from_future(next(iterator), lambda _: next(iterator))
~~~~^^^^^^^^^^
File "/Users/distiller/project/env/lib/python3.13/site-packages/dwave/preprocessing/composites/scale.py", line 138, in sample
sampleset.record.energy *= 1 / scalar
^^^^^^^^^^^^^^^^
File "/Users/distiller/project/env/lib/python3.13/site-packages/dimod/sampleset.py", line 1126, in record
self.resolve()
~~~~~~~~~~~~^^
File "/Users/distiller/project/env/lib/python3.13/site-packages/dimod/sampleset.py", line 1491, in resolve
self.__init__(samples.record, samples.variables, samples.info, samples.vartype)
^^^^^^^^^^^^^^
File "/Users/distiller/project/env/lib/python3.13/site-packages/dimod/sampleset.py", line 1126, in record
self.resolve()
~~~~~~~~~~~~^^
File "/Users/distiller/project/env/lib/python3.13/site-packages/dimod/sampleset.py", line 1490, in resolve
samples = self._result_hook(self._future)
File "/Users/distiller/project/dwave/system/samplers/dwave_sampler.py", line 492, in _hook
raise exc
File "/Users/distiller/project/dwave/system/samplers/dwave_sampler.py", line 479, in _hook
return resolve(computation)
File "/Users/distiller/project/dwave/system/samplers/dwave_sampler.py", line 469, in resolve
sampleset.resolve()
~~~~~~~~~~~~~~~~~^^
File "/Users/distiller/project/env/lib/python3.13/site-packages/dimod/sampleset.py", line 1490, in resolve
samples = self._result_hook(self._future)
File "/Users/distiller/project/env/lib/python3.13/site-packages/dwave/cloud/computation.py", line 835, in
sampleset = dimod.SampleSet.from_future(self, lambda f: f.wait_sampleset())
~~~~~~~~~~~~~~~~^^
File "/Users/distiller/project/env/lib/python3.13/site-packages/dwave/cloud/computation.py", line 773, in wait_sampleset
self._load_result()
~~~~~~~~~~~~~~~~~^^
File "/Users/distiller/project/env/lib/python3.13/site-packages/dwave/cloud/computation.py", line 909, in _load_result
raise self._exception
File "/Users/distiller/project/env/lib/python3.13/site-packages/dwave/cloud/client/base.py", line 1347, in _handle_problem_status
raise SolverFailureError(errmsg)
dwave.cloud.exceptions.SolverFailureError: Total coupling -13.000 for qubit 2793 to qubits 1730,1741,1754,1765,1778,1789,1802,1813,2792,2804 is out of range (-13.000 10.000).
```

Coupling values in this case are (on solver `Advantage2_system1.5`):
```
[np.float64(-1.7660377358490567), np.float64(-1.7660377358490567), np.float64(-1.7660377358490567), np.float64(-1.7660377358490567), np.float64(-1.7660377358490567), np.float64(-1.7660377358490567), np.float64(-1.7660377358490567), np.float64(-0.44150943396226416), np.float64(-0.1962264150943396)]
```
with the total sum of:
```
-13.000000000000002
```

So the lower bound of `per_group_coupling_range` (`-13`) is indeed exceeded, but due to float64 precision limits.

Arguably, this edge case should be handled on SAPI side, as the quoted precision is only 3 digits (`-13.000`).

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.