Ignore:
Timestamp:
Oct 20, 2013 2:00:28 PM (7 years ago)
Author:
bradbell
Message:
  1. Add operator index to trace output.
  2. Check that new operator values have been set and are valid.
  3. Reinitialize cskip_op_ after optimization.

optimize.hpp: Add test of entirely removing an atomic call.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/opt_cond_exp/cppad/local/optimize.hpp

    r2978 r2979  
    17691769        // operator and variable index
    17701770        for(i = 0; i < num_var; i++)
    1771         {       tape[i].new_op  = rec->num_rec_op(); // invalid index
    1772                 tape[i].new_var = num_var;           // invalid index
     1771        {       tape[i].new_op  = 0;       // invalid index (except for BeginOp)
     1772                tape[i].new_var = num_var; // invalid index
    17731773        }
    17741774
     
    23062306        }
    23072307
     2308# ifndef NDEBUG
     2309        size_t num_new_op = rec->num_rec_op();
     2310        for(i_var = 0; i_var < tape.size(); i_var++)
     2311                CPPAD_ASSERT_UNKNOWN( tape[i_var].new_op < num_new_op );
     2312# endif
     2313
    23082314        // fill in the arguments for the CSkip operations
    23092315        CPPAD_ASSERT_UNKNOWN( cskip_info_next == cskip_info.size() );
     
    23212327                        for(j = 0; j < n_true; j++)
    23222328                        {       i_var = info.skip_on_true[j];
     2329                                CPPAD_ASSERT_UNKNOWN( tape[i_var].new_op > 0 );
    23232330                                info.arg[6 + j] = tape[i_var].new_op;
    23242331                        }
    23252332                        for(j = 0; j < n_false; j++)
    23262333                        {       i_var = info.skip_on_false[j];
     2334                                CPPAD_ASSERT_UNKNOWN( tape[i_var].new_op > 0 );
    23272335                                info.arg[6 + n_true + j] = tape[i_var].new_op;
    23282336                        }
     
    23532361        size_t n = ind_taddr_.size();
    23542362
     2363        size_t i;
    23552364# ifndef NDEBUG
    2356         size_t i, j, m = dep_taddr_.size();
     2365        size_t j, m = dep_taddr_.size();
    23572366        CppAD::vector<Base> x(n), y(m), check(m);
    23582367        bool check_zero_order = taylor_per_var_ > 0;
     
    23982407        taylor_col_dim_ = 0;
    23992408
     2409        // resize and initilaize conditional skip vector
     2410        // (must use player size because it now has the recoreder information)
     2411        cskip_op_.resize( play_.num_rec_op() );
     2412        for(i = 0; i < cskip_op_.size(); i++)
     2413                cskip_op_[i] = false;
     2414
    24002415# ifndef NDEBUG
    24012416        if( check_zero_order )
Note: See TracChangeset for help on using the changeset viewer.