Changeset c083c3d for doc/theses
- Timestamp:
- May 1, 2023, 6:15:26 PM (2 years ago)
- 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)
- Location:
- doc/theses
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/colby_parsons_MMAth/benchmarks/actors/data/nasus_CFA.txt
r4daf79f rc083c3d 1 1 5 2 2 1 2 4 8 16 24 32 48 3 CFA-LV CFA-NS CFA-R3 Longest-Victim No-Stealing Random 4 4 executor 5 CFA-LV:5 Longest-Victim: 6 6 proc time (s) 7 7 1 29.22 … … 45 45 48 1.20 46 46 48 1.20 47 CFA-NS:47 No-Stealing: 48 48 proc time (s) 49 49 1 28.25 … … 87 87 48 1.18 88 88 48 1.16 89 CFA-R:89 Random: 90 90 proc time (s) 91 91 1 28.58 … … 131 131 132 132 matrix 133 CFA-LV:133 Longest-Victim: 134 134 proc time (s) 135 135 1 105.48 … … 173 173 48 2.75 174 174 48 2.96 175 CFA-NS:175 No-Stealing: 176 176 proc time (s) 177 177 1 106.01 … … 215 215 48 2.78 216 216 48 2.92 217 CFA-R:217 Random: 218 218 proc time (s) 219 219 1 105.91 … … 259 259 260 260 repeat 261 CFA-LV:261 Longest-Victim: 262 262 proc time (s) 263 263 1 1.17 … … 301 301 48 13.73 302 302 48 14.55 303 CFA-NS:303 No-Stealing: 304 304 proc time (s) 305 305 1 1.15 … … 343 343 48 13.03 344 344 48 12.83 345 CFA-R:345 Random: 346 346 proc time (s) 347 347 1 1.15 … … 387 387 388 388 balance_one 389 CFA-LV:389 Longest-Victim: 390 390 proc time (s) 391 391 1 20.06 … … 429 429 48 1.11 430 430 48 1.12 431 CFA-NS:431 No-Stealing: 432 432 proc time (s) 433 433 1 20.13 … … 471 471 48 19.95 472 472 48 20.00 473 CFA-R:473 Random: 474 474 proc time (s) 475 475 1 19.92 … … 515 515 516 516 balance_multi 517 CFA-LV:517 Longest-Victim: 518 518 proc time (s) 519 519 1 8.17 … … 557 557 48 5.75 558 558 48 5.68 559 CFA-NS:559 No-Stealing: 560 560 proc time (s) 561 561 1 8.10 … … 599 599 48 9.28 600 600 48 9.26 601 CFA-R:601 Random: 602 602 proc time (s) 603 603 1 8.08 -
doc/theses/colby_parsons_MMAth/benchmarks/actors/data/pyke_CFA.txt
r4daf79f rc083c3d 1 1 5 2 2 1 2 4 8 16 24 32 48 3 CFA-LV CFA-NS CFA-R3 Longest-Victim No-Stealing Random 4 4 executor 5 CFA-LV:5 Longest-Victim: 6 6 proc time (s) 7 7 1 29.04 … … 45 45 48 2.58 46 46 48 2.55 47 CFA-NS:47 No-Stealing: 48 48 proc time (s) 49 49 1 28.15 … … 87 87 48 2.59 88 88 48 2.60 89 CFA-R:89 Random: 90 90 proc time (s) 91 91 1 29.06 … … 131 131 132 132 matrix 133 CFA-LV:133 Longest-Victim: 134 134 proc time (s) 135 135 1 127.44 … … 173 173 48 6.83 174 174 48 6.81 175 CFA-NS:175 No-Stealing: 176 176 proc time (s) 177 177 1 127.64 … … 215 215 48 6.77 216 216 48 6.74 217 CFA-R:217 Random: 218 218 proc time (s) 219 219 1 127.26 … … 259 259 260 260 repeat 261 CFA-LV:261 Longest-Victim: 262 262 proc time (s) 263 263 1 1.16 … … 301 301 48 19.75 302 302 48 19.71 303 CFA-NS:303 No-Stealing: 304 304 proc time (s) 305 305 1 1.18 … … 343 343 48 13.88 344 344 48 13.71 345 CFA-R:345 Random: 346 346 proc time (s) 347 347 1 1.18 … … 387 387 388 388 balance_one 389 CFA-LV:389 Longest-Victim: 390 390 proc time (s) 391 391 1 19.46 … … 429 429 48 2.12 430 430 48 2.17 431 CFA-NS:431 No-Stealing: 432 432 proc time (s) 433 433 1 21.00 … … 471 471 48 47.50 472 472 48 47.72 473 CFA-R:473 Random: 474 474 proc time (s) 475 475 1 20.81 … … 515 515 516 516 balance_multi 517 CFA-LV:517 Longest-Victim: 518 518 proc time (s) 519 519 1 7.94 … … 557 557 48 14.38 558 558 48 14.50 559 CFA-NS:559 No-Stealing: 560 560 proc time (s) 561 561 1 8.48 … … 599 599 48 21.50 600 600 48 21.15 601 CFA-R:601 Random: 602 602 proc time (s) 603 603 1 8.49 -
doc/theses/colby_parsons_MMAth/benchmarks/channels/plotData.py
r4daf79f rc083c3d 70 70 if currBench == Bench.Unset: 71 71 if line == "contend:": 72 name = "C ontend"72 name = "Channel Contention" 73 73 currBench = Bench.Contend 74 74 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 2 void swap( uint victim_idx, uint my_idx ) { 3 // Step 0: 6 4 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; 26 12 } 27 13 … … 35 21 36 22 bool 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 37 25 work_queue * my_queue = request_queues[my_idx]; 38 26 work_queue * vic_queue = request_queues[victim_idx]; 39 27 28 // Step 1: 40 29 // If either queue is 0p then they are in the process of being stolen 41 30 // 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; 43 32 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 46 36 if ( !CAS( &request_queues[my_idx], &my_queue, 0p ) ) 47 37 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 51 42 if ( !CAS( &request_queues[victim_idx], &vic_queue, my_queue ) ) { 52 43 request_queues[my_idx] = my_queue; // reset queue ptr back to prev val … … 54 45 } 55 46 47 // Step 4: 56 48 // 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 58 51 request_queues[my_idx] = vic_queue; 59 52 return true; -
doc/theses/colby_parsons_MMAth/version.sh
-
Property mode
changed from
100755
to100644
-
Property mode
changed from
Note:
See TracChangeset
for help on using the changeset viewer.