Changes in / [a5873bd:5f259f3]


Ignore:
Location:
doc/theses/thierry_delisle_PhD/code
Files:
2 deleted
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/thierry_delisle_PhD/code/relaxed_list.hpp

    ra5873bd r5f259f3  
    7373                        "SNZI",
    7474                        "BITMASK",
    75                         "SNZI + DISCOVERED MASK",
     75                        "DISCOVER",
    7676                        "SNZI + MASK"
    7777                };
     
    8282                : lists(new intrusive_queue_t[numLists])
    8383                , numLists(numLists)
    84                 #if VARIANT == SNZI
     84                #if VARIANT == SNZI || VARIANT == DISCOVER
    8585                        , snzi( std::log2( numLists / 8 ), 2 )
    86                 #elif VARIANT == SNZM || VARIANT == DISCOVER
     86                #elif VARIANT == SNZM
    8787                        , snzm( numLists )
    8888                #endif
     
    128128                                        assert(qword == 0);
    129129                                        bts(tls.mask, bit);
    130                                         snzm.arrive(i);
     130                                        snzi.arrive(i);
    131131                                #elif VARIANT == SNZI
    132132                                        snzi.arrive(i);
     
    166166                #if VARIANT == DISCOVER
    167167                        assert(numLists <= 64);
    168                         while(snzm.query()) {
     168                        while(snzi.query()) {
    169169                                tls.pick.pop.mask_attempt++;
    170170                                unsigned i, j;
     
    180180                                                tls.pick.pop.mask_reset++;
    181181                                                mask = (1U << numLists) - 1;
    182                                                 tls.mask.store(mask, std::memory_order_relaxed);
    183182                                        }
    184183
     
    203202                        }
    204203                #elif VARIANT == SNZM
    205                         //*
    206204                        while(snzm.query()) {
    207205                                tls.pick.pop.mask_attempt++;
     
    248246                                if(auto node = try_pop(i, j)) return node;
    249247                        }
    250                         /*/
    251                         while(snzm.query()) {
    252                                 // Pick two lists at random
    253                                 int i = tls.rng.next() % numLists;
    254                                 int j = tls.rng.next() % numLists;
    255 
    256                                 if(auto node = try_pop(i, j)) return node;
    257                         }
    258                         //*/
    259248                #elif VARIANT == BITMASK
    260249                        int nnempty;
     
    351340                                assert(qword == 0);
    352341                                __attribute__((unused)) bool ret = btr(tls.mask, bit);
    353                                 snzm.depart(w);
     342                                snzi.depart(w);
    354343                        #elif VARIANT == SNZI
    355344                                snzi.depart(w);
     
    522511        const unsigned numLists;
    523512private:
    524         #if VARIANT == SNZI
     513        #if VARIANT == SNZI || VARIANT == DISCOVER
    525514                snzi_t snzi;
    526         #elif VARIANT == SNZM || VARIANT == DISCOVER
     515        #elif VARIANT == SNZM
    527516                snzm_t snzm;
    528517        #else
     
    613602                double pop_sur  = (100.0 * double(global.pick.pop .success) / global.pick.pop .attempt);
    614603                double mpop_sur = (100.0 * double(global.pick.pop .success) / global.pick.pop .mask_attempt);
    615                 double rpop_sur = (100.0 * double(global.pick.pop .success) / global.pick.pop .mask_reset);
    616 
    617                 double push_len = double(global.pick.push.attempt     ) / global.pick.push.success;
    618                 double pop_len  = double(global.pick.pop .attempt     ) / global.pick.pop .success;
    619                 double mpop_len = double(global.pick.pop .mask_attempt) / global.pick.pop .success;
    620                 double rpop_len = double(global.pick.pop .mask_reset  ) / global.pick.pop .success;
    621 
    622                 os << "Push   Pick   : " << push_sur << " %, len " << push_len << " (" << global.pick.push.attempt      << " / " << global.pick.push.success << ")\n";
    623                 os << "Pop    Pick   : " << pop_sur  << " %, len " << pop_len  << " (" << global.pick.pop .attempt      << " / " << global.pick.pop .success << ")\n";
    624                 os << "TryPop Pick   : " << mpop_sur << " %, len " << mpop_len << " (" << global.pick.pop .mask_attempt << " / " << global.pick.pop .success << ")\n";
    625                 os << "Pop M Reset   : " << rpop_sur << " %, len " << rpop_len << " (" << global.pick.pop .mask_reset   << " / " << global.pick.pop .success << ")\n";
     604                double rpop_sur = (100.0 * double(global.pick.pop .mask_reset) / global.pick.pop .mask_attempt);
     605
     606                os << "Push   Pick % : " << push_sur << "(" << global.pick.push.success << " / " << global.pick.push.attempt << ")\n";
     607                os << "Pop    Pick % : " << pop_sur  << "(" << global.pick.pop .success << " / " << global.pick.pop .attempt << ")\n";
     608                os << "TryPop Pick % : " << mpop_sur << "(" << global.pick.pop .success << " / " << global.pick.pop .mask_attempt << ")\n";
     609                os << "Pop M Reset % : " << rpop_sur << "(" << global.pick.pop .mask_reset << " / " << global.pick.pop .mask_attempt << ")\n";
    626610
    627611                double avgQ_push = double(global.qstat.push.value) / global.qstat.push.count;
Note: See TracChangeset for help on using the changeset viewer.