mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 13:29:11 +00:00 
			
		
		
		
	fix bug in propagation of parameters to combined solvers
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									bdfa84c6fe
								
							
						
					
					
						commit
						f015e3e4cc
					
				
					 5 changed files with 7 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -35,6 +35,7 @@ namespace sat {
 | 
			
		|||
        m_glue("glue"),
 | 
			
		||||
        m_glue_psm("glue_psm"),
 | 
			
		||||
        m_psm_glue("psm_glue") {
 | 
			
		||||
        m_num_parallel = 1;
 | 
			
		||||
        updt_params(p); 
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -804,7 +804,7 @@ namespace sat {
 | 
			
		|||
        sat::par par;
 | 
			
		||||
        symbol saved_phase = m_params.get_sym("phase", symbol("caching"));
 | 
			
		||||
        for (int i = 0; i < num_extra_solvers; ++i) {
 | 
			
		||||
            m_params.set_uint("random_seed", i + m_config.m_random_seed);
 | 
			
		||||
            m_params.set_uint("random_seed", m_rand());
 | 
			
		||||
            if (i == 1 + num_threads/2) {
 | 
			
		||||
                m_params.set_sym("phase", symbol("random"));
 | 
			
		||||
            }                        
 | 
			
		||||
| 
						 | 
				
			
			@ -813,13 +813,13 @@ namespace sat {
 | 
			
		|||
            solvers[i]->set_par(&par);
 | 
			
		||||
            scoped_rlimit.push_child(&solvers[i]->rlimit());            
 | 
			
		||||
        }
 | 
			
		||||
        set_par(&par);
 | 
			
		||||
        m_params.set_sym("phase", saved_phase);
 | 
			
		||||
        int finished_id = -1;
 | 
			
		||||
        std::string        ex_msg;
 | 
			
		||||
        par_exception_kind ex_kind;
 | 
			
		||||
        unsigned error_code = 0;
 | 
			
		||||
        lbool result = l_undef;
 | 
			
		||||
        flet<unsigned> _overwrite_thread_number(m_config.m_num_parallel, 1);
 | 
			
		||||
        #pragma omp parallel for
 | 
			
		||||
        for (int i = 0; i < num_threads; ++i) {
 | 
			
		||||
            try {                
 | 
			
		||||
| 
						 | 
				
			
			@ -867,6 +867,7 @@ namespace sat {
 | 
			
		|||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        set_par(0);
 | 
			
		||||
        if (finished_id != -1 && finished_id < num_extra_solvers) {
 | 
			
		||||
            m_stats = solvers[finished_id]->m_stats;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -93,6 +93,7 @@ public:
 | 
			
		|||
    {}
 | 
			
		||||
    
 | 
			
		||||
    virtual void updt_params(params_ref const & p) {
 | 
			
		||||
        m_params.append(p);
 | 
			
		||||
        m_solver->updt_params(p);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ tactic2solver::~tactic2solver() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void tactic2solver::updt_params(params_ref const & p) {
 | 
			
		||||
    m_params = p;
 | 
			
		||||
    m_params.append(p);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void tactic2solver::collect_param_descrs(param_descrs & r) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue