3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-07-12 01:56:22 +00:00
z3/src/sat
Nikolaj Bjorner 612fab1c9a
Parallel tactic (#9824) (#9825)
Add new parallel algorithm as a tactic (parallel_tactical2.cpp)
Don't port over old experiments from smt_parallel that we aren't using
(sls, inprocessing, failed_literal_mode for bb detection)
Fix bugs: lease cancellation/reslimit race condition, involves changing
lease epoch to simple boolean flag
Also, now there is a single shared set of params for the tactic and
smt_parallel

**Test runs for the parallel_tactical2 vs old smt_parallel version:**
run-2747-Z3-threads-4-qflia-30s-stats.md
run-2746-Z3-threads-4-qflia-30s-parallel_tactic-stats.md
run-2745-Z3-threads-1-qfbv-30s-stats.md
run-3013-Z3-threads-4-qfbv-30s-parallel_tactic-stats.md --> note this is
indeed run-3013, I reran after a bugfix in inc_sat_solver
run-2743-Z3-threads-4-qfnia-30s-stats.md
run-2742-Z3-threads-4-qfnia-30s-parallel_tactic-stats.md

**Test runs for the new smt_parallel with bugfixes:**
run-2801-Z3-threads-4-qflia-30s-smtparallel-bugfixes-stats.md,
run-2800-Z3-threads-4-qflia-30s-smtparallel-bugfixes-stats.md
run-2797-Z3-threads-4-qfnia-30s-smtparallel-bugfixes-stats.md
compare to old smt_parallel:
run-2747-Z3-threads-4-qflia-30s-stats.md
run-2743-Z3-threads-4-qfnia-30s-stats.md

Note that there is a slight regression on lia in run-2800. The source of
this appears to be the new new LP largest-cube LIA heuristic param,
which is enabled by default. disabling this param in run-2801 restored
performance (I didn't change this in this PR though, just something to
note)

http://mtzguido.tplinkdns.com:8081/z3/compare_stats.html

---------

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: Ilana Shapiro <ilanashapiro@Ilanas-MacBook-Pro.local>
Co-authored-by: Ilana Shapiro <ilanashapiro@Ilanas-MBP.localdomain>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-06-26 10:36:15 -06:00
..
sat_solver Parallel tactic (#9824) (#9825) 2026-06-26 10:36:15 -06:00
smt Parallel tactic (#9824) (#9825) 2026-06-26 10:36:15 -06:00
tactic Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
CMakeLists.txt remove stale experimental code #8063 2025-12-12 05:49:05 +00:00
dimacs.cpp deal with compiler warnings and include value exchange prior to final check. 2025-01-24 09:40:33 -08:00
dimacs.h inherit more exceptions from std::exception 2024-11-04 13:52:14 -08:00
sat_aig_finder.cpp Fix static analysis issues: null dereferences, unsafe casts, branch clones, uninitialized members (#9424) 2026-04-29 13:37:11 -07:00
sat_aig_finder.h
sat_allocator.h
sat_anf_simplifier.cpp Refactor sat_anf_simplifier to use C++17 structured bindings (#8358) 2026-01-27 09:59:26 -08:00
sat_anf_simplifier.h
sat_asymm_branch.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
sat_asymm_branch.h
sat_asymm_branch_params.pyg
sat_bcd.cpp Eliminate unnecessary copy operations in function parameters and range-based loops (#8589) 2026-02-11 21:14:32 +00:00
sat_bcd.h
sat_big.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
sat_big.h
sat_clause.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
sat_clause.h remove unneeded iterator functions 2024-09-23 12:59:04 +01:00
sat_clause_set.cpp
sat_clause_set.h
sat_clause_use_list.cpp fixes to build warnings 2024-09-30 08:23:31 -07:00
sat_clause_use_list.h Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_cleaner.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
sat_cleaner.h
sat_config.cpp remove stale experimental code #8063 2025-12-12 05:49:05 +00:00
sat_config.h remove stale experimental code #8063 2025-12-12 05:49:05 +00:00
sat_ddfw_wrapper.cpp flip tabu on predicate being repaired, add model rotation code 2025-01-02 14:39:36 -08:00
sat_ddfw_wrapper.h Remove redundant overridden default destructors (#8191) 2026-01-14 18:41:26 +00:00
sat_drat.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_drat.h Replace empty destructors with = default for compiler optimization (#8189) 2026-01-13 10:50:10 -08:00
sat_elim_eqs.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
sat_elim_eqs.h
sat_extension.h fix build 2023-12-02 19:52:59 -08:00
sat_gc.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
sat_integrity_checker.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
sat_integrity_checker.h fixes to trim 2023-07-03 19:26:19 +02:00
sat_justification.h remove ternary clause optimization 2022-10-30 03:57:39 -07:00
sat_local_search.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_local_search.h remove default destructors 2024-10-02 22:20:12 +01:00
sat_lookahead.cpp Fix 13 compiler warnings: sign-comparison and unused parameters (#8215) 2026-01-16 16:00:42 -08:00
sat_lookahead.h Remove redundant default constructors when they're the only constructor (#8461) 2026-02-01 16:51:26 -08:00
sat_model_converter.cpp Refactor sat_model_converter to use C++17 structured bindings (#8440) 2026-01-31 17:13:07 -08:00
sat_model_converter.h remove default destructors 2024-10-02 22:20:12 +01:00
sat_mus.cpp replace some copies with moves 2026-02-09 22:45:28 +00:00
sat_mus.h remove default destructors & some default constructors 2024-09-04 22:30:23 +01:00
sat_npn3_finder.cpp
sat_npn3_finder.h
sat_parallel.cpp set clean shutdown for local search and re-enable local search when it parallelizes with PB solver 2024-06-30 16:06:51 -07:00
sat_parallel.h set clean shutdown for local search and re-enable local search when it parallelizes with PB solver 2024-06-30 16:06:51 -07:00
sat_prob.cpp create insert-fresh and insert for indexed_uint_set to make use cases with non-fresh inserts easier 2023-08-03 09:48:07 -07:00
sat_prob.h fix #6599 2023-02-18 14:18:02 -08:00
sat_probing.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
sat_probing.h
sat_proof_trim.cpp fix bug in trim code missing dependecy 2025-06-07 15:39:05 -07:00
sat_proof_trim.h Migrate codebase to std::string_view (except z3++.h) (#8266) 2026-01-21 09:30:41 -08:00
sat_scc.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
sat_scc.h expose extract roots as separate 2022-01-31 11:56:44 -08:00
sat_scc_params.pyg
sat_simplifier.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
sat_simplifier.h fix #7532 2025-01-27 10:51:12 -08:00
sat_simplifier_params.pyg remove unused bdd based variable elimination 2025-04-14 16:07:41 -07:00
sat_solver.cpp Parallel tactic (#9824) (#9825) 2026-06-26 10:36:15 -06:00
sat_solver.h Parallel tactic (#9824) (#9825) 2026-06-26 10:36:15 -06:00
sat_solver_core.h remove stale experimental code #8063 2025-12-12 05:49:05 +00:00
sat_types.h Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
sat_watched.cpp remove ternary clause optimization 2022-10-30 03:57:39 -07:00
sat_watched.h remove ternary clause optimization 2022-10-30 03:57:39 -07:00
sat_xor_finder.cpp replace some copies with moves 2026-02-09 22:45:28 +00:00
sat_xor_finder.h