Changeset 3335


Ignore:
Timestamp:
Sep 15, 2014 6:32:35 PM (6 years ago)
Author:
bradbell
Message:
  1. cache.sh should not revert sweep files that have changed.
  2. Fix calls that were erased by mistake fixed in 1.
  3. Use cache2var (better description than cache).
  4. Put cache2var in ADFun function object.
Location:
branches/cache
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/cache/bug/cache.sh

    r3329 r3335  
    8989rm $name $name.cpp
    9090#
    91 svn revert $forward
    92 svn revert $reverse
     91sed \
     92        -e 's|^\(# define CPPAD_FORWARD0SWEEP_TRACE\) 1|\1 0|' \
     93        -i $forward
     94#
     95sed \
     96        -e 's|^\(# define CPPAD_REVERSE_SWEEP_TRACE\) 1|\1 0|' \
     97        -i $reverse
  • branches/cache/cppad/local/ad_fun.hpp

    r3326 r3335  
    118118        /// the operation sequence corresponding to this object
    119119        player<Base> play_;
     120
     121        /// mapping from variable index to cache index
     122        CppAD::vector<addr_t> var2cache_;
    120123
    121124        /// Packed results of the forward mode Jacobian sparsity calculations.
  • branches/cache/cppad/local/cache.hpp

    r3333 r3335  
    1212template <class Base>
    1313void create_cache(
    14         player<Base>&       play )
     14        player<Base>&       play         ,
     15        CppAD::vector<addr_t>& var2cache )
    1516{       size_t i, j, k;
    1617
     
    6364
    6465        // initialize the cache vector and available flags as empty
    65         CppAD::vector<addr_t> cache(num_var);
     66        var2cache.resize(num_var);
    6667        std::list<addr_t> available;
    6768        std::list<addr_t>::iterator itr;
     
    7374        {       if( available.empty() )
    7475                        available.push_front(i_cache++);
    75                 cache[i_var] = available.front();
     76                var2cache[i_var] = available.front();
    7677                available.pop_front();
    7778
    7879                while( i_last < num_var && last_use[ order[i_last] ] <= i_var )
    79                 {       available.push_back( cache[ order[i_last++] ] );
     80                {       available.push_back( var2cache[ order[i_last++] ] );
    8081                }
    8182        }
     
    8687        {       std::cout << i_var << ", ";
    8788                std::cout << last_use[i_var] << ", ";
    88                 std::cout << cache[i_var] << std::endl;
     89                std::cout << var2cache[i_var] << std::endl;
    8990        }
    9091        std::cout << "num_cache = " << i_cache - num_var << std::endl;
     
    134135                for(size_t i_arg = 0; i_arg < n_arg; i_arg++)
    135136                {       if( arg_is_variable(op, arg, i_arg) )
    136                                 rec.PutArg( cache[ arg[i_arg] ] );
     137                                rec.PutArg( var2cache[ arg[i_arg] ] );
    137138                        else
    138139                                rec.PutArg( arg[i_arg] );
     
    145146template <class Base>
    146147void ADFun<Base>::cache(void)
    147 {       create_cache(play_);
     148{       create_cache(play_, var2cache_);
    148149}
    149150
  • branches/cache/cppad/local/forward0sweep.hpp

    r3324 r3335  
    236236        // (done differently for order zero).
    237237        vector<size_t> user_iy;     
     238
     239        // 2DO: implement tracing cache
     240        CppAD::vector<addr_t> cache2var;
    238241# endif
    239242
     
    706709                                        user_iy[i],
    707710                                        UsrrvOp,
    708                                         CPPAD_NULL
     711                                        CPPAD_NULL,
     712                                        cache2var
    709713                                );
    710714                                Base* Z_tmp = taylor + user_iy[i] * J;
     
    733737                                i_var,
    734738                                op,
    735                                 arg_tmp
     739                                arg_tmp,
     740                                cache2var
    736741                        );
    737742                        if( NumRes(op) > 0 ) printOpResult(
  • branches/cache/cppad/local/reverse_sweep.hpp

    r3301 r3335  
    223223# if CPPAD_REVERSE_SWEEP_TRACE
    224224        std::cout << std::endl;
     225
     226        // 2DO: implement tracing cache
     227        CppAD::vector<addr_t> cache2var;
    225228# endif
    226229        bool more_operators = true;
     
    253256                        i_tmp,
    254257                        op,
    255                         arg
     258                        arg,
     259                        cache2var
    256260                );
    257261                if( NumRes(op) > 0 && op != BeginOp ) printOpResult(
Note: See TracChangeset for help on using the changeset viewer.