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

💥 Introducing ClusterComplete: Exact SiDB Logic Simulation with well over 50 DBs #390

Open
wants to merge 695 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
695 commits
Select commit Hold shift + click to select a range
33695bc
:art: fixed todo: CLI can report Ground State Space stats
wlambooy Oct 6, 2024
b539298
:bug: Python bindings for `SIDB_CHARGE_STATES_BASE_b` are now consist…
wlambooy Oct 6, 2024
b7be02b
:sparkles: Added a global function for string to SiDB simulation engine
wlambooy Oct 6, 2024
0ee189c
:memo: Added docstrings for the bindings for `ground_state_space_repo…
wlambooy Oct 6, 2024
f062afe
:art: Used the new global name to simulation engine function where po…
wlambooy Oct 6, 2024
f5ae548
:fire: Removed resolved TODO
wlambooy Oct 6, 2024
c7bf2e6
:memo: add docstrings for bound direction enum class members `LOWER` …
wlambooy Oct 6, 2024
593f885
:adhesive_bandage: Forgotten import
wlambooy Oct 6, 2024
4b1d14b
:adhesive_bandage: Make sure tests pass also with the `DEBUG_SIDB_CLU…
wlambooy Oct 7, 2024
2f0b793
:bug: ClusterComplete did not call `charge_distribution_to_index` for…
wlambooy Oct 7, 2024
10a9433
:zap: improve runtimes on tiny layouts by skipping the multithreading…
wlambooy Oct 7, 2024
058a7fc
:bug: Revert validity checking logic to the original version that is …
wlambooy Oct 7, 2024
f07b125
:bug: `std::numeric_limits::epsilon` is too strict for double equalit…
wlambooy Oct 7, 2024
4cc91f7
:memo: Added docstrings everywhere to Ground State Space
wlambooy Oct 9, 2024
3b958b2
:memo: tiny change
wlambooy Oct 9, 2024
8b13463
:memo: forgotten `@return`
wlambooy Oct 9, 2024
987a581
:memo: Added docstrings for the lower/upper bound identifiers
wlambooy Oct 9, 2024
2ca5980
:memo: Added docstrings everywhere in the ClusterComplete code
wlambooy Oct 9, 2024
dda9dfc
:art: Moved the `ccsim` shortcut to `shortcuts.fs`
wlambooy Oct 9, 2024
6d86570
:white_check_mark: Change the tests that marked a difference between …
wlambooy Oct 9, 2024
84eedb7
:alembic: Included ClusterComplete in the equivalence checking, and a…
wlambooy Oct 9, 2024
46b86b9
Merge branch 'main' into clustercomplete
wlambooy Oct 9, 2024
120affe
:twisted_rightwards_arrows: Merged with main
wlambooy Oct 9, 2024
31e12bd
:art: Reformat
wlambooy Oct 9, 2024
5b3753a
:memo: Update pyfiction docstrings
actions-user Oct 9, 2024
257f1f2
Merge branch 'main' into clustercomplete
wlambooy Oct 9, 2024
173998d
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Oct 9, 2024
becfeba
:bindings: double declaration of `exact_sidb_simulation_engine`
wlambooy Oct 9, 2024
a5de418
Merge remote-tracking branch 'fork/clustercomplete' into clustercomplete
wlambooy Oct 9, 2024
d61eb2c
:apple: Make mac CI happy
wlambooy Oct 9, 2024
0435836
:art: Trying locally generated ClangTidy suggested
wlambooy Oct 9, 2024
4647c9f
:memo: Trying to fix the link to ClusterComplete
wlambooy Oct 9, 2024
d3c6d09
:green_heart: Undo make copy constructor explicit (Clang-Tidy suggest…
wlambooy Oct 9, 2024
661169b
:art: Revert more insecure Clang-Tidy suggestions
wlambooy Oct 9, 2024
3f55598
Merge branch 'main' into clustercomplete
wlambooy Oct 10, 2024
1ba5e74
:green_heart: Trying without ClusterComplete in `is_operational.cpp`
wlambooy Oct 10, 2024
be3539e
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Oct 10, 2024
d376247
:green_heart: Testing hanging Windows CI by commenting ClusterComplet…
wlambooy Oct 10, 2024
c7b030d
Merge remote-tracking branch 'fork/clustercomplete' into clustercomplete
wlambooy Oct 10, 2024
75124d5
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Oct 10, 2024
876c0ec
:package: Use ALGLIB as submodule
wlambooy Oct 10, 2024
1945282
Merge remote-tracking branch 'fork/clustercomplete' into clustercomplete
wlambooy Oct 10, 2024
1ab6992
:package: add `.git` to the URL
wlambooy Oct 10, 2024
f06b90e
:package: add submodule folder to `libs`
wlambooy Oct 10, 2024
3c96a17
Delete libs/alglib directory
wlambooy Oct 10, 2024
1166d2f
:package: Manage concurrent cmake builds: one downloads while the oth…
wlambooy Oct 10, 2024
65a0b6e
Merge remote-tracking branch 'fork/clustercomplete' into clustercomplete
wlambooy Oct 10, 2024
8b2bec0
:package: update submodule
wlambooy Oct 10, 2024
2a94c28
:rotating_light: Write less type-safe code to make Clang-Tidy happy
wlambooy Oct 10, 2024
93c2020
:rotating_light: Write type-safe, but ugly code to make Clang-Tidy happy
wlambooy Oct 10, 2024
39fa474
:rotating_light: Fix unnecessary cast warning
wlambooy Oct 10, 2024
7898200
:package: Rolled back to ALGLIB 3.14 because the Windows compiler doe…
wlambooy Oct 10, 2024
2004dbd
:package: Rolled back to ALGLIB 3.14 because the Windows compiler doe…
wlambooy Oct 10, 2024
d1df350
:package: Rolled back to ALGLIB 3.14 because the Windows compiler doe…
wlambooy Oct 10, 2024
1bfab57
:package: Make ALGLIB an optional dependency again and enable it on a…
wlambooy Oct 10, 2024
c3bdd77
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Oct 10, 2024
8acd69f
:adhesive_bandage: Fixing a small mess-up
wlambooy Oct 10, 2024
a72e38e
Merge remote-tracking branch 'fork/clustercomplete' into clustercomplete
wlambooy Oct 10, 2024
8f1ab00
:art: Some Clang-Tidy suggestions
wlambooy Oct 11, 2024
2a77ef4
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Oct 11, 2024
e256c4c
:art: Some Clang-Tidy suggestions
wlambooy Oct 11, 2024
770e99a
:art: reformat
wlambooy Oct 11, 2024
a9caf9d
:package: cmake rebuild now works when ALGLIB is already unpacked
wlambooy Oct 11, 2024
eee3bd1
:green_heart: Trying a `pywin32` update
wlambooy Oct 11, 2024
e52c803
:green_heart: Trying a `pywin32` update
wlambooy Oct 11, 2024
efd32b0
:green_heart: Trying ALGLIB disabled for Windows pybindings
wlambooy Oct 11, 2024
d02ddc8
:green_heart: Trying to specify a directory for ALGLIB for windows py…
wlambooy Oct 11, 2024
d97219f
:art: Clang-Tidy suggestion: remove redundant `inline`s
wlambooy Oct 11, 2024
5cdf1d3
:art: Clang-Tidy suggestion: remove initialiser
wlambooy Oct 11, 2024
2acb9c7
:art: Clang-Tidy suggestion: remove initialiser
wlambooy Oct 11, 2024
08c1d54
Merge branch 'main' into clustercomplete
wlambooy Oct 11, 2024
ff90dd8
:green_heart: Turn ALGLIB back on for the Windows pybindings
wlambooy Oct 11, 2024
b4c4f9f
Revert ":art: Clang-Tidy suggestion: remove initialiser"
wlambooy Oct 11, 2024
8e16eac
:package: Adding installation
wlambooy Oct 11, 2024
83a64e9
:art: More Clang-Tidy suggestions
wlambooy Oct 11, 2024
db0fd5e
:package: Set "/Ox" on Windows only for Release
wlambooy Oct 11, 2024
c97f1e9
:art: Missing import
wlambooy Oct 11, 2024
a835dd8
:pencil1: typo
wlambooy Oct 16, 2024
a751ddc
:zap: Small Ground State Space optimisation that omits useless charge…
wlambooy Oct 17, 2024
7eeee97
:alembic: add clustercomplete to runtime experiment.
Drewniok Nov 6, 2024
a34edeb
:alembic: SAVE
wlambooy Nov 12, 2024
a14276b
:alembic: attempt 1
wlambooy Nov 26, 2024
ecaa2e9
:alembic: attempt 2
wlambooy Dec 2, 2024
5c955ae
:alembic: attempt 2
wlambooy Dec 2, 2024
e0591d8
:alembic: attempt 3 (beginning)
wlambooy Dec 2, 2024
bce7cee
:alembic: attempt 3 (beginning)
wlambooy Dec 2, 2024
d89b308
:alembic: attempt 3 (mid)
wlambooy Dec 4, 2024
fc2e88d
:alembic: attempt 3 (mid)
wlambooy Dec 4, 2024
fbbcaae
:alembic: attempt 3 (weakened) [works!]
wlambooy Dec 5, 2024
19aee87
:art: improve clustering state usability
wlambooy Dec 9, 2024
3d35074
:art: alter potential bounds store interface to avoid confusion
wlambooy Dec 9, 2024
d7f1a78
:white_check_mark: contain test in the correct compilation guard branch
wlambooy Dec 9, 2024
27294c1
:alembic: full multithreading setup: single core works (with debug pr…
wlambooy Dec 9, 2024
30db275
:alembic: full multithreading setup: single core works (without debug…
wlambooy Dec 9, 2024
fc9b103
:alembic: full multithreading: dual core works (with debug prints)
wlambooy Dec 16, 2024
4c29a0b
:alembic: full multithreading: multi core almost works (without debug…
wlambooy Dec 17, 2024
c8ebf6c
:zap: full multithreading: multi core works (towards finalising)
wlambooy Dec 19, 2024
3fd6504
:memo: Update pyfiction docstrings
actions-user Dec 19, 2024
9f896a4
:zap: full multithreading: multi core works (towards finalising)
wlambooy Dec 20, 2024
fa294f6
:memo: Update pyfiction docstrings
actions-user Dec 20, 2024
3add72d
:zap: full multithreading: multi core works (towards finalising)
wlambooy Dec 20, 2024
517ec57
:zap: full multithreading: multi core works (towards finalising)
wlambooy Dec 20, 2024
3f79e75
:memo: Update pyfiction docstrings
actions-user Dec 20, 2024
6221071
:art: Docstrings + code simplifications & stabilizations
wlambooy Jan 8, 2025
e4c897f
Merge remote-tracking branch 'fork/clustercomplete_full_multithreadin…
wlambooy Jan 8, 2025
2fa362c
:memo: Update pyfiction docstrings
actions-user Jan 8, 2025
9670166
Merge remote-tracking branch 'fork/clustercomplete' into clustercomplete
wlambooy Jan 9, 2025
a8d9aa5
Merge branch 'clustercomplete_full_multithreading' into clustercomplete
wlambooy Jan 9, 2025
20c193c
:twisted_rightwards_arrows: merged full-multithreading
wlambooy Jan 9, 2025
aa8b66a
:memo: missing docstring
wlambooy Jan 9, 2025
71a02b9
:memo: Update pyfiction docstrings
actions-user Jan 9, 2025
d83d58c
Merge branch 'main' into clustercomplete
wlambooy Jan 9, 2025
d04886b
:twisted_rightwards_arrows: Merged with main
wlambooy Jan 9, 2025
fa94678
:twisted_rightwards_arrows: Merged with main
wlambooy Jan 9, 2025
e6233dd
Merge remote-tracking branch 'fork/clustercomplete' into clustercomplete
wlambooy Jan 9, 2025
3844fa8
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Jan 9, 2025
cdac793
:memo: Update pyfiction docstrings
actions-user Jan 9, 2025
c1344ad
Merge branch 'main' into clustercomplete
wlambooy Jan 11, 2025
4fffb74
:adhesive_bandage: accidental include
wlambooy Jan 11, 2025
47886b6
:adhesive_bandage: unused import
wlambooy Jan 11, 2025
cb35f75
:art: Clang Tidy suggestion (unused import)
wlambooy Jan 11, 2025
0954130
:art: Use include guards
wlambooy Jan 11, 2025
41c839b
:snake: made imports explicit
wlambooy Jan 11, 2025
3632619
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Jan 11, 2025
42716bf
:snake: conform to new bindings code
wlambooy Jan 12, 2025
cac3d3c
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Jan 12, 2025
a08898f
:art: Removed print statement to stdout
wlambooy Jan 12, 2025
0ecef9c
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Jan 12, 2025
e8683ad
:art: Missing import
wlambooy Jan 12, 2025
92ac1ef
Merge remote-tracking branch 'fork/clustercomplete' into clustercomplete
wlambooy Jan 12, 2025
a75900b
:adhesive_bandage: missing commas
wlambooy Jan 12, 2025
d80757d
:art: missing import
wlambooy Jan 12, 2025
b2eca62
:art: merging artifact
wlambooy Jan 12, 2025
a4547ae
Merge branch 'main' into clustercomplete
wlambooy Jan 12, 2025
0467bd6
:art: unused imports (Clang-Tidy suggestions)
wlambooy Jan 12, 2025
f94bae0
:art: unused import (Clang-Tidy suggestions)
wlambooy Jan 12, 2025
23bd64d
:art: unused import (Clang-Tidy suggestions)
wlambooy Jan 12, 2025
ac71c1c
:art: unused import (Clang-Tidy suggestions)
wlambooy Jan 12, 2025
07cce7e
:art: reduce enum type width to `uint8_t`
wlambooy Jan 12, 2025
3751381
:art: unused import (Clang-Tidy suggestions)
wlambooy Jan 12, 2025
b8b76cd
:art: Clang-Tidy suggestions
wlambooy Jan 12, 2025
0dc0e6e
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Jan 12, 2025
1ef0117
:pencil1: typo
wlambooy Jan 12, 2025
fcb3c1b
:twisted_rightwards_arrows: merging artifact
wlambooy Jan 12, 2025
a860d92
:art: added `static_cast`
wlambooy Jan 12, 2025
a4e79a7
:white_check_mark: same UIDs for separate `sidb_cluster` instances ar…
wlambooy Jan 12, 2025
d60bb6b
:art: Clang-Tidy suggestions
wlambooy Jan 12, 2025
704fc42
:memo: Update pyfiction docstrings
actions-user Jan 12, 2025
bab265d
:green_heart: use tinyxml shared libs
wlambooy Jan 12, 2025
165041b
Merge remote-tracking branch 'fork/clustercomplete' into clustercomplete
wlambooy Jan 12, 2025
6146786
:art: Clang-Tidy suggestions
wlambooy Jan 13, 2025
c3085d1
Merge branch 'main' into clustercomplete
wlambooy Jan 13, 2025
8d5a0e1
:white_check_mark: `std::all_of` seems to be unstable
wlambooy Jan 13, 2025
db2faee
Revert ":green_heart: use tinyxml shared libs"
wlambooy Jan 13, 2025
9845f3d
:green_heart: try linking tinyxml before ALGLIB
wlambooy Jan 13, 2025
978fbc8
:rotating_light: trying to reduce compiler warnings
wlambooy Jan 13, 2025
229585a
:green_heart: trying dashed arguments for ALGLIB
wlambooy Jan 13, 2025
0880bf9
:art: Clang-Tidy suggestion
wlambooy Jan 13, 2025
60e7b81
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Jan 13, 2025
e66f3e2
Merge branch 'main' into clustercomplete
wlambooy Jan 14, 2025
f480926
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Jan 14, 2025
4837f35
:twisted_rightwards_arrows: merging artifact
wlambooy Jan 14, 2025
5298f75
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Jan 14, 2025
3662f7a
:twisted_rightwards_arrows: merging artifact
wlambooy Jan 14, 2025
fb75f1d
:twisted_rightwards_arrows: merging artifact
wlambooy Jan 14, 2025
840a900
:green_heart: triggering docstring-generator
wlambooy Jan 14, 2025
bdd72f0
:green_heart: triggering docstring-generator
wlambooy Jan 14, 2025
6dd23a7
:memo: Update pyfiction docstrings
actions-user Jan 14, 2025
d6782eb
:art: missing import (Clang-Tidy suggestion)
wlambooy Jan 14, 2025
f267814
:art: artifact from aliased command (removed long ago)
wlambooy Jan 14, 2025
5a2f6f9
:art: added `assert` for when CC is selected as simulator but ALGLIB …
wlambooy Jan 14, 2025
76bac89
Revert ":green_heart: trying dashed arguments for ALGLIB"
wlambooy Jan 14, 2025
d727d41
:green_heart: reverting ALGLIB fix attempt
wlambooy Jan 14, 2025
445af28
:green_heart: added wrong import earlier
wlambooy Jan 14, 2025
9cfbf4f
:arrow_up: adjusted minimum required CMake version
wlambooy Jan 14, 2025
013cd19
:art: `phmap::flat_hash_set` may fail when used with `std::set_union`
wlambooy Jan 14, 2025
1a359a2
:adhesive_bandage: Fixed small inconsistency with STL vs phmap contai…
wlambooy Jan 14, 2025
2a8ad33
:green_heart: Only run determinism check in Release
wlambooy Jan 14, 2025
5e2ed7f
:green_heart: Trying to reduce memory consumption on the CI
wlambooy Jan 14, 2025
a6db707
:green_heart: Trying to reduce memory consumption on the CI
wlambooy Jan 14, 2025
a8576e5
:white_check_mark: Instead of disabling, in Debug builds the determin…
wlambooy Jan 14, 2025
305f67c
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Jan 14, 2025
684b02b
:green_heart: Trying to reduce memory consumption on the CI
wlambooy Jan 14, 2025
058ec48
:art: Clang-Tidy suggestion
wlambooy Jan 14, 2025
20b647d
:adhesive_bandage: Removed dangling `#endif`
wlambooy Jan 14, 2025
311b94d
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Jan 14, 2025
cad204c
:art: removed ` // NDEBUG`
wlambooy Jan 14, 2025
66f60e3
:green_heart: Undo adding global debug flags
wlambooy Jan 14, 2025
5b6b497
:construction_worker: Changed Ubuntu version for the C++20 runner to …
wlambooy Jan 14, 2025
64b481f
:construction_worker: Turned off experiment building for Ubuntu Debug…
wlambooy Jan 14, 2025
cf46f74
:construction_worker: trying to reduce memory consumption
wlambooy Jan 14, 2025
05524f6
:construction_worker: add experiments building back for ubuntu debug …
wlambooy Jan 15, 2025
5a22096
Merge branch 'main' into clustercomplete
wlambooy Jan 15, 2025
da23cc9
:construction_worker: Made the memory optimization accessible under -…
wlambooy Jan 15, 2025
22840ef
Merge remote-tracking branch 'fork/clustercomplete' into clustercomplete
wlambooy Jan 15, 2025
168bcc9
:construction_worker: Implemented Marcel's feedback
wlambooy Jan 15, 2025
063975a
:construction_worker: Match for `*.Clang` instead of `Clang`
wlambooy Jan 15, 2025
32c0680
:zap: Removed unnecessary mutex lock
wlambooy Jan 15, 2025
9aebb79
:memo: Updated benchmarks
wlambooy Jan 15, 2025
9a1031c
:memo: Updated benchmarks (with jemalloc)
wlambooy Jan 20, 2025
ce8cbf8
Merge branch 'main' into clustercomplete
wlambooy Jan 20, 2025
12644d8
:memo: outdated mention of removed `ccsim` alias
wlambooy Jan 20, 2025
ad0f138
:memo: outdated identifier
wlambooy Jan 20, 2025
a8d2cf5
:art: removed duplicate `using` statement
wlambooy Jan 20, 2025
35bb333
:art: Moved `ground_state_space_reporting` inside the params struct f…
wlambooy Jan 20, 2025
1d3f85a
:safety_vest: Switch `assert`s in `is_operational.hpp` to validate te…
wlambooy Jan 21, 2025
6a753eb
:memo: Added the word `QuickSim` to "a heuristic simulation"
wlambooy Jan 21, 2025
1cc7d7d
:safety_vest: Switch `assert`s in `critical_temperature.hpp` to valid…
wlambooy Jan 21, 2025
3e490f3
:art: make `physical_simulation_of_bdl_iterator` in `critical_tempera…
wlambooy Jan 21, 2025
0426a23
:pencil1: changed `base 3` to `base-3` where grammatically required
wlambooy Jan 21, 2025
f19f3d5
:pencil1: `simulation search space` to `the ...`
wlambooy Jan 21, 2025
7a6b9cf
:memo: Fixed the stray `.. _abc-cmake:`
wlambooy Jan 21, 2025
d8d503e
:memo: `linked to` -> `linked against`
wlambooy Jan 21, 2025
35ad97c
:art: added `[[nodiscard]]` wherever possible in `ground_state_space.…
wlambooy Jan 21, 2025
97cf1e0
:art: added `[[nodiscard]]` wherever possible in `clustercomplete.hpp`
wlambooy Jan 21, 2025
91393b0
:art: added `[[nodiscard]]` wherever possible in `sidb_cluster_hierar…
wlambooy Jan 21, 2025
1bb06e6
:fire: Removed `setup.py`
wlambooy Jan 21, 2025
e046956
:art: Switched default template argument to `offset::ucoord_t` and re…
wlambooy Jan 21, 2025
b348f47
:art: Removed `[[nodiscard]]` in places where it should not be
wlambooy Jan 21, 2025
0f707bd
:memo: Added missing `@return` docs
wlambooy Jan 21, 2025
73794ac
:art: Added brace initialisers to ALGLIB object instantiations
wlambooy Jan 21, 2025
c6d7c25
:white_check_mark: Added testing with the 111 lattice configuration
wlambooy Jan 21, 2025
e57537e
:memo: Added docstrings to type aliases
wlambooy Jan 21, 2025
1890b3b
:art: removed `explicit` keyword where not needed
wlambooy Jan 21, 2025
e92606d
:memo: missing final `s` from `ground_state_space_results`
wlambooy Jan 21, 2025
6fd4f65
:pencil1: "debug" -> "Debug"
wlambooy Jan 21, 2025
c6b409a
:art: Marcel's suggestions to the CC CLI
wlambooy Jan 21, 2025
740703b
:art: Adapted other simulation CLI tools to have the same style
wlambooy Jan 21, 2025
012eb1d
:memo: Added small docstrings where there was a space to fill
wlambooy Jan 21, 2025
ca95b44
:art: Moved comment to the right place
wlambooy Jan 21, 2025
24a5904
:fire: Removed duplicate type alias definition
wlambooy Jan 21, 2025
e9cebb2
:fire: Removed template arguments that can be defaulted
wlambooy Jan 21, 2025
b2d93ce
:building_construction: Moved ALGLIB to the right place in `CMakeList…
wlambooy Jan 21, 2025
850f067
:art: return a `std::string_view` for `sidb_simulation_engine_name` a…
wlambooy Jan 21, 2025
1fab424
:white_check_mark: Removed commented test case
wlambooy Jan 21, 2025
c1f34f0
:memo: Added a sentence about why shuffling is performed
wlambooy Jan 21, 2025
7e5b498
:pencil1: Corrected a sentence
wlambooy Jan 21, 2025
883647c
:memo: Split a multi-declaration into separate parts and added docstr…
wlambooy Jan 21, 2025
d23c7f0
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Jan 21, 2025
52b3a36
:memo: Update pyfiction docstrings
actions-user Jan 21, 2025
fa9092c
:snake: Adjusted the type of `sidb_simulation_engine_name` in the bin…
wlambooy Jan 21, 2025
0dda3c1
Merge remote-tracking branch 'fork/clustercomplete' into clustercomplete
wlambooy Jan 21, 2025
1e0d760
:art: Unnecessary imports
wlambooy Jan 22, 2025
e570345
Revert ":building_construction: Moved ALGLIB to the right place in `C…
wlambooy Jan 22, 2025
ec5b355
:recycle: Reorganised `libs/CMakeLists.txt`
wlambooy Jan 22, 2025
a1460f3
Merge branch 'main' into clustercomplete
wlambooy Jan 23, 2025
4aec817
:twisted_rightwards_arrows: Fixed merging artifact
wlambooy Jan 23, 2025
03f5f0d
Merge branch 'main' into clustercomplete
wlambooy Jan 27, 2025
d45ca7f
:memo: Update pyfiction docstrings
actions-user Jan 27, 2025
5157cb7
Merge branch 'main' into clustercomplete
wlambooy Jan 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/clang-tidy-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ jobs:
-DFICTION_TEST=ON
-DFICTION_BENCHMARK=OFF
-DFICTION_EXPERIMENTS=ON
-DFICTION_ALGLIB=ON
-DMOCKTURTLE_EXAMPLES=OFF
build_dir: build
apt_packages: "libreadline-dev,libtbb-dev"
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ jobs:
-DFICTION_BENCHMARK=OFF
-DFICTION_EXPERIMENTS=ON
-DFICTION_Z3=ON
-DFICTION_ALGLIB=ON
-DFICTION_ENABLE_MUGEN=ON
-DFICTION_PROGRESS_BARS=OFF
-DFICTION_WARNINGS_AS_ERRORS=OFF
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ jobs:
-DFICTION_TEST=ON
-DFICTION_BENCHMARK=OFF
-DFICTION_Z3=ON
-DFICTION_ALGLIB=ON
-DFICTION_ENABLE_MUGEN=ON
-DFICTION_PROGRESS_BARS=OFF
-DFICTION_WARNINGS_AS_ERRORS=OFF
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ jobs:
-DFICTION_BENCHMARK=OFF
-DFICTION_EXPERIMENTS=ON
-DFICTION_Z3=ON
-DFICTION_ALGLIB=ON
-DFICTION_PROGRESS_BARS=OFF
-DFICTION_WARNINGS_AS_ERRORS=OFF
-DMOCKTURTLE_EXAMPLES=OFF
Expand Down Expand Up @@ -152,6 +153,7 @@ jobs:
-DFICTION_BENCHMARK=OFF
-DFICTION_EXPERIMENTS=ON
-DFICTION_Z3=ON
-DFICTION_ALGLIB=ON
-DFICTION_PROGRESS_BARS=OFF
-DFICTION_WARNINGS_AS_ERRORS=OFF
-DMOCKTURTLE_EXAMPLES=OFF
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/pyfiction-docstring-generator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ jobs:
-m pybind11_mkdoc
-o ${{ github.workspace }}/bindings/mnt/pyfiction/include/pyfiction/pybind11_mkdoc_docstrings.hpp
-D FICTION_Z3_SOLVER
-D FICTION_ALGLIB_ENABLED
`find ${{ github.workspace }}/include/fiction -name "*.hpp" -print`

- name: Upload docstrings as an artifact
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ jobs:
-DFICTION_BENCHMARK=OFF
-DFICTION_EXPERIMENTS=ON
-DFICTION_Z3=ON
-DFICTION_ALGLIB=ON
-DFICTION_ENABLE_MUGEN=ON
-DFICTION_PROGRESS_BARS=OFF
-DFICTION_WARNINGS_AS_ERRORS=OFF
Expand Down Expand Up @@ -154,6 +155,7 @@ jobs:
-DFICTION_BENCHMARK=OFF
-DFICTION_EXPERIMENTS=ON
-DFICTION_Z3=ON
-DFICTION_ALGLIB=ON
-DFICTION_ENABLE_MUGEN=ON
-DFICTION_PROGRESS_BARS=OFF
-DFICTION_WARNINGS_AS_ERRORS=OFF
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ jobs:
-DFICTION_BENCHMARK=OFF
-DFICTION_EXPERIMENTS=ON
-DFICTION_Z3=ON
-DFICTION_ALGLIB=ON
-DFICTION_WARNINGS_AS_ERRORS=OFF
-DMOCKTURTLE_EXAMPLES=OFF
Expand Down Expand Up @@ -132,6 +133,7 @@ jobs:
-DFICTION_BENCHMARK=OFF
-DFICTION_EXPERIMENTS=ON
-DFICTION_Z3=ON
-DFICTION_ALGLIB=ON
-DFICTION_WARNINGS_AS_ERRORS=OFF
-DMOCKTURTLE_EXAMPLES=OFF
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,6 @@
path = libs/mockturtle
url = https://github.com/marcelwa/mockturtle.git
branch = mnt
[submodule "libs/alglib-cmake"]
path = libs/alglib-cmake
url = https://github.com/wlambooy/alglib-cmake.git
4 changes: 2 additions & 2 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ build:
- cmake
jobs:
pre_build:
- echo "Reinstall pyfiction with Z3 enabled"
- z3="ON" python -m pip install --upgrade --upgrade-strategy eager --no-cache-dir .[docs]
- echo "Reinstall pyfiction with Z3 and ALGLIB enabled"
- z3="ON" alglib="ON" python -m pip install --upgrade --upgrade-strategy eager --no-cache-dir .[docs]

sphinx:
configuration: docs/conf.py
Expand Down
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ RUN . venv/bin/activate \
-DFICTION_TEST=OFF \
-DFICTION_EXPERIMENTS=OFF \
-DFICTION_Z3=ON \
-DFICTION_ALGLIB=ON \
-DFICTION_ENABLE_MUGEN=OFF \
-DFICTION_PROGRESS_BARS=ON \
-DFICTION_WARNINGS_AS_ERRORS=OFF \
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ simulated using a physical model. Currently, the following simulation algorithms

- Silicon Dangling Bonds (SiDBs)
- Electrostatic Ground State Simulation
- [_ClusterComplete_](https://fiction.readthedocs.io/en/latest/algorithms/sidb_simulation.html#_CPPv4I0EN7fiction15clustercompleteE22sidb_simulation_resultI3LytERK3LytRK22clustercomplete_paramsI4cellI3LytEE)
- [_QuickExact_](https://arxiv.org/abs/2308.04487)
- [_QuickSim_](https://ieeexplore.ieee.org/document/10231266)
- [Exhaustive _(ExGS)_](https://open.library.ubc.ca/soa/cIRcle/collections/ubctheses/24/items/1.0392909)
Expand Down
17 changes: 10 additions & 7 deletions bindings/mnt/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@
import sys
from pathlib import Path

if sys.platform == "win32" and "Z3_ROOT" in os.environ:
lib_path = Path(os.environ["Z3_ROOT"]) / "lib"
if lib_path.exists():
os.add_dll_directory(str(lib_path))
bin_path = Path(os.environ["Z3_ROOT"]) / "bin"
if bin_path.exists():
os.add_dll_directory(str(bin_path))
if sys.platform == "win32":
if "Z3_ROOT" in os.environ:
lib_path = Path(os.environ["Z3_ROOT"]) / "lib"
if lib_path.exists():
os.add_dll_directory(str(lib_path))
bin_path = Path(os.environ["Z3_ROOT"]) / "bin"
if bin_path.exists():
os.add_dll_directory(str(bin_path))
if "ALGLIB_DIR" in os.environ:
os.add_dll_directory(str(os.environ["ALGLIB_DIR"]))
27 changes: 20 additions & 7 deletions bindings/mnt/pyfiction/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@
import sys
from pathlib import Path

if sys.platform == "win32" and "Z3_ROOT" in os.environ:
lib_path = Path(os.environ["Z3_ROOT"]) / "lib"
if lib_path.exists():
os.add_dll_directory(str(lib_path))
bin_path = Path(os.environ["Z3_ROOT"]) / "bin"
if bin_path.exists():
os.add_dll_directory(str(bin_path))
if sys.platform == "win32":
if "Z3_ROOT" in os.environ:
lib_path = Path(os.environ["Z3_ROOT"]) / "lib"
if lib_path.exists():
os.add_dll_directory(str(lib_path))
bin_path = Path(os.environ["Z3_ROOT"]) / "bin"
if bin_path.exists():
os.add_dll_directory(str(bin_path))
if "ALGLIB_DIR" in os.environ:
os.add_dll_directory(str(os.environ["ALGLIB_DIR"]))

from .pyfiction import ( # type: ignore[import-not-found]
__compiled_date__,
Expand Down Expand Up @@ -64,6 +67,8 @@
clocked_cartesian_layout,
clocked_hexagonal_layout,
clocked_shifted_cartesian_layout,
clustercomplete,
clustercomplete_params,
color_mode,
color_routing,
color_routing_params,
Expand Down Expand Up @@ -155,8 +160,10 @@
graph_oriented_layout_design,
graph_oriented_layout_design_params,
graph_oriented_layout_design_stats,
ground_state_space_reporting,
groundstate_from_simulation_result,
has_high_degree_fanin_nodes,
heuristic_sidb_simulation_engine,
hexagonal_gate_layout,
hexagonal_layout,
hexagonal_obstruction_layout,
Expand Down Expand Up @@ -258,6 +265,7 @@
sidb_nm_distance_111,
sidb_nm_position,
sidb_simulation_engine,
sidb_simulation_engine_name,
sidb_simulation_parameters,
sidb_simulation_result_100,
sidb_simulation_result_111,
Expand Down Expand Up @@ -366,6 +374,8 @@
"clocked_cartesian_layout",
"clocked_hexagonal_layout",
"clocked_shifted_cartesian_layout",
"clustercomplete",
"clustercomplete_params",
"color_mode",
"color_routing",
"color_routing_params",
Expand Down Expand Up @@ -457,8 +467,10 @@
"graph_oriented_layout_design",
"graph_oriented_layout_design_params",
"graph_oriented_layout_design_stats",
"ground_state_space_reporting",
"groundstate_from_simulation_result",
"has_high_degree_fanin_nodes",
"heuristic_sidb_simulation_engine",
"hexagonal_gate_layout",
"hexagonal_layout",
"hexagonal_obstruction_layout",
Expand Down Expand Up @@ -560,6 +572,7 @@
"sidb_nm_distance_111",
"sidb_nm_position",
"sidb_simulation_engine",
"sidb_simulation_engine_name",
"sidb_simulation_parameters",
"sidb_simulation_result_100",
"sidb_simulation_result_111",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
//
// Created by marcel on 21.11.23.
//

#ifndef PYFICTION_CLUSTERCOMPLETE_HPP
#define PYFICTION_CLUSTERCOMPLETE_HPP

#if (FICTION_ALGLIB_ENABLED)

#include "pyfiction/documentation.hpp"
wlambooy marked this conversation as resolved.
Show resolved Hide resolved
#include "pyfiction/types.hpp"

#include <fiction/algorithms/simulation/sidb/clustercomplete.hpp>
#include <fiction/layouts/coordinates.hpp>
wlambooy marked this conversation as resolved.
Show resolved Hide resolved

wlambooy marked this conversation as resolved.
Show resolved Hide resolved
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>

namespace pyfiction
{

namespace detail
{

template <typename Lyt>
void clustercomplete(pybind11::module& m)
{
namespace py = pybind11;

m.def("clustercomplete", &fiction::clustercomplete<Lyt>, py::arg("lyt"),
py::arg("params") = fiction::clustercomplete_params<fiction::offset::ucoord_t>{},
DOC(fiction_clustercomplete));
}

} // namespace detail

inline void clustercomplete(pybind11::module& m)
{
// NOTE be careful with the order of the following calls! Python will resolve the first matching overload!
wlambooy marked this conversation as resolved.
Show resolved Hide resolved
namespace py = pybind11;

/**
* Report *Ground State Space* stats.
*/
py::enum_<fiction::ground_state_space_reporting>(m, "ground_state_space_reporting",
DOC(fiction_ground_state_space_reporting))
.value("ENABLED", fiction::ground_state_space_reporting::ENABLED,
DOC(fiction_ground_state_space_reporting_ENABLED))
.value("DISABLED", fiction::ground_state_space_reporting::DISABLED,
DOC(fiction_ground_state_space_reporting_DISABLED));

/**
* ClusterComplete parameters.
*/
py::class_<fiction::clustercomplete_params<fiction::offset::ucoord_t>>(m, "clustercomplete_params",
DOC(fiction_clustercomplete_params))
.def(py::init<>())
.def_readwrite("simulation_parameters",
&fiction::clustercomplete_params<fiction::offset::ucoord_t>::simulation_parameters,
DOC(fiction_clustercomplete_params_simulation_parameters))
.def_readwrite("local_external_potential",
&fiction::clustercomplete_params<fiction::offset::ucoord_t>::local_external_potential,
DOC(fiction_clustercomplete_params_local_external_potential))
.def_readwrite("global_potential",
&fiction::clustercomplete_params<fiction::offset::ucoord_t>::global_potential,
DOC(fiction_clustercomplete_params_global_potential))
.def_readwrite("validity_witness_partitioning_max_cluster_size_gss",
&fiction::clustercomplete_params<
fiction::offset::ucoord_t>::validity_witness_partitioning_max_cluster_size_gss,
DOC(fiction_clustercomplete_params_validity_witness_partitioning_max_cluster_size_gss))
.def_readwrite("num_overlapping_witnesses_limit_gss",
&fiction::clustercomplete_params<fiction::offset::ucoord_t>::num_overlapping_witnesses_limit_gss,
DOC(fiction_clustercomplete_params_num_overlapping_witnesses_limit_gss))
.def_readwrite("available_threads",
&fiction::clustercomplete_params<fiction::offset::ucoord_t>::available_threads,
DOC(fiction_clustercomplete_params_available_threads))
.def_readwrite("report_gss_stats",
&fiction::clustercomplete_params<fiction::offset::ucoord_t>::report_gss_stats,
DOC(fiction_clustercomplete_params_report_gss_stats));

detail::clustercomplete<py_sidb_100_lattice>(m);
detail::clustercomplete<py_sidb_111_lattice>(m);
}

} // namespace pyfiction

#else // FICTION_ALGLIB_ENABLED

#include <pybind11/pybind11.h>

namespace pyfiction
{

/**
* Disable ClusterComplete.
*/
inline void clustercomplete([[maybe_unused]] pybind11::module& m) {}

} // namespace pyfiction

#endif // FICTION_ALGLIB_ENABLED

#endif // PYFICTION_CLUSTERCOMPLETE_HPP
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ inline void quickexact(pybind11::module& m)
.def(py::init<>())
.def_readwrite("simulation_parameters",
&fiction::quickexact_params<fiction::offset::ucoord_t>::simulation_parameters,
DOC(fiction_quickexact_params))
DOC(fiction_quickexact_params_simulation_parameters))
.def_readwrite("base_number_detection",
&fiction::quickexact_params<fiction::offset::ucoord_t>::base_number_detection,
DOC(fiction_quickexact_params_base_number_detection))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,27 @@

#include <pybind11/pybind11.h>

#include <string>

wlambooy marked this conversation as resolved.
Show resolved Hide resolved
wlambooy marked this conversation as resolved.
Show resolved Hide resolved
namespace pyfiction
{

namespace detail
{

template <typename EngineType>
void sidb_simulation_engine_name(pybind11::module& m)
{
namespace py = pybind11;

m.def(
"sidb_simulation_engine_name",
[](const EngineType& engine) -> std::string { return fiction::sidb_simulation_engine_name(engine); },
py::arg("engine"), DOC(fiction_sidb_simulation_engine_name));
}

} // namespace detail

inline void sidb_simulation_engine(pybind11::module& m)
{
namespace py = pybind11;
Expand All @@ -23,6 +41,8 @@ inline void sidb_simulation_engine(pybind11::module& m)
.value("QUICKSIM", fiction::sidb_simulation_engine::QUICKSIM, DOC(fiction_sidb_simulation_engine_QUICKSIM))
.value("QUICKEXACT", fiction::sidb_simulation_engine::QUICKEXACT,
DOC(fiction_sidb_simulation_engine_QUICKEXACT))
.value("CLUSTERCOMPLETE", fiction::sidb_simulation_engine::CLUSTERCOMPLETE,
DOC(fiction_sidb_simulation_engine_CLUSTERCOMPLETE))

;

Expand All @@ -31,8 +51,21 @@ inline void sidb_simulation_engine(pybind11::module& m)
.value("EXGS", fiction::exact_sidb_simulation_engine::EXGS, DOC(fiction_exact_sidb_simulation_engine_EXGS))
.value("QUICKEXACT", fiction::exact_sidb_simulation_engine::QUICKEXACT,
DOC(fiction_exact_sidb_simulation_engine_QUICKEXACT))
.value("CLUSTERCOMPLETE", fiction::exact_sidb_simulation_engine::CLUSTERCOMPLETE,
DOC(fiction_exact_sidb_simulation_engine_CLUSTERCOMPLETE))

;

py::enum_<fiction::heuristic_sidb_simulation_engine>(m, "heuristic_sidb_simulation_engine",
DOC(fiction_heuristic_sidb_simulation_engine))
.value("QUICKSIM", fiction::heuristic_sidb_simulation_engine::QUICKSIM,
DOC(fiction_heuristic_sidb_simulation_engine_QUICKSIM))

;

detail::sidb_simulation_engine_name<fiction::sidb_simulation_engine>(m);
detail::sidb_simulation_engine_name<fiction::exact_sidb_simulation_engine>(m);
detail::sidb_simulation_engine_name<fiction::heuristic_sidb_simulation_engine>(m);
}

} // namespace pyfiction
Expand Down
Loading
Loading