Changeset 03045f18 for doc/theses


Ignore:
Timestamp:
Jun 10, 2020, 12:07:36 PM (18 months ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
arm-eh, jacob/cs343-translation, master, new-ast, new-ast-unique-expr
Children:
6089f4d
Parents:
591f084
Message:

Improved printing of probing length

File:
1 edited

Legend:

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

    r591f084 r03045f18  
    7373                        "SNZI",
    7474                        "BITMASK",
    75                         "DISCOVER",
     75                        "SNZI + DISCOVERED MASK",
    7676                        "SNZI + MASK"
    7777                };
     
    8282                : lists(new intrusive_queue_t[numLists])
    8383                , numLists(numLists)
    84                 #if VARIANT == SNZI || VARIANT == DISCOVER
     84                #if VARIANT == SNZI
    8585                        , snzi( std::log2( numLists / 8 ), 2 )
    86                 #elif VARIANT == SNZM
     86                #elif VARIANT == SNZM || VARIANT == DISCOVER
    8787                        , snzm( numLists )
    8888                #endif
     
    128128                                        assert(qword == 0);
    129129                                        bts(tls.mask, bit);
    130                                         snzi.arrive(i);
     130                                        snzm.arrive(i);
    131131                                #elif VARIANT == SNZI
    132132                                        snzi.arrive(i);
     
    166166                #if VARIANT == DISCOVER
    167167                        assert(numLists <= 64);
    168                         while(snzi.query()) {
     168                        while(snzm.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);
    182183                                        }
    183184
     
    202203                        }
    203204                #elif VARIANT == SNZM
     205                        //*
    204206                        while(snzm.query()) {
    205207                                tls.pick.pop.mask_attempt++;
     
    235237                                if(auto node = try_pop(i, j)) return node;
    236238                        }
     239                        /*/
     240                        while(snzm.query()) {
     241                                // Pick two lists at random
     242                                int i = tls.rng.next() % numLists;
     243                                int j = tls.rng.next() % numLists;
     244
     245                                if(auto node = try_pop(i, j)) return node;
     246                        }
     247                        //*/
    237248                #elif VARIANT == BITMASK
    238249                        int nnempty;
     
    329340                                assert(qword == 0);
    330341                                __attribute__((unused)) bool ret = btr(tls.mask, bit);
    331                                 snzi.depart(w);
     342                                snzm.depart(w);
    332343                        #elif VARIANT == SNZI
    333344                                snzi.depart(w);
     
    500511        const unsigned numLists;
    501512private:
    502         #if VARIANT == SNZI || VARIANT == DISCOVER
     513        #if VARIANT == SNZI
    503514                snzi_t snzi;
    504         #elif VARIANT == SNZM
     515        #elif VARIANT == SNZM || VARIANT == DISCOVER
    505516                snzm_t snzm;
    506517        #else
     
    591602                double pop_sur  = (100.0 * double(global.pick.pop .success) / global.pick.pop .attempt);
    592603                double mpop_sur = (100.0 * double(global.pick.pop .success) / global.pick.pop .mask_attempt);
    593                 double rpop_sur = (100.0 * double(global.pick.pop .mask_reset) / global.pick.pop .mask_attempt);
    594 
    595                 os << "Push   Pick % : " << push_sur << "(" << global.pick.push.success << " / " << global.pick.push.attempt << ")\n";
    596                 os << "Pop    Pick % : " << pop_sur  << "(" << global.pick.pop .success << " / " << global.pick.pop .attempt << ")\n";
    597                 os << "TryPop Pick % : " << mpop_sur << "(" << global.pick.pop .success << " / " << global.pick.pop .mask_attempt << ")\n";
    598                 os << "Pop M Reset % : " << rpop_sur << "(" << global.pick.pop .mask_reset << " / " << global.pick.pop .mask_attempt << ")\n";
     604                double rpop_sur = (100.0 * double(global.pick.pop .success) / global.pick.pop .mask_reset);
     605
     606                double push_len = double(global.pick.push.attempt     ) / global.pick.push.success;
     607                double pop_len  = double(global.pick.pop .attempt     ) / global.pick.pop .success;
     608                double mpop_len = double(global.pick.pop .mask_attempt) / global.pick.pop .success;
     609                double rpop_len = double(global.pick.pop .mask_reset  ) / global.pick.pop .success;
     610
     611                os << "Push   Pick   : " << push_sur << " %, len " << push_len << " (" << global.pick.push.attempt      << " / " << global.pick.push.success << ")\n";
     612                os << "Pop    Pick   : " << pop_sur  << " %, len " << pop_len  << " (" << global.pick.pop .attempt      << " / " << global.pick.pop .success << ")\n";
     613                os << "TryPop Pick   : " << mpop_sur << " %, len " << mpop_len << " (" << global.pick.pop .mask_attempt << " / " << global.pick.pop .success << ")\n";
     614                os << "Pop M Reset   : " << rpop_sur << " %, len " << rpop_len << " (" << global.pick.pop .mask_reset   << " / " << global.pick.pop .success << ")\n";
    599615
    600616                double avgQ_push = double(global.qstat.push.value) / global.qstat.push.count;
Note: See TracChangeset for help on using the changeset viewer.