Changes in / [60e14fc:eac318a]
- Location:
- doc/theses/colby_parsons_MMAth/benchmarks/mutex_stmt
- Files:
-
- 4 added
- 2 deleted
- 3 edited
-
bench.h (modified) (2 diffs)
-
cfa/baseline.cfa (added)
-
cfa/order-basic.cfa (deleted)
-
cfa/order.cfa (modified) (2 diffs)
-
cfa/rand.cfa (added)
-
cpp/baseline.cc (added)
-
cpp/order-basic.cc (deleted)
-
cpp/rand.cc (added)
-
run (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/colby_parsons_MMAth/benchmarks/mutex_stmt/bench.h
r60e14fc reac318a 47 47 #endif 48 48 49 size_t threads = 1 ;49 size_t threads = 1, num_locks = -1; 50 50 51 51 #define BENCH_START() \ 52 if ( argc > 2) exit( EXIT_FAILURE ); \52 if ( argc > 3 ) exit( EXIT_FAILURE ); \ 53 53 if ( argc == 2 ) { \ 54 54 threads = atoi( argv[1] ); \ 55 } else if ( argc == 3 ) { \ 56 threads = atoi( argv[1] ); \ 57 num_locks = atoi( argv[2] ); \ 55 58 } 56 59 … … 77 80 } 78 81 #endif 82 83 // splitmix64 rand num generator 84 // https://rosettacode.org/wiki/Pseudo-random_numbers/Splitmix64 85 uint64_t state; /* The state can be seeded with any (upto) 64 bit integer value. */ 86 87 uint64_t next_int() { 88 state += 0x9e3779b97f4a7c15; /* increment the state variable */ 89 uint64_t z = state; /* copy the state to a working variable */ 90 z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9; /* xor the variable with the variable right bit shifted 30 then multiply by a constant */ 91 z = (z ^ (z >> 27)) * 0x94d049bb133111eb; /* xor the variable with the variable right bit shifted 27 then multiply by a constant */ 92 return z ^ (z >> 31); /* return the variable xored with itself right bit shifted 31 */ 93 } 94 -
doc/theses/colby_parsons_MMAth/benchmarks/mutex_stmt/cfa/order.cfa
r60e14fc reac318a 10 10 uint64_t total = 0; 11 11 thread worker {}; 12 static inline void ?{}( worker & this, cluster & clu ) { 13 ((thread &)this){ clu }; 14 } 12 15 void main( worker & w ) { 13 16 BENCH( mutex ( LOCKS ) { }, total, done ) … … 16 19 int main( int argc, char * argv[] ) { 17 20 BENCH_START() 18 processor p[threads]; // one extra for main thread 19 { 20 worker w[threads]; 21 sleep( 10`s ); 22 done = true; 23 } 21 cluster clus; 22 processor * proc[threads]; 23 for ( i; threads ) // create procs 24 (*(proc[i] = alloc())){clus}; 25 26 worker * w[threads]; 27 for ( i; threads ) // create threads 28 (*(w[i] = alloc())){ clus }; 29 30 sleep( 10`s ); 31 done = true; 32 33 for ( i; threads ) // delete threads 34 delete(w[i]); 35 36 for ( i; threads ) // delete procs 37 delete(proc[i]); 24 38 printf( "%lu\n", total ); 25 39 } -
doc/theses/colby_parsons_MMAth/benchmarks/mutex_stmt/run
r60e14fc reac318a 85 85 } 86 86 87 numtimes=1 87 numtimes=11 88 88 89 89 # locks=('-DLOCKS=L1' '-DLOCKS=L2' '-DLOCKS=L3' '-DLOCKS=L4' '-DLOCKS=L5' '-DLOCKS=L6' '-DLOCKS=L7' '-DLOCKS=L8') … … 92 92 locks=('2' '4' '8') 93 93 94 #num_threads='2 4 8 16 24 32'95 num_threads='2 4 8'94 num_threads='2 4 8 16 24 32' 95 # num_threads='2 4 8' 96 96 97 97 # toggle benchmarks 98 98 order=${true} 99 rand=${true} 100 baseline=${true} 99 101 100 102 runCFA=${true} … … 156 158 157 159 if [ ${runCFA} -eq ${true} ] ; then 158 echo -n 'CFA ' 160 if [ ${order} -eq ${true} ] ; then 161 echo -n 'CFA-order ' 162 fi 163 if [ ${baseline} -eq ${true} ] ; then 164 echo -n 'CFA-baseline ' 165 fi 166 if [ ${rand} -eq ${true} ] ; then 167 echo -n 'CFA-rand ' 168 fi 159 169 fi # done CFA 160 170 if [ ${runCPP} -eq ${true} ] ; then 161 echo -n 'CPP ' 171 if [ ${order} -eq ${true} ] ; then 172 echo -n 'CPP-order ' 173 fi 174 if [ ${baseline} -eq ${true} ] ; then 175 echo -n 'CPP-baseline ' 176 fi 177 if [ ${rand} -eq ${true} ] ; then 178 echo -n 'CPP-rand ' 179 fi 162 180 fi # done CPP 163 181 echo "" … … 174 192 175 193 run_order() { 176 echo "order locks: "${1} 194 echo "locks: "${1} 195 post_args=${1} 177 196 178 197 if [ ${runCFA} -eq ${true} ] ; then 179 198 cd cfa # CFA RUN 180 print_header 'CFA '${3}181 ${cfa} ${cfa_flags} ${2} order${3}.cfa -o a.${hostname} > /dev/null 2>&1199 print_header 'CFA-'${3} 200 ${cfa} ${cfa_flags} ${2} ${3}.cfa -o a.${hostname} > /dev/null 2>&1 182 201 run_bench 183 202 rm a.${hostname} … … 187 206 if [ ${runCPP} -eq ${true} ] ; then 188 207 cd cpp # CPP RUN 189 print_header 'CPP '${3}190 ${cpp} ${cpp_flags} ${2} order${3}.cc -o a.${hostname} > /dev/null 2>&1208 print_header 'CPP-'${3} 209 ${cpp} ${cpp_flags} ${2} ${3}.cc -o a.${hostname} > /dev/null 2>&1 191 210 run_bench 192 211 rm a.${hostname} … … 196 215 197 216 # /usr/bin/time -f "%Uu %Ss %Er %Mkb" 198 if [ ${order} -eq ${true} ] ; then 199 for i in ${!locks[@]}; do 200 run_order ${locks[$i]} ${lock_flags[$i]} '' 201 run_order ${locks[$i]} ${lock_flags[$i]} '-basic' 202 done 203 fi 204 217 218 for i in ${!locks[@]}; do 219 if [ ${order} -eq ${true} ] ; then 220 run_order ${locks[$i]} ${lock_flags[$i]} 'order' 221 fi 222 if [ ${baseline} -eq ${true} ] ; then 223 run_order ${locks[$i]} ${lock_flags[$i]} 'baseline' 224 fi 225 if [ ${rand} -eq ${true} ] ; then 226 run_order ${locks[$i]} '-DLOCKS=L8' 'rand' 227 fi 228 done 229 230
Note:
See TracChangeset
for help on using the changeset viewer.