mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 03:32:28 +00:00 
			
		
		
		
	enable post setup parameter tweaking in theory solvers, update azure-pipeline
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									b8cadfac56
								
							
						
					
					
						commit
						4536985bf7
					
				
					 5 changed files with 21 additions and 8 deletions
				
			
		|  | @ -49,7 +49,8 @@ jobs: | ||||||
|   timeoutInMinutes: 90   |   timeoutInMinutes: 90   | ||||||
|   pool: |   pool: | ||||||
|     vmImage: "ubuntu-latest" |     vmImage: "ubuntu-latest" | ||||||
|   container: "quay.io/pypa/manylinux2014_x86_64:latest" |   container: "quay.io/pypa/manylinux_2_34_x86_64:latest" | ||||||
|  |   condition: eq(1,1)  | ||||||
|   steps: |   steps: | ||||||
|   - script: "/opt/python/cp38-cp38/bin/python -m venv $PWD/env" |   - script: "/opt/python/cp38-cp38/bin/python -m venv $PWD/env" | ||||||
|   - script: 'echo "##vso[task.prependpath]$PWD/env/bin"' |   - script: 'echo "##vso[task.prependpath]$PWD/env/bin"' | ||||||
|  | @ -66,7 +67,6 @@ jobs: | ||||||
|   pool: |   pool: | ||||||
|     vmImage: "ubuntu-latest" |     vmImage: "ubuntu-latest" | ||||||
|   container: "quay.io/pypa/manylinux2014_x86_64:latest" |   container: "quay.io/pypa/manylinux2014_x86_64:latest" | ||||||
|   condition: eq(0,1)  |  | ||||||
|   steps: |   steps: | ||||||
|   - script: curl -L -o /tmp/arm-toolchain.tar.xz 'https://developer.arm.com/-/media/Files/downloads/gnu/11.2-2022.02/binrel/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz?rev=33c6e30e5ac64e6dba8f0431f2c35f1b&hash=9918A05BF47621B632C7A5C8D2BB438FB80A4480' |   - script: curl -L -o /tmp/arm-toolchain.tar.xz 'https://developer.arm.com/-/media/Files/downloads/gnu/11.2-2022.02/binrel/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz?rev=33c6e30e5ac64e6dba8f0431f2c35f1b&hash=9918A05BF47621B632C7A5C8D2BB438FB80A4480' | ||||||
|   - script: mkdir -p /tmp/arm-toolchain/ |   - script: mkdir -p /tmp/arm-toolchain/ | ||||||
|  |  | ||||||
|  | @ -120,6 +120,9 @@ namespace smt { | ||||||
|         if (!m_setup.already_configured()) { |         if (!m_setup.already_configured()) { | ||||||
|             m_fparams.updt_params(p); |             m_fparams.updt_params(p); | ||||||
|         } |         } | ||||||
|  |         for (auto th : m_theory_set) | ||||||
|  |             if (th) | ||||||
|  |                 th->updt_params(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     unsigned context::relevancy_lvl() const { |     unsigned context::relevancy_lvl() const { | ||||||
|  |  | ||||||
|  | @ -417,6 +417,8 @@ namespace smt { | ||||||
| 
 | 
 | ||||||
|         smt_params const& get_fparams() const; |         smt_params const& get_fparams() const; | ||||||
| 
 | 
 | ||||||
|  |         virtual void updt_params() {} | ||||||
|  | 
 | ||||||
|         enode * get_enode(theory_var v) const { |         enode * get_enode(theory_var v) const { | ||||||
|             SASSERT(v < static_cast<int>(m_var2enode.size())); |             SASSERT(v < static_cast<int>(m_var2enode.size())); | ||||||
|             return m_var2enode[v]; |             return m_var2enode[v]; | ||||||
|  |  | ||||||
|  | @ -870,15 +870,10 @@ public: | ||||||
|         get_zero(true); |         get_zero(true); | ||||||
|         get_zero(false); |         get_zero(false); | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|         lp().updt_params(ctx().get_params()); |         lp().updt_params(ctx().get_params()); | ||||||
|         lp().settings().set_resource_limit(m_resource_limit); |         lp().settings().set_resource_limit(m_resource_limit); | ||||||
|         lp().settings().bound_propagation() = bound_prop_mode::BP_NONE != propagation_mode(); |         lp().settings().bound_propagation() = bound_prop_mode::BP_NONE != propagation_mode(); | ||||||
| 
 |  | ||||||
|         // todo : do not use m_arith_branch_cut_ratio for deciding on cheap cuts
 |  | ||||||
|         unsigned branch_cut_ratio = ctx().get_fparams().m_arith_branch_cut_ratio; |  | ||||||
|         lp().set_cut_strategy(branch_cut_ratio); |  | ||||||
|          |  | ||||||
|         lp().settings().set_run_gcd_test(ctx().get_fparams().m_arith_gcd_test); |  | ||||||
|         lp().settings().set_random_seed(ctx().get_fparams().m_random_seed); |         lp().settings().set_random_seed(ctx().get_fparams().m_random_seed); | ||||||
|         m_lia = alloc(lp::int_solver, *m_solver.get()); |         m_lia = alloc(lp::int_solver, *m_solver.get()); | ||||||
|     } |     } | ||||||
|  | @ -4199,6 +4194,13 @@ public: | ||||||
|         m_bound_predicate = nullptr; |         m_bound_predicate = nullptr; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     void updt_params() { | ||||||
|  |         if (m_solver) | ||||||
|  |             m_solver->updt_params(ctx().get_params()); | ||||||
|  |         if (m_nla) | ||||||
|  |             m_nla->updt_params(ctx().get_params()); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|     void validate_model(proto_model& mdl) { |     void validate_model(proto_model& mdl) { | ||||||
| 
 | 
 | ||||||
|  | @ -4359,6 +4361,10 @@ void theory_lra::setup() { | ||||||
|     m_imp->setup(); |     m_imp->setup(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void theory_lra::updt_params() { | ||||||
|  |     m_imp->updt_params(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void theory_lra::validate_model(proto_model& mdl) { | void theory_lra::validate_model(proto_model& mdl) { | ||||||
|     m_imp->validate_model(mdl); |     m_imp->validate_model(mdl); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -95,6 +95,8 @@ namespace smt { | ||||||
|         bool get_upper(enode* n, rational& r, bool& is_strict); |         bool get_upper(enode* n, rational& r, bool& is_strict); | ||||||
|         void solve_for(vector<solution>& s) override; |         void solve_for(vector<solution>& s) override; | ||||||
| 
 | 
 | ||||||
|  |         void updt_params() override; | ||||||
|  |                  | ||||||
|         void display(std::ostream & out) const override; |         void display(std::ostream & out) const override; | ||||||
|          |          | ||||||
|         void collect_statistics(::statistics & st) const override; |         void collect_statistics(::statistics & st) const override; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue