Changeset c083c3d for doc/theses


Ignore:
Timestamp:
May 1, 2023, 6:15:26 PM (2 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, ast-experimental, master
Children:
67408114
Parents:
4daf79f (diff), 6e1e2d0 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
git-author:
Peter A. Buhr <pabuhr@…> (05/01/23 16:59:14)
git-committer:
Peter A. Buhr <pabuhr@…> (05/01/23 18:15:26)
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Location:
doc/theses
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/colby_parsons_MMAth/benchmarks/actors/data/nasus_CFA.txt

    r4daf79f rc083c3d  
    115
    221 2 4 8 16 24 32 48
    3 CFA-LV CFA-NS CFA-R
     3Longest-Victim No-Stealing Random
    44executor
    5 CFA-LV:
     5Longest-Victim:
    66proc    time (s)
    771       29.22
     
    454548      1.20
    464648      1.20
    47 CFA-NS:
     47No-Stealing:
    4848proc    time (s)
    49491       28.25
     
    878748      1.18
    888848      1.16
    89 CFA-R:
     89Random:
    9090proc    time (s)
    91911       28.58
     
    131131
    132132matrix
    133 CFA-LV:
     133Longest-Victim:
    134134proc    time (s)
    1351351       105.48
     
    17317348      2.75
    17417448      2.96
    175 CFA-NS:
     175No-Stealing:
    176176proc    time (s)
    1771771       106.01
     
    21521548      2.78
    21621648      2.92
    217 CFA-R:
     217Random:
    218218proc    time (s)
    2192191       105.91
     
    259259
    260260repeat
    261 CFA-LV:
     261Longest-Victim:
    262262proc    time (s)
    2632631       1.17
     
    30130148      13.73
    30230248      14.55
    303 CFA-NS:
     303No-Stealing:
    304304proc    time (s)
    3053051       1.15
     
    34334348      13.03
    34434448      12.83
    345 CFA-R:
     345Random:
    346346proc    time (s)
    3473471       1.15
     
    387387
    388388balance_one
    389 CFA-LV:
     389Longest-Victim:
    390390proc    time (s)
    3913911       20.06
     
    42942948      1.11
    43043048      1.12
    431 CFA-NS:
     431No-Stealing:
    432432proc    time (s)
    4334331       20.13
     
    47147148      19.95
    47247248      20.00
    473 CFA-R:
     473Random:
    474474proc    time (s)
    4754751       19.92
     
    515515
    516516balance_multi
    517 CFA-LV:
     517Longest-Victim:
    518518proc    time (s)
    5195191       8.17
     
    55755748      5.75
    55855848      5.68
    559 CFA-NS:
     559No-Stealing:
    560560proc    time (s)
    5615611       8.10
     
    59959948      9.28
    60060048      9.26
    601 CFA-R:
     601Random:
    602602proc    time (s)
    6036031       8.08
  • doc/theses/colby_parsons_MMAth/benchmarks/actors/data/pyke_CFA.txt

    r4daf79f rc083c3d  
    115
    221 2 4 8 16 24 32 48
    3 CFA-LV CFA-NS CFA-R
     3Longest-Victim No-Stealing Random
    44executor
    5 CFA-LV:
     5Longest-Victim:
    66proc    time (s)
    771       29.04
     
    454548      2.58
    464648      2.55
    47 CFA-NS:
     47No-Stealing:
    4848proc    time (s)
    49491       28.15
     
    878748      2.59
    888848      2.60
    89 CFA-R:
     89Random:
    9090proc    time (s)
    91911       29.06
     
    131131
    132132matrix
    133 CFA-LV:
     133Longest-Victim:
    134134proc    time (s)
    1351351       127.44
     
    17317348      6.83
    17417448      6.81
    175 CFA-NS:
     175No-Stealing:
    176176proc    time (s)
    1771771       127.64
     
    21521548      6.77
    21621648      6.74
    217 CFA-R:
     217Random:
    218218proc    time (s)
    2192191       127.26
     
    259259
    260260repeat
    261 CFA-LV:
     261Longest-Victim:
    262262proc    time (s)
    2632631       1.16
     
    30130148      19.75
    30230248      19.71
    303 CFA-NS:
     303No-Stealing:
    304304proc    time (s)
    3053051       1.18
     
    34334348      13.88
    34434448      13.71
    345 CFA-R:
     345Random:
    346346proc    time (s)
    3473471       1.18
     
    387387
    388388balance_one
    389 CFA-LV:
     389Longest-Victim:
    390390proc    time (s)
    3913911       19.46
     
    42942948      2.12
    43043048      2.17
    431 CFA-NS:
     431No-Stealing:
    432432proc    time (s)
    4334331       21.00
     
    47147148      47.50
    47247248      47.72
    473 CFA-R:
     473Random:
    474474proc    time (s)
    4754751       20.81
     
    515515
    516516balance_multi
    517 CFA-LV:
     517Longest-Victim:
    518518proc    time (s)
    5195191       7.94
     
    55755748      14.38
    55855848      14.50
    559 CFA-NS:
     559No-Stealing:
    560560proc    time (s)
    5615611       8.48
     
    59959948      21.50
    60060048      21.15
    601 CFA-R:
     601Random:
    602602proc    time (s)
    6036031       8.49
  • doc/theses/colby_parsons_MMAth/benchmarks/channels/plotData.py

    r4daf79f rc083c3d  
    7070    if currBench == Bench.Unset:
    7171        if line == "contend:":
    72             name = "Contend"
     72            name = "Channel Contention"
    7373            currBench = Bench.Contend
    7474        elif line == "zero:":
  • doc/theses/colby_parsons_MMAth/code/swap_queues.cfa

    r4daf79f rc083c3d  
    1 // this is a code stub and will not compile
    2 
    3 // tries to atomically swap two queues and returns 0p if the swap failed
    4 // returns ptr to newly owned queue if swap succeeds
    5 static inline work_queue * try_swap_queues( worker & this, unsigned int victim_idx, unsigned int my_idx ) with(this) {
     1// sequential equivalent swap
     2void swap( uint victim_idx, uint my_idx  ) {
     3    // Step 0:
    64    work_queue * my_queue = request_queues[my_idx];
    7     work_queue * other_queue = request_queues[victim_idx];
    8 
    9     // if either queue is 0p then they are in the process of being stolen
    10     if ( other_queue == 0p || my_queue == 0p ) return 0p;
    11 
    12     // try to set our queue ptr to be 0p. If it fails someone moved our queue so return false
    13     if ( !__atomic_compare_exchange_n( &request_queues[my_idx], &my_queue, 0p, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST ) )
    14         return 0p;
    15 
    16     // try to set other queue ptr to be our queue ptr. If it fails someone moved the other queue so fix up then return false
    17     if ( !__atomic_compare_exchange_n( &request_queues[victim_idx], &other_queue, my_queue, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST ) ) {
    18         /* paranoid */ verify( request_queues[my_idx] == 0p );
    19         request_queues[my_idx] = my_queue; // reset my queue ptr back to appropriate val
    20         return 0p;
    21     }
    22 
    23     // we have successfully swapped and since our queue is 0p no one will touch it so write back new queue ptr non atomically
    24     request_queues[my_idx] = other_queue; // last write does not need to be atomic
    25     return other_queue;
     5    work_queue * vic_queue = request_queues[victim_idx];
     6    // Step 2:
     7    request_queues[my_idx] = 0p;
     8    // Step 3:
     9    request_queues[victim_idx] = my_queue;
     10    // Step 4:
     11    request_queues[my_idx] = vic_queue;
    2612}
    2713
     
    3521
    3622bool try_swap_queues( worker & this, uint victim_idx, uint my_idx ) with(this) {
     23    // Step 0:
     24    // request_queues is the shared array of all sharded queues
    3725    work_queue * my_queue = request_queues[my_idx];
    3826    work_queue * vic_queue = request_queues[victim_idx];
    3927
     28    // Step 1:
    4029    // If either queue is 0p then they are in the process of being stolen
    4130    // 0p is CForAll's equivalent of C++'s nullptr
    42     if ( vic_queue == 0p || my_queue == 0p ) return false;
     31    if ( vic_queue == 0p ) return false;
    4332
    44     // Try to set our queue ptr to be 0p.
    45     // If this CAS fails someone moved our queue so return false
     33    // Step 2:
     34    // Try to set thief's queue ptr to be 0p.
     35    // If this CAS fails someone stole thief's queue so return false
    4636    if ( !CAS( &request_queues[my_idx], &my_queue, 0p ) )
    4737        return false;
    48 
    49     // Try to set other queue ptr to be our queue ptr.
    50     // If it fails someone moved the other queue, so fix up then return false
     38   
     39    // Step 3:
     40    // Try to set victim queue ptr to be thief's queue ptr.
     41    // If it fails someone stole the other queue, so fix up then return false
    5142    if ( !CAS( &request_queues[victim_idx], &vic_queue, my_queue ) ) {
    5243        request_queues[my_idx] = my_queue; // reset queue ptr back to prev val
     
    5445    }
    5546
     47    // Step 4:
    5648    // Successfully swapped.
    57     // Our queue is 0p so no one will touch it so write back without CAS is safe
     49    // Thief's ptr is 0p so no one will touch it
     50    // Write back without CAS is safe
    5851    request_queues[my_idx] = vic_queue;
    5952    return true;
  • doc/theses/colby_parsons_MMAth/version.sh

    • Property mode changed from 100755 to 100644
Note: See TracChangeset for help on using the changeset viewer.