Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfix release version cannot run KaHyPar #100

Merged
merged 4 commits into from
Apr 17, 2024

Conversation

PabloAndresCQ
Copy link
Collaborator

@PabloAndresCQ PabloAndresCQ commented Apr 17, 2024

Description

Now NetworkX is used as the default option for partition, and KaHyPar is left for advanced users. In particular, only those who install from repository will be able to use KaHyPar (if they choose to do so with the appropriate Config option). This is something I will continue to play with, this is meant just as a hotfix.

Related issues

Fixes #97

Checklist

  • I have tested that the code runs on a device with GPUs.
  • I have performed a self-review of my code.
  • I have commented hard-to-understand parts of my code.
  • I have made corresponding changes to the public API documentation.
  • I have added tests that prove my fix is effective or that my feature works.
  • I have updated the changelog with any user-facing changes.

@@ -531,15 +530,15 @@ def test_circ_approx_explicit_ttn(circuit: Circuit) -> None:
# Check for TTNxGate
cfg = Config(truncation_fidelity=0.99, leaf_size=3, float_precision=np.float32)
ttn_gate = simulate(libhandle, circuit, SimulationAlgorithm.TTNxGate, cfg)
assert np.isclose(ttn_gate.get_fidelity(), 0.769, atol=1e-3)
assert np.isclose(ttn_gate.get_fidelity(), 0.751, atol=1e-3)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since NetworkX provides a worse partition than KaHyPar, the fidelity in the simulation drops by a bit.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you sure that you want to update the expected value and not the tolerance?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I've been using these tests for a very rudimentary regression/improvement tracking, which is why they have a very particular value for the fidelity. It has happened before that changes that I did not expect that would change the fidelity did. If I made the tolerance margin larger, it's likely some of these wouldn't be caught.

@PabloAndresCQ PabloAndresCQ requested a review from cqc-melf April 17, 2024 10:12
@PabloAndresCQ PabloAndresCQ mentioned this pull request Apr 17, 2024
5 tasks
setup.py Outdated
@@ -42,7 +42,7 @@
license="Apache 2",
packages=find_namespace_packages(include=["pytket.*"]),
include_package_data=True,
install_requires=["pytket ~= 1.26"],
install_requires=["pytket ~= 1.26", "networkx >= 2.8"],
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
install_requires=["pytket ~= 1.26", "networkx >= 2.8"],
install_requires=["pytket ~= 1.26", "networkx ~= 3.0"],

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would be careful with allowing 4.0 here, do you need 2.x here, or should we just ask for 3.x to be installed? (see suggestion)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. I believe 3.x should work, but I'll quickly check.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, it works 👍

@@ -531,15 +530,15 @@ def test_circ_approx_explicit_ttn(circuit: Circuit) -> None:
# Check for TTNxGate
cfg = Config(truncation_fidelity=0.99, leaf_size=3, float_precision=np.float32)
ttn_gate = simulate(libhandle, circuit, SimulationAlgorithm.TTNxGate, cfg)
assert np.isclose(ttn_gate.get_fidelity(), 0.769, atol=1e-3)
assert np.isclose(ttn_gate.get_fidelity(), 0.751, atol=1e-3)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you sure that you want to update the expected value and not the tolerance?

assert ttn_gate.is_valid()
assert np.isclose(ttn_gate.vdot(ttn_gate), 1.0, atol=cfg._atol)

# Fixed virtual bond dimension
# Check for TTNxGate
cfg = Config(chi=120, leaf_size=3, float_precision=np.float32)
ttn_gate = simulate(libhandle, circuit, SimulationAlgorithm.TTNxGate, cfg)
assert np.isclose(ttn_gate.get_fidelity(), 0.857, atol=1e-3)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See above

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I'd rather change the fidelity. The value of the fidelity is consistent between different runs using the same code.

Co-authored-by: cqc-melf <[email protected]>
@PabloAndresCQ PabloAndresCQ merged commit 18fae8f into develop Apr 17, 2024
8 checks passed
@PabloAndresCQ PabloAndresCQ deleted the bugfix/non_default_kahypar branch April 17, 2024 13:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

TTN simulation fails when installing from pypi
2 participants