Mercurial > cgi-bin > hgwebdir.cgi > VMS > 0__Writings > kshalle
changeset 4:01aefc2be990
HotPar 2012 with figs -- for Merten to fix up visuals of figs
line diff
1.1 Binary file 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Scheduling_states_2.png has changed
2.1 --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Scheduling_states_2.png.bb Tue Jan 03 17:02:34 2012 -0800 2.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 2.3 @@ -1,1 +0,0 @@ 2.4 -%%BoundingBox: 0 0 785.04 307.92
3.1 Binary file 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Time_in_VMS_1.png has changed
4.1 --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Time_in_VMS_1.png.bb Tue Jan 03 17:02:34 2012 -0800 4.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 4.3 @@ -1,1 +0,0 @@ 4.4 -%%BoundingBox: 0 0 660.96 253.92
5.1 Binary file 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__internal_workings.png has changed
6.1 --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__internal_workings.png.bb Tue Jan 03 17:02:34 2012 -0800 6.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 6.3 @@ -1,1 +0,0 @@ 6.4 -%%BoundingBox: 0 0 1465.44 623.76
7.1 Binary file 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__plugins.png has changed
8.1 --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__plugins.png.bb Tue Jan 03 17:02:34 2012 -0800 8.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 8.3 @@ -1,1 +0,0 @@ 8.4 -%%BoundingBox: 0 0 465.36 265.2
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 9.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/cray1_pthread_8_32_128_512thds__o30000__perfCtrs.eps Sat Jan 21 20:51:58 2012 -0800 9.3 @@ -0,0 +1,869 @@ 9.4 +%!PS-Adobe-2.0 9.5 +%%Title: 8_32_128_512thds__o30000__perfCtrs.result.eps 9.6 +%%Creator: gnuplot 4.4 patchlevel 2 9.7 +%%CreationDate: Fri Jan 20 12:05:32 2012 9.8 +%%DocumentFonts: (atend) 9.9 +%%BoundingBox: 50 50 554 770 9.10 +%%Orientation: Landscape 9.11 +%%Pages: (atend) 9.12 +%%EndComments 9.13 +%%BeginProlog 9.14 +/gnudict 256 dict def 9.15 +gnudict begin 9.16 +% 9.17 +% The following true/false flags may be edited by hand if desired. 9.18 +% The unit line width and grayscale image gamma correction may also be changed. 9.19 +% 9.20 +/Color true def 9.21 +/Blacktext false def 9.22 +/Solid false def 9.23 +/Dashlength 1 def 9.24 +/Landscape true def 9.25 +/Level1 false def 9.26 +/Rounded false def 9.27 +/ClipToBoundingBox false def 9.28 +/TransparentPatterns false def 9.29 +/gnulinewidth 5.000 def 9.30 +/userlinewidth gnulinewidth def 9.31 +/Gamma 1.0 def 9.32 +% 9.33 +/vshift -46 def 9.34 +/dl1 { 9.35 + 10.0 Dashlength mul mul 9.36 + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if 9.37 +} def 9.38 +/dl2 { 9.39 + 10.0 Dashlength mul mul 9.40 + Rounded { currentlinewidth 0.75 mul add } if 9.41 +} def 9.42 +/hpt_ 31.5 def 9.43 +/vpt_ 31.5 def 9.44 +/hpt hpt_ def 9.45 +/vpt vpt_ def 9.46 +Level1 {} { 9.47 +/SDict 10 dict def 9.48 +systemdict /pdfmark known not { 9.49 + userdict /pdfmark systemdict /cleartomark get put 9.50 +} if 9.51 +SDict begin [ 9.52 + /Title (8_32_128_512thds__o30000__perfCtrs.result.eps) 9.53 + /Subject (gnuplot plot) 9.54 + /Creator (gnuplot 4.4 patchlevel 2) 9.55 + /Author (msach) 9.56 +% /Producer (gnuplot) 9.57 +% /Keywords () 9.58 + /CreationDate (Fri Jan 20 12:05:32 2012) 9.59 + /DOCINFO pdfmark 9.60 +end 9.61 +} ifelse 9.62 +/doclip { 9.63 + ClipToBoundingBox { 9.64 + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath 9.65 + clip 9.66 + } if 9.67 +} def 9.68 +% 9.69 +% Gnuplot Prolog Version 4.4 (August 2010) 9.70 +% 9.71 +%/SuppressPDFMark true def 9.72 +% 9.73 +/M {moveto} bind def 9.74 +/L {lineto} bind def 9.75 +/R {rmoveto} bind def 9.76 +/V {rlineto} bind def 9.77 +/N {newpath moveto} bind def 9.78 +/Z {closepath} bind def 9.79 +/C {setrgbcolor} bind def 9.80 +/f {rlineto fill} bind def 9.81 +/g {setgray} bind def 9.82 +/Gshow {show} def % May be redefined later in the file to support UTF-8 9.83 +/vpt2 vpt 2 mul def 9.84 +/hpt2 hpt 2 mul def 9.85 +/Lshow {currentpoint stroke M 0 vshift R 9.86 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 9.87 +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R 9.88 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 9.89 +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 9.90 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 9.91 +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def 9.92 + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def 9.93 +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} 9.94 + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def 9.95 +/BL {stroke userlinewidth 2 mul setlinewidth 9.96 + Rounded {1 setlinejoin 1 setlinecap} if} def 9.97 +/AL {stroke userlinewidth 2 div setlinewidth 9.98 + Rounded {1 setlinejoin 1 setlinecap} if} def 9.99 +/UL {dup gnulinewidth mul /userlinewidth exch def 9.100 + dup 1 lt {pop 1} if 10 mul /udl exch def} def 9.101 +/PL {stroke userlinewidth setlinewidth 9.102 + Rounded {1 setlinejoin 1 setlinecap} if} def 9.103 +3.8 setmiterlimit 9.104 +% Default Line colors 9.105 +/LCw {1 1 1} def 9.106 +/LCb {0 0 0} def 9.107 +/LCa {0 0 0} def 9.108 +/LC0 {1 0 0} def 9.109 +/LC1 {0 1 0} def 9.110 +/LC2 {0 0 1} def 9.111 +/LC3 {1 0 1} def 9.112 +/LC4 {0 1 1} def 9.113 +/LC5 {1 1 0} def 9.114 +/LC6 {0 0 0} def 9.115 +/LC7 {1 0.3 0} def 9.116 +/LC8 {0.5 0.5 0.5} def 9.117 +% Default Line Types 9.118 +/LTw {PL [] 1 setgray} def 9.119 +/LTb {BL [] LCb DL} def 9.120 +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def 9.121 +/LT0 {PL [] LC0 DL} def 9.122 +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def 9.123 +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def 9.124 +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def 9.125 +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def 9.126 +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def 9.127 +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def 9.128 +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def 9.129 +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def 9.130 +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def 9.131 +/Dia {stroke [] 0 setdash 2 copy vpt add M 9.132 + hpt neg vpt neg V hpt vpt neg V 9.133 + hpt vpt V hpt neg vpt V closepath stroke 9.134 + Pnt} def 9.135 +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V 9.136 + currentpoint stroke M 9.137 + hpt neg vpt neg R hpt2 0 V stroke 9.138 + } def 9.139 +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 9.140 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 9.141 + hpt2 neg 0 V closepath stroke 9.142 + Pnt} def 9.143 +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M 9.144 + hpt2 vpt2 neg V currentpoint stroke M 9.145 + hpt2 neg 0 R hpt2 vpt2 V stroke} def 9.146 +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M 9.147 + hpt neg vpt -1.62 mul V 9.148 + hpt 2 mul 0 V 9.149 + hpt neg vpt 1.62 mul V closepath stroke 9.150 + Pnt} def 9.151 +/Star {2 copy Pls Crs} def 9.152 +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M 9.153 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 9.154 + hpt2 neg 0 V closepath fill} def 9.155 +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M 9.156 + hpt neg vpt -1.62 mul V 9.157 + hpt 2 mul 0 V 9.158 + hpt neg vpt 1.62 mul V closepath fill} def 9.159 +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M 9.160 + hpt neg vpt 1.62 mul V 9.161 + hpt 2 mul 0 V 9.162 + hpt neg vpt -1.62 mul V closepath stroke 9.163 + Pnt} def 9.164 +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M 9.165 + hpt neg vpt 1.62 mul V 9.166 + hpt 2 mul 0 V 9.167 + hpt neg vpt -1.62 mul V closepath fill} def 9.168 +/DiaF {stroke [] 0 setdash vpt add M 9.169 + hpt neg vpt neg V hpt vpt neg V 9.170 + hpt vpt V hpt neg vpt V closepath fill} def 9.171 +/Pent {stroke [] 0 setdash 2 copy gsave 9.172 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 9.173 + closepath stroke grestore Pnt} def 9.174 +/PentF {stroke [] 0 setdash gsave 9.175 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 9.176 + closepath fill grestore} def 9.177 +/Circle {stroke [] 0 setdash 2 copy 9.178 + hpt 0 360 arc stroke Pnt} def 9.179 +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def 9.180 +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def 9.181 +/C1 {BL [] 0 setdash 2 copy moveto 9.182 + 2 copy vpt 0 90 arc closepath fill 9.183 + vpt 0 360 arc closepath} bind def 9.184 +/C2 {BL [] 0 setdash 2 copy moveto 9.185 + 2 copy vpt 90 180 arc closepath fill 9.186 + vpt 0 360 arc closepath} bind def 9.187 +/C3 {BL [] 0 setdash 2 copy moveto 9.188 + 2 copy vpt 0 180 arc closepath fill 9.189 + vpt 0 360 arc closepath} bind def 9.190 +/C4 {BL [] 0 setdash 2 copy moveto 9.191 + 2 copy vpt 180 270 arc closepath fill 9.192 + vpt 0 360 arc closepath} bind def 9.193 +/C5 {BL [] 0 setdash 2 copy moveto 9.194 + 2 copy vpt 0 90 arc 9.195 + 2 copy moveto 9.196 + 2 copy vpt 180 270 arc closepath fill 9.197 + vpt 0 360 arc} bind def 9.198 +/C6 {BL [] 0 setdash 2 copy moveto 9.199 + 2 copy vpt 90 270 arc closepath fill 9.200 + vpt 0 360 arc closepath} bind def 9.201 +/C7 {BL [] 0 setdash 2 copy moveto 9.202 + 2 copy vpt 0 270 arc closepath fill 9.203 + vpt 0 360 arc closepath} bind def 9.204 +/C8 {BL [] 0 setdash 2 copy moveto 9.205 + 2 copy vpt 270 360 arc closepath fill 9.206 + vpt 0 360 arc closepath} bind def 9.207 +/C9 {BL [] 0 setdash 2 copy moveto 9.208 + 2 copy vpt 270 450 arc closepath fill 9.209 + vpt 0 360 arc closepath} bind def 9.210 +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 9.211 + 2 copy moveto 9.212 + 2 copy vpt 90 180 arc closepath fill 9.213 + vpt 0 360 arc closepath} bind def 9.214 +/C11 {BL [] 0 setdash 2 copy moveto 9.215 + 2 copy vpt 0 180 arc closepath fill 9.216 + 2 copy moveto 9.217 + 2 copy vpt 270 360 arc closepath fill 9.218 + vpt 0 360 arc closepath} bind def 9.219 +/C12 {BL [] 0 setdash 2 copy moveto 9.220 + 2 copy vpt 180 360 arc closepath fill 9.221 + vpt 0 360 arc closepath} bind def 9.222 +/C13 {BL [] 0 setdash 2 copy moveto 9.223 + 2 copy vpt 0 90 arc closepath fill 9.224 + 2 copy moveto 9.225 + 2 copy vpt 180 360 arc closepath fill 9.226 + vpt 0 360 arc closepath} bind def 9.227 +/C14 {BL [] 0 setdash 2 copy moveto 9.228 + 2 copy vpt 90 360 arc closepath fill 9.229 + vpt 0 360 arc} bind def 9.230 +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill 9.231 + vpt 0 360 arc closepath} bind def 9.232 +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto 9.233 + neg 0 rlineto closepath} bind def 9.234 +/Square {dup Rec} bind def 9.235 +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def 9.236 +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def 9.237 +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def 9.238 +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 9.239 +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def 9.240 +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 9.241 +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill 9.242 + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 9.243 +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def 9.244 +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 9.245 + 2 copy vpt Square fill Bsquare} bind def 9.246 +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def 9.247 +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def 9.248 +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill 9.249 + Bsquare} bind def 9.250 +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill 9.251 + Bsquare} bind def 9.252 +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def 9.253 +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 9.254 + 2 copy vpt Square fill Bsquare} bind def 9.255 +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 9.256 + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 9.257 +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def 9.258 +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def 9.259 +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def 9.260 +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def 9.261 +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def 9.262 +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def 9.263 +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def 9.264 +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def 9.265 +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def 9.266 +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def 9.267 +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def 9.268 +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def 9.269 +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def 9.270 +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def 9.271 +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def 9.272 +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def 9.273 +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def 9.274 +/DiaE {stroke [] 0 setdash vpt add M 9.275 + hpt neg vpt neg V hpt vpt neg V 9.276 + hpt vpt V hpt neg vpt V closepath stroke} def 9.277 +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M 9.278 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 9.279 + hpt2 neg 0 V closepath stroke} def 9.280 +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M 9.281 + hpt neg vpt -1.62 mul V 9.282 + hpt 2 mul 0 V 9.283 + hpt neg vpt 1.62 mul V closepath stroke} def 9.284 +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M 9.285 + hpt neg vpt 1.62 mul V 9.286 + hpt 2 mul 0 V 9.287 + hpt neg vpt -1.62 mul V closepath stroke} def 9.288 +/PentE {stroke [] 0 setdash gsave 9.289 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 9.290 + closepath stroke grestore} def 9.291 +/CircE {stroke [] 0 setdash 9.292 + hpt 0 360 arc stroke} def 9.293 +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def 9.294 +/DiaW {stroke [] 0 setdash vpt add M 9.295 + hpt neg vpt neg V hpt vpt neg V 9.296 + hpt vpt V hpt neg vpt V Opaque stroke} def 9.297 +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M 9.298 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 9.299 + hpt2 neg 0 V Opaque stroke} def 9.300 +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M 9.301 + hpt neg vpt -1.62 mul V 9.302 + hpt 2 mul 0 V 9.303 + hpt neg vpt 1.62 mul V Opaque stroke} def 9.304 +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M 9.305 + hpt neg vpt 1.62 mul V 9.306 + hpt 2 mul 0 V 9.307 + hpt neg vpt -1.62 mul V Opaque stroke} def 9.308 +/PentW {stroke [] 0 setdash gsave 9.309 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 9.310 + Opaque stroke grestore} def 9.311 +/CircW {stroke [] 0 setdash 9.312 + hpt 0 360 arc Opaque stroke} def 9.313 +/BoxFill {gsave Rec 1 setgray fill grestore} def 9.314 +/Density { 9.315 + /Fillden exch def 9.316 + currentrgbcolor 9.317 + /ColB exch def /ColG exch def /ColR exch def 9.318 + /ColR ColR Fillden mul Fillden sub 1 add def 9.319 + /ColG ColG Fillden mul Fillden sub 1 add def 9.320 + /ColB ColB Fillden mul Fillden sub 1 add def 9.321 + ColR ColG ColB setrgbcolor} def 9.322 +/BoxColFill {gsave Rec PolyFill} def 9.323 +/PolyFill {gsave Density fill grestore grestore} def 9.324 +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def 9.325 +% 9.326 +% PostScript Level 1 Pattern Fill routine for rectangles 9.327 +% Usage: x y w h s a XX PatternFill 9.328 +% x,y = lower left corner of box to be filled 9.329 +% w,h = width and height of box 9.330 +% a = angle in degrees between lines and x-axis 9.331 +% XX = 0/1 for no/yes cross-hatch 9.332 +% 9.333 +/PatternFill {gsave /PFa [ 9 2 roll ] def 9.334 + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate 9.335 + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec 9.336 + gsave 1 setgray fill grestore clip 9.337 + currentlinewidth 0.5 mul setlinewidth 9.338 + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 9.339 + 0 0 M PFa 5 get rotate PFs -2 div dup translate 9.340 + 0 1 PFs PFa 4 get div 1 add floor cvi 9.341 + {PFa 4 get mul 0 M 0 PFs V} for 9.342 + 0 PFa 6 get ne { 9.343 + 0 1 PFs PFa 4 get div 1 add floor cvi 9.344 + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for 9.345 + } if 9.346 + stroke grestore} def 9.347 +% 9.348 +/languagelevel where 9.349 + {pop languagelevel} {1} ifelse 9.350 + 2 lt 9.351 + {/InterpretLevel1 true def} 9.352 + {/InterpretLevel1 Level1 def} 9.353 + ifelse 9.354 +% 9.355 +% PostScript level 2 pattern fill definitions 9.356 +% 9.357 +/Level2PatternFill { 9.358 +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} 9.359 + bind def 9.360 +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def 9.361 +<< Tile8x8 9.362 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 9.363 +>> matrix makepattern 9.364 +/Pat1 exch def 9.365 +<< Tile8x8 9.366 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke 9.367 + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} 9.368 +>> matrix makepattern 9.369 +/Pat2 exch def 9.370 +<< Tile8x8 9.371 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L 9.372 + 8 8 L 8 0 L 0 0 L fill} 9.373 +>> matrix makepattern 9.374 +/Pat3 exch def 9.375 +<< Tile8x8 9.376 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L 9.377 + 0 12 M 12 0 L stroke} 9.378 +>> matrix makepattern 9.379 +/Pat4 exch def 9.380 +<< Tile8x8 9.381 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L 9.382 + 0 -4 M 12 8 L stroke} 9.383 +>> matrix makepattern 9.384 +/Pat5 exch def 9.385 +<< Tile8x8 9.386 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L 9.387 + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} 9.388 +>> matrix makepattern 9.389 +/Pat6 exch def 9.390 +<< Tile8x8 9.391 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L 9.392 + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} 9.393 +>> matrix makepattern 9.394 +/Pat7 exch def 9.395 +<< Tile8x8 9.396 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L 9.397 + 12 0 M -4 8 L 12 4 M 0 10 L stroke} 9.398 +>> matrix makepattern 9.399 +/Pat8 exch def 9.400 +<< Tile8x8 9.401 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L 9.402 + -4 0 M 12 8 L -4 4 M 8 10 L stroke} 9.403 +>> matrix makepattern 9.404 +/Pat9 exch def 9.405 +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def 9.406 +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def 9.407 +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def 9.408 +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def 9.409 +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def 9.410 +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def 9.411 +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def 9.412 +} def 9.413 +% 9.414 +% 9.415 +%End of PostScript Level 2 code 9.416 +% 9.417 +/PatternBgnd { 9.418 + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse 9.419 +} def 9.420 +% 9.421 +% Substitute for Level 2 pattern fill codes with 9.422 +% grayscale if Level 2 support is not selected. 9.423 +% 9.424 +/Level1PatternFill { 9.425 +/Pattern1 {0.250 Density} bind def 9.426 +/Pattern2 {0.500 Density} bind def 9.427 +/Pattern3 {0.750 Density} bind def 9.428 +/Pattern4 {0.125 Density} bind def 9.429 +/Pattern5 {0.375 Density} bind def 9.430 +/Pattern6 {0.625 Density} bind def 9.431 +/Pattern7 {0.875 Density} bind def 9.432 +} def 9.433 +% 9.434 +% Now test for support of Level 2 code 9.435 +% 9.436 +Level1 {Level1PatternFill} {Level2PatternFill} ifelse 9.437 +% 9.438 +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont 9.439 +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall 9.440 +currentdict end definefont pop 9.441 +/MFshow { 9.442 + { dup 5 get 3 ge 9.443 + { 5 get 3 eq {gsave} {grestore} ifelse } 9.444 + {dup dup 0 get findfont exch 1 get scalefont setfont 9.445 + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 9.446 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq 9.447 + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 9.448 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div 9.449 + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get 9.450 + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop 9.451 + pop aload pop M} ifelse }ifelse }ifelse } 9.452 + ifelse } 9.453 + forall} def 9.454 +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def 9.455 +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } 9.456 + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont 9.457 + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def 9.458 +/MLshow { currentpoint stroke M 9.459 + 0 exch R 9.460 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 9.461 +/MRshow { currentpoint stroke M 9.462 + exch dup MFwidth neg 3 -1 roll R 9.463 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 9.464 +/MCshow { currentpoint stroke M 9.465 + exch dup MFwidth -2 div 3 -1 roll R 9.466 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 9.467 +/XYsave { [( ) 1 2 true false 3 ()] } bind def 9.468 +/XYrestore { [( ) 1 2 true false 4 ()] } bind def 9.469 +end 9.470 +%%EndProlog 9.471 +%%Page: 1 1 9.472 +gnudict begin 9.473 +gsave 9.474 +doclip 9.475 +50 50 translate 9.476 +0.100 0.100 scale 9.477 +90 rotate 9.478 +0 -5040 translate 9.479 +0 setgray 9.480 +newpath 9.481 +(Helvetica) findfont 140 scalefont setfont 9.482 +1.000 UL 9.483 +LTb 9.484 +518 448 M 9.485 +63 0 V 9.486 +6366 0 R 9.487 +-63 0 V 9.488 +stroke 9.489 +434 448 M 9.490 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] 9.491 +] -46.7 MRshow 9.492 +1.000 UL 9.493 +LTb 9.494 +518 1044 M 9.495 +63 0 V 9.496 +6366 0 R 9.497 +-63 0 V 9.498 +stroke 9.499 +434 1044 M 9.500 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] 9.501 +] -46.7 MRshow 9.502 +1.000 UL 9.503 +LTb 9.504 +518 1640 M 9.505 +63 0 V 9.506 +6366 0 R 9.507 +-63 0 V 9.508 +stroke 9.509 +434 1640 M 9.510 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] 9.511 +] -46.7 MRshow 9.512 +1.000 UL 9.513 +LTb 9.514 +518 2236 M 9.515 +63 0 V 9.516 +6366 0 R 9.517 +-63 0 V 9.518 +stroke 9.519 +434 2236 M 9.520 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] 9.521 +] -46.7 MRshow 9.522 +1.000 UL 9.523 +LTb 9.524 +518 2831 M 9.525 +63 0 V 9.526 +6366 0 R 9.527 +-63 0 V 9.528 +stroke 9.529 +434 2831 M 9.530 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] 9.531 +] -46.7 MRshow 9.532 +1.000 UL 9.533 +LTb 9.534 +518 3427 M 9.535 +63 0 V 9.536 +6366 0 R 9.537 +-63 0 V 9.538 +stroke 9.539 +434 3427 M 9.540 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] 9.541 +] -46.7 MRshow 9.542 +1.000 UL 9.543 +LTb 9.544 +518 4023 M 9.545 +63 0 V 9.546 +6366 0 R 9.547 +-63 0 V 9.548 +stroke 9.549 +434 4023 M 9.550 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] 9.551 +] -46.7 MRshow 9.552 +1.000 UL 9.553 +LTb 9.554 +518 4619 M 9.555 +63 0 V 9.556 +6366 0 R 9.557 +-63 0 V 9.558 +stroke 9.559 +434 4619 M 9.560 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] 9.561 +] -46.7 MRshow 9.562 +1.000 UL 9.563 +LTb 9.564 +518 448 M 9.565 +0 63 V 9.566 +0 4108 R 9.567 +0 -63 V 9.568 +stroke 9.569 +518 308 M 9.570 +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] 9.571 +] -46.7 MCshow 9.572 +1.000 UL 9.573 +LTb 9.574 +1322 448 M 9.575 +0 63 V 9.576 +0 4108 R 9.577 +0 -63 V 9.578 +stroke 9.579 +1322 308 M 9.580 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] 9.581 +] -46.7 MCshow 9.582 +1.000 UL 9.583 +LTb 9.584 +2125 448 M 9.585 +0 63 V 9.586 +0 4108 R 9.587 +0 -63 V 9.588 +stroke 9.589 +2125 308 M 9.590 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] 9.591 +] -46.7 MCshow 9.592 +1.000 UL 9.593 +LTb 9.594 +2929 448 M 9.595 +0 63 V 9.596 +0 4108 R 9.597 +0 -63 V 9.598 +stroke 9.599 +2929 308 M 9.600 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] 9.601 +] -46.7 MCshow 9.602 +1.000 UL 9.603 +LTb 9.604 +3733 448 M 9.605 +0 63 V 9.606 +0 4108 R 9.607 +0 -63 V 9.608 +stroke 9.609 +3733 308 M 9.610 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] 9.611 +] -46.7 MCshow 9.612 +1.000 UL 9.613 +LTb 9.614 +4536 448 M 9.615 +0 63 V 9.616 +0 4108 R 9.617 +0 -63 V 9.618 +stroke 9.619 +4536 308 M 9.620 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] 9.621 +] -46.7 MCshow 9.622 +1.000 UL 9.623 +LTb 9.624 +5340 448 M 9.625 +0 63 V 9.626 +0 4108 R 9.627 +0 -63 V 9.628 +stroke 9.629 +5340 308 M 9.630 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] 9.631 +] -46.7 MCshow 9.632 +1.000 UL 9.633 +LTb 9.634 +6143 448 M 9.635 +0 63 V 9.636 +0 4108 R 9.637 +0 -63 V 9.638 +stroke 9.639 +6143 308 M 9.640 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] 9.641 +] -46.7 MCshow 9.642 +1.000 UL 9.643 +LTb 9.644 +6947 448 M 9.645 +0 63 V 9.646 +0 4108 R 9.647 +0 -63 V 9.648 +stroke 9.649 +6947 308 M 9.650 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] 9.651 +] -46.7 MCshow 9.652 +1.000 UL 9.653 +LTb 9.654 +1.000 UL 9.655 +LTb 9.656 +518 4619 N 9.657 +518 448 L 9.658 +6429 0 V 9.659 +0 4171 V 9.660 +-6429 0 V 9.661 +Z stroke 9.662 +LCb setrgbcolor 9.663 +112 2533 M 9.664 +currentpoint gsave translate -270 rotate 0 0 moveto 9.665 +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] 9.666 +] -46.7 MCshow 9.667 +grestore 9.668 +LTb 9.669 +LCb setrgbcolor 9.670 +3732 98 M 9.671 +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] 9.672 +] -46.7 MCshow 9.673 +LTb 9.674 +3732 4829 M 9.675 +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads on 1 socket by 2 core Conroe 3GHz)] 9.676 +] -46.7 MCshow 9.677 +1.000 UP 9.678 +1.000 UL 9.679 +LTb 9.680 +1.000 UL 9.681 +LTb 9.682 +5372 3996 N 9.683 +0 560 V 9.684 +1491 0 V 9.685 +0 -560 V 9.686 +-1491 0 V 9.687 +Z stroke 9.688 +5372 4556 M 9.689 +1491 0 V 9.690 +% Begin plot #1 9.691 +stroke 9.692 +LT1 9.693 +LCa setrgbcolor 9.694 +518 1044 M 9.695 +65 0 V 9.696 +65 0 V 9.697 +65 0 V 9.698 +65 0 V 9.699 +65 0 V 9.700 +65 0 V 9.701 +65 0 V 9.702 +65 0 V 9.703 +64 0 V 9.704 +65 0 V 9.705 +65 0 V 9.706 +65 0 V 9.707 +65 0 V 9.708 +65 0 V 9.709 +65 0 V 9.710 +65 0 V 9.711 +65 0 V 9.712 +65 0 V 9.713 +65 0 V 9.714 +65 0 V 9.715 +65 0 V 9.716 +65 0 V 9.717 +65 0 V 9.718 +65 0 V 9.719 +64 0 V 9.720 +65 0 V 9.721 +65 0 V 9.722 +65 0 V 9.723 +65 0 V 9.724 +65 0 V 9.725 +65 0 V 9.726 +65 0 V 9.727 +65 0 V 9.728 +65 0 V 9.729 +65 0 V 9.730 +65 0 V 9.731 +65 0 V 9.732 +65 0 V 9.733 +65 0 V 9.734 +65 0 V 9.735 +65 0 V 9.736 +64 0 V 9.737 +65 0 V 9.738 +65 0 V 9.739 +65 0 V 9.740 +65 0 V 9.741 +65 0 V 9.742 +65 0 V 9.743 +65 0 V 9.744 +65 0 V 9.745 +65 0 V 9.746 +65 0 V 9.747 +65 0 V 9.748 +65 0 V 9.749 +65 0 V 9.750 +65 0 V 9.751 +65 0 V 9.752 +64 0 V 9.753 +65 0 V 9.754 +65 0 V 9.755 +65 0 V 9.756 +65 0 V 9.757 +65 0 V 9.758 +65 0 V 9.759 +65 0 V 9.760 +65 0 V 9.761 +65 0 V 9.762 +65 0 V 9.763 +65 0 V 9.764 +65 0 V 9.765 +65 0 V 9.766 +65 0 V 9.767 +65 0 V 9.768 +65 0 V 9.769 +64 0 V 9.770 +65 0 V 9.771 +65 0 V 9.772 +65 0 V 9.773 +65 0 V 9.774 +65 0 V 9.775 +65 0 V 9.776 +65 0 V 9.777 +65 0 V 9.778 +65 0 V 9.779 +65 0 V 9.780 +65 0 V 9.781 +65 0 V 9.782 +65 0 V 9.783 +65 0 V 9.784 +65 0 V 9.785 +64 0 V 9.786 +65 0 V 9.787 +65 0 V 9.788 +65 0 V 9.789 +65 0 V 9.790 +65 0 V 9.791 +65 0 V 9.792 +65 0 V 9.793 +65 0 V 9.794 +% End plot #1 9.795 +% Begin plot #2 9.796 +stroke 9.797 +2.000 UL 9.798 +LT1 9.799 +LCb setrgbcolor 9.800 +6296 4486 M 9.801 +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] 9.802 +] -46.7 MRshow 9.803 +LT1 9.804 +6380 4486 M 9.805 +399 0 V 9.806 +931 4619 M 9.807 +1115 3257 L 9.808 +1578 2025 L 9.809 +900 -734 V 9.810 +4278 883 L 9.811 +6947 724 L 9.812 +% End plot #2 9.813 +% Begin plot #3 9.814 +stroke 9.815 +LT2 9.816 +LCb setrgbcolor 9.817 +6296 4346 M 9.818 +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] 9.819 +] -46.7 MRshow 9.820 +LT2 9.821 +6380 4346 M 9.822 +399 0 V 9.823 +1553 4619 M 9.824 +27 -185 V 9.825 +2487 2594 L 9.826 +4283 1564 L 9.827 +6947 1159 L 9.828 +% End plot #3 9.829 +% Begin plot #4 9.830 +stroke 9.831 +LT3 9.832 +LCb setrgbcolor 9.833 +6296 4206 M 9.834 +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] 9.835 +] -46.7 MRshow 9.836 +LT3 9.837 +6380 4206 M 9.838 +399 0 V 9.839 +4123 4619 M 9.840 +175 -334 V 9.841 +6947 2919 L 9.842 +% End plot #4 9.843 +% Begin plot #5 9.844 +stroke 9.845 +LT4 9.846 +LCb setrgbcolor 9.847 +6296 4066 M 9.848 +[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] 9.849 +] -46.7 MRshow 9.850 +LT4 9.851 +6380 4066 M 9.852 +399 0 V 9.853 +% End plot #5 9.854 +stroke 9.855 +1.000 UL 9.856 +LTb 9.857 +518 4619 N 9.858 +518 448 L 9.859 +6429 0 V 9.860 +0 4171 V 9.861 +-6429 0 V 9.862 +Z stroke 9.863 +1.000 UP 9.864 +1.000 UL 9.865 +LTb 9.866 +stroke 9.867 +grestore 9.868 +end 9.869 +showpage 9.870 +%%Trailer 9.871 +%%DocumentFonts: Helvetica 9.872 +%%Pages: 1
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 10.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/cray1_vthread_8_32_128_512thds__o30000__perfCtrs.eps Sat Jan 21 20:51:58 2012 -0800 10.3 @@ -0,0 +1,891 @@ 10.4 +%!PS-Adobe-2.0 10.5 +%%Title: 8_32_128_512thds__o30000__perfCtrs.result.eps 10.6 +%%Creator: gnuplot 4.4 patchlevel 2 10.7 +%%CreationDate: Fri Jan 20 12:07:01 2012 10.8 +%%DocumentFonts: (atend) 10.9 +%%BoundingBox: 50 50 554 770 10.10 +%%Orientation: Landscape 10.11 +%%Pages: (atend) 10.12 +%%EndComments 10.13 +%%BeginProlog 10.14 +/gnudict 256 dict def 10.15 +gnudict begin 10.16 +% 10.17 +% The following true/false flags may be edited by hand if desired. 10.18 +% The unit line width and grayscale image gamma correction may also be changed. 10.19 +% 10.20 +/Color true def 10.21 +/Blacktext false def 10.22 +/Solid false def 10.23 +/Dashlength 1 def 10.24 +/Landscape true def 10.25 +/Level1 false def 10.26 +/Rounded false def 10.27 +/ClipToBoundingBox false def 10.28 +/TransparentPatterns false def 10.29 +/gnulinewidth 5.000 def 10.30 +/userlinewidth gnulinewidth def 10.31 +/Gamma 1.0 def 10.32 +% 10.33 +/vshift -46 def 10.34 +/dl1 { 10.35 + 10.0 Dashlength mul mul 10.36 + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if 10.37 +} def 10.38 +/dl2 { 10.39 + 10.0 Dashlength mul mul 10.40 + Rounded { currentlinewidth 0.75 mul add } if 10.41 +} def 10.42 +/hpt_ 31.5 def 10.43 +/vpt_ 31.5 def 10.44 +/hpt hpt_ def 10.45 +/vpt vpt_ def 10.46 +Level1 {} { 10.47 +/SDict 10 dict def 10.48 +systemdict /pdfmark known not { 10.49 + userdict /pdfmark systemdict /cleartomark get put 10.50 +} if 10.51 +SDict begin [ 10.52 + /Title (8_32_128_512thds__o30000__perfCtrs.result.eps) 10.53 + /Subject (gnuplot plot) 10.54 + /Creator (gnuplot 4.4 patchlevel 2) 10.55 + /Author (msach) 10.56 +% /Producer (gnuplot) 10.57 +% /Keywords () 10.58 + /CreationDate (Fri Jan 20 12:07:01 2012) 10.59 + /DOCINFO pdfmark 10.60 +end 10.61 +} ifelse 10.62 +/doclip { 10.63 + ClipToBoundingBox { 10.64 + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath 10.65 + clip 10.66 + } if 10.67 +} def 10.68 +% 10.69 +% Gnuplot Prolog Version 4.4 (August 2010) 10.70 +% 10.71 +%/SuppressPDFMark true def 10.72 +% 10.73 +/M {moveto} bind def 10.74 +/L {lineto} bind def 10.75 +/R {rmoveto} bind def 10.76 +/V {rlineto} bind def 10.77 +/N {newpath moveto} bind def 10.78 +/Z {closepath} bind def 10.79 +/C {setrgbcolor} bind def 10.80 +/f {rlineto fill} bind def 10.81 +/g {setgray} bind def 10.82 +/Gshow {show} def % May be redefined later in the file to support UTF-8 10.83 +/vpt2 vpt 2 mul def 10.84 +/hpt2 hpt 2 mul def 10.85 +/Lshow {currentpoint stroke M 0 vshift R 10.86 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 10.87 +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R 10.88 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 10.89 +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 10.90 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 10.91 +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def 10.92 + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def 10.93 +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} 10.94 + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def 10.95 +/BL {stroke userlinewidth 2 mul setlinewidth 10.96 + Rounded {1 setlinejoin 1 setlinecap} if} def 10.97 +/AL {stroke userlinewidth 2 div setlinewidth 10.98 + Rounded {1 setlinejoin 1 setlinecap} if} def 10.99 +/UL {dup gnulinewidth mul /userlinewidth exch def 10.100 + dup 1 lt {pop 1} if 10 mul /udl exch def} def 10.101 +/PL {stroke userlinewidth setlinewidth 10.102 + Rounded {1 setlinejoin 1 setlinecap} if} def 10.103 +3.8 setmiterlimit 10.104 +% Default Line colors 10.105 +/LCw {1 1 1} def 10.106 +/LCb {0 0 0} def 10.107 +/LCa {0 0 0} def 10.108 +/LC0 {1 0 0} def 10.109 +/LC1 {0 1 0} def 10.110 +/LC2 {0 0 1} def 10.111 +/LC3 {1 0 1} def 10.112 +/LC4 {0 1 1} def 10.113 +/LC5 {1 1 0} def 10.114 +/LC6 {0 0 0} def 10.115 +/LC7 {1 0.3 0} def 10.116 +/LC8 {0.5 0.5 0.5} def 10.117 +% Default Line Types 10.118 +/LTw {PL [] 1 setgray} def 10.119 +/LTb {BL [] LCb DL} def 10.120 +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def 10.121 +/LT0 {PL [] LC0 DL} def 10.122 +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def 10.123 +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def 10.124 +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def 10.125 +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def 10.126 +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def 10.127 +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def 10.128 +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def 10.129 +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def 10.130 +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def 10.131 +/Dia {stroke [] 0 setdash 2 copy vpt add M 10.132 + hpt neg vpt neg V hpt vpt neg V 10.133 + hpt vpt V hpt neg vpt V closepath stroke 10.134 + Pnt} def 10.135 +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V 10.136 + currentpoint stroke M 10.137 + hpt neg vpt neg R hpt2 0 V stroke 10.138 + } def 10.139 +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 10.140 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 10.141 + hpt2 neg 0 V closepath stroke 10.142 + Pnt} def 10.143 +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M 10.144 + hpt2 vpt2 neg V currentpoint stroke M 10.145 + hpt2 neg 0 R hpt2 vpt2 V stroke} def 10.146 +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M 10.147 + hpt neg vpt -1.62 mul V 10.148 + hpt 2 mul 0 V 10.149 + hpt neg vpt 1.62 mul V closepath stroke 10.150 + Pnt} def 10.151 +/Star {2 copy Pls Crs} def 10.152 +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M 10.153 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 10.154 + hpt2 neg 0 V closepath fill} def 10.155 +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M 10.156 + hpt neg vpt -1.62 mul V 10.157 + hpt 2 mul 0 V 10.158 + hpt neg vpt 1.62 mul V closepath fill} def 10.159 +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M 10.160 + hpt neg vpt 1.62 mul V 10.161 + hpt 2 mul 0 V 10.162 + hpt neg vpt -1.62 mul V closepath stroke 10.163 + Pnt} def 10.164 +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M 10.165 + hpt neg vpt 1.62 mul V 10.166 + hpt 2 mul 0 V 10.167 + hpt neg vpt -1.62 mul V closepath fill} def 10.168 +/DiaF {stroke [] 0 setdash vpt add M 10.169 + hpt neg vpt neg V hpt vpt neg V 10.170 + hpt vpt V hpt neg vpt V closepath fill} def 10.171 +/Pent {stroke [] 0 setdash 2 copy gsave 10.172 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 10.173 + closepath stroke grestore Pnt} def 10.174 +/PentF {stroke [] 0 setdash gsave 10.175 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 10.176 + closepath fill grestore} def 10.177 +/Circle {stroke [] 0 setdash 2 copy 10.178 + hpt 0 360 arc stroke Pnt} def 10.179 +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def 10.180 +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def 10.181 +/C1 {BL [] 0 setdash 2 copy moveto 10.182 + 2 copy vpt 0 90 arc closepath fill 10.183 + vpt 0 360 arc closepath} bind def 10.184 +/C2 {BL [] 0 setdash 2 copy moveto 10.185 + 2 copy vpt 90 180 arc closepath fill 10.186 + vpt 0 360 arc closepath} bind def 10.187 +/C3 {BL [] 0 setdash 2 copy moveto 10.188 + 2 copy vpt 0 180 arc closepath fill 10.189 + vpt 0 360 arc closepath} bind def 10.190 +/C4 {BL [] 0 setdash 2 copy moveto 10.191 + 2 copy vpt 180 270 arc closepath fill 10.192 + vpt 0 360 arc closepath} bind def 10.193 +/C5 {BL [] 0 setdash 2 copy moveto 10.194 + 2 copy vpt 0 90 arc 10.195 + 2 copy moveto 10.196 + 2 copy vpt 180 270 arc closepath fill 10.197 + vpt 0 360 arc} bind def 10.198 +/C6 {BL [] 0 setdash 2 copy moveto 10.199 + 2 copy vpt 90 270 arc closepath fill 10.200 + vpt 0 360 arc closepath} bind def 10.201 +/C7 {BL [] 0 setdash 2 copy moveto 10.202 + 2 copy vpt 0 270 arc closepath fill 10.203 + vpt 0 360 arc closepath} bind def 10.204 +/C8 {BL [] 0 setdash 2 copy moveto 10.205 + 2 copy vpt 270 360 arc closepath fill 10.206 + vpt 0 360 arc closepath} bind def 10.207 +/C9 {BL [] 0 setdash 2 copy moveto 10.208 + 2 copy vpt 270 450 arc closepath fill 10.209 + vpt 0 360 arc closepath} bind def 10.210 +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 10.211 + 2 copy moveto 10.212 + 2 copy vpt 90 180 arc closepath fill 10.213 + vpt 0 360 arc closepath} bind def 10.214 +/C11 {BL [] 0 setdash 2 copy moveto 10.215 + 2 copy vpt 0 180 arc closepath fill 10.216 + 2 copy moveto 10.217 + 2 copy vpt 270 360 arc closepath fill 10.218 + vpt 0 360 arc closepath} bind def 10.219 +/C12 {BL [] 0 setdash 2 copy moveto 10.220 + 2 copy vpt 180 360 arc closepath fill 10.221 + vpt 0 360 arc closepath} bind def 10.222 +/C13 {BL [] 0 setdash 2 copy moveto 10.223 + 2 copy vpt 0 90 arc closepath fill 10.224 + 2 copy moveto 10.225 + 2 copy vpt 180 360 arc closepath fill 10.226 + vpt 0 360 arc closepath} bind def 10.227 +/C14 {BL [] 0 setdash 2 copy moveto 10.228 + 2 copy vpt 90 360 arc closepath fill 10.229 + vpt 0 360 arc} bind def 10.230 +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill 10.231 + vpt 0 360 arc closepath} bind def 10.232 +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto 10.233 + neg 0 rlineto closepath} bind def 10.234 +/Square {dup Rec} bind def 10.235 +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def 10.236 +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def 10.237 +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def 10.238 +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 10.239 +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def 10.240 +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 10.241 +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill 10.242 + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 10.243 +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def 10.244 +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 10.245 + 2 copy vpt Square fill Bsquare} bind def 10.246 +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def 10.247 +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def 10.248 +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill 10.249 + Bsquare} bind def 10.250 +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill 10.251 + Bsquare} bind def 10.252 +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def 10.253 +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 10.254 + 2 copy vpt Square fill Bsquare} bind def 10.255 +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 10.256 + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 10.257 +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def 10.258 +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def 10.259 +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def 10.260 +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def 10.261 +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def 10.262 +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def 10.263 +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def 10.264 +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def 10.265 +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def 10.266 +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def 10.267 +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def 10.268 +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def 10.269 +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def 10.270 +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def 10.271 +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def 10.272 +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def 10.273 +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def 10.274 +/DiaE {stroke [] 0 setdash vpt add M 10.275 + hpt neg vpt neg V hpt vpt neg V 10.276 + hpt vpt V hpt neg vpt V closepath stroke} def 10.277 +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M 10.278 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 10.279 + hpt2 neg 0 V closepath stroke} def 10.280 +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M 10.281 + hpt neg vpt -1.62 mul V 10.282 + hpt 2 mul 0 V 10.283 + hpt neg vpt 1.62 mul V closepath stroke} def 10.284 +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M 10.285 + hpt neg vpt 1.62 mul V 10.286 + hpt 2 mul 0 V 10.287 + hpt neg vpt -1.62 mul V closepath stroke} def 10.288 +/PentE {stroke [] 0 setdash gsave 10.289 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 10.290 + closepath stroke grestore} def 10.291 +/CircE {stroke [] 0 setdash 10.292 + hpt 0 360 arc stroke} def 10.293 +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def 10.294 +/DiaW {stroke [] 0 setdash vpt add M 10.295 + hpt neg vpt neg V hpt vpt neg V 10.296 + hpt vpt V hpt neg vpt V Opaque stroke} def 10.297 +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M 10.298 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 10.299 + hpt2 neg 0 V Opaque stroke} def 10.300 +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M 10.301 + hpt neg vpt -1.62 mul V 10.302 + hpt 2 mul 0 V 10.303 + hpt neg vpt 1.62 mul V Opaque stroke} def 10.304 +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M 10.305 + hpt neg vpt 1.62 mul V 10.306 + hpt 2 mul 0 V 10.307 + hpt neg vpt -1.62 mul V Opaque stroke} def 10.308 +/PentW {stroke [] 0 setdash gsave 10.309 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 10.310 + Opaque stroke grestore} def 10.311 +/CircW {stroke [] 0 setdash 10.312 + hpt 0 360 arc Opaque stroke} def 10.313 +/BoxFill {gsave Rec 1 setgray fill grestore} def 10.314 +/Density { 10.315 + /Fillden exch def 10.316 + currentrgbcolor 10.317 + /ColB exch def /ColG exch def /ColR exch def 10.318 + /ColR ColR Fillden mul Fillden sub 1 add def 10.319 + /ColG ColG Fillden mul Fillden sub 1 add def 10.320 + /ColB ColB Fillden mul Fillden sub 1 add def 10.321 + ColR ColG ColB setrgbcolor} def 10.322 +/BoxColFill {gsave Rec PolyFill} def 10.323 +/PolyFill {gsave Density fill grestore grestore} def 10.324 +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def 10.325 +% 10.326 +% PostScript Level 1 Pattern Fill routine for rectangles 10.327 +% Usage: x y w h s a XX PatternFill 10.328 +% x,y = lower left corner of box to be filled 10.329 +% w,h = width and height of box 10.330 +% a = angle in degrees between lines and x-axis 10.331 +% XX = 0/1 for no/yes cross-hatch 10.332 +% 10.333 +/PatternFill {gsave /PFa [ 9 2 roll ] def 10.334 + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate 10.335 + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec 10.336 + gsave 1 setgray fill grestore clip 10.337 + currentlinewidth 0.5 mul setlinewidth 10.338 + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 10.339 + 0 0 M PFa 5 get rotate PFs -2 div dup translate 10.340 + 0 1 PFs PFa 4 get div 1 add floor cvi 10.341 + {PFa 4 get mul 0 M 0 PFs V} for 10.342 + 0 PFa 6 get ne { 10.343 + 0 1 PFs PFa 4 get div 1 add floor cvi 10.344 + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for 10.345 + } if 10.346 + stroke grestore} def 10.347 +% 10.348 +/languagelevel where 10.349 + {pop languagelevel} {1} ifelse 10.350 + 2 lt 10.351 + {/InterpretLevel1 true def} 10.352 + {/InterpretLevel1 Level1 def} 10.353 + ifelse 10.354 +% 10.355 +% PostScript level 2 pattern fill definitions 10.356 +% 10.357 +/Level2PatternFill { 10.358 +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} 10.359 + bind def 10.360 +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def 10.361 +<< Tile8x8 10.362 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 10.363 +>> matrix makepattern 10.364 +/Pat1 exch def 10.365 +<< Tile8x8 10.366 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke 10.367 + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} 10.368 +>> matrix makepattern 10.369 +/Pat2 exch def 10.370 +<< Tile8x8 10.371 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L 10.372 + 8 8 L 8 0 L 0 0 L fill} 10.373 +>> matrix makepattern 10.374 +/Pat3 exch def 10.375 +<< Tile8x8 10.376 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L 10.377 + 0 12 M 12 0 L stroke} 10.378 +>> matrix makepattern 10.379 +/Pat4 exch def 10.380 +<< Tile8x8 10.381 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L 10.382 + 0 -4 M 12 8 L stroke} 10.383 +>> matrix makepattern 10.384 +/Pat5 exch def 10.385 +<< Tile8x8 10.386 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L 10.387 + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} 10.388 +>> matrix makepattern 10.389 +/Pat6 exch def 10.390 +<< Tile8x8 10.391 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L 10.392 + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} 10.393 +>> matrix makepattern 10.394 +/Pat7 exch def 10.395 +<< Tile8x8 10.396 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L 10.397 + 12 0 M -4 8 L 12 4 M 0 10 L stroke} 10.398 +>> matrix makepattern 10.399 +/Pat8 exch def 10.400 +<< Tile8x8 10.401 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L 10.402 + -4 0 M 12 8 L -4 4 M 8 10 L stroke} 10.403 +>> matrix makepattern 10.404 +/Pat9 exch def 10.405 +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def 10.406 +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def 10.407 +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def 10.408 +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def 10.409 +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def 10.410 +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def 10.411 +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def 10.412 +} def 10.413 +% 10.414 +% 10.415 +%End of PostScript Level 2 code 10.416 +% 10.417 +/PatternBgnd { 10.418 + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse 10.419 +} def 10.420 +% 10.421 +% Substitute for Level 2 pattern fill codes with 10.422 +% grayscale if Level 2 support is not selected. 10.423 +% 10.424 +/Level1PatternFill { 10.425 +/Pattern1 {0.250 Density} bind def 10.426 +/Pattern2 {0.500 Density} bind def 10.427 +/Pattern3 {0.750 Density} bind def 10.428 +/Pattern4 {0.125 Density} bind def 10.429 +/Pattern5 {0.375 Density} bind def 10.430 +/Pattern6 {0.625 Density} bind def 10.431 +/Pattern7 {0.875 Density} bind def 10.432 +} def 10.433 +% 10.434 +% Now test for support of Level 2 code 10.435 +% 10.436 +Level1 {Level1PatternFill} {Level2PatternFill} ifelse 10.437 +% 10.438 +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont 10.439 +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall 10.440 +currentdict end definefont pop 10.441 +/MFshow { 10.442 + { dup 5 get 3 ge 10.443 + { 5 get 3 eq {gsave} {grestore} ifelse } 10.444 + {dup dup 0 get findfont exch 1 get scalefont setfont 10.445 + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 10.446 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq 10.447 + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 10.448 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div 10.449 + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get 10.450 + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop 10.451 + pop aload pop M} ifelse }ifelse }ifelse } 10.452 + ifelse } 10.453 + forall} def 10.454 +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def 10.455 +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } 10.456 + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont 10.457 + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def 10.458 +/MLshow { currentpoint stroke M 10.459 + 0 exch R 10.460 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 10.461 +/MRshow { currentpoint stroke M 10.462 + exch dup MFwidth neg 3 -1 roll R 10.463 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 10.464 +/MCshow { currentpoint stroke M 10.465 + exch dup MFwidth -2 div 3 -1 roll R 10.466 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 10.467 +/XYsave { [( ) 1 2 true false 3 ()] } bind def 10.468 +/XYrestore { [( ) 1 2 true false 4 ()] } bind def 10.469 +end 10.470 +%%EndProlog 10.471 +%%Page: 1 1 10.472 +gnudict begin 10.473 +gsave 10.474 +doclip 10.475 +50 50 translate 10.476 +0.100 0.100 scale 10.477 +90 rotate 10.478 +0 -5040 translate 10.479 +0 setgray 10.480 +newpath 10.481 +(Helvetica) findfont 140 scalefont setfont 10.482 +1.000 UL 10.483 +LTb 10.484 +518 448 M 10.485 +63 0 V 10.486 +6366 0 R 10.487 +-63 0 V 10.488 +stroke 10.489 +434 448 M 10.490 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] 10.491 +] -46.7 MRshow 10.492 +1.000 UL 10.493 +LTb 10.494 +518 1044 M 10.495 +63 0 V 10.496 +6366 0 R 10.497 +-63 0 V 10.498 +stroke 10.499 +434 1044 M 10.500 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] 10.501 +] -46.7 MRshow 10.502 +1.000 UL 10.503 +LTb 10.504 +518 1640 M 10.505 +63 0 V 10.506 +6366 0 R 10.507 +-63 0 V 10.508 +stroke 10.509 +434 1640 M 10.510 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] 10.511 +] -46.7 MRshow 10.512 +1.000 UL 10.513 +LTb 10.514 +518 2236 M 10.515 +63 0 V 10.516 +6366 0 R 10.517 +-63 0 V 10.518 +stroke 10.519 +434 2236 M 10.520 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] 10.521 +] -46.7 MRshow 10.522 +1.000 UL 10.523 +LTb 10.524 +518 2831 M 10.525 +63 0 V 10.526 +6366 0 R 10.527 +-63 0 V 10.528 +stroke 10.529 +434 2831 M 10.530 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] 10.531 +] -46.7 MRshow 10.532 +1.000 UL 10.533 +LTb 10.534 +518 3427 M 10.535 +63 0 V 10.536 +6366 0 R 10.537 +-63 0 V 10.538 +stroke 10.539 +434 3427 M 10.540 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] 10.541 +] -46.7 MRshow 10.542 +1.000 UL 10.543 +LTb 10.544 +518 4023 M 10.545 +63 0 V 10.546 +6366 0 R 10.547 +-63 0 V 10.548 +stroke 10.549 +434 4023 M 10.550 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] 10.551 +] -46.7 MRshow 10.552 +1.000 UL 10.553 +LTb 10.554 +518 4619 M 10.555 +63 0 V 10.556 +6366 0 R 10.557 +-63 0 V 10.558 +stroke 10.559 +434 4619 M 10.560 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] 10.561 +] -46.7 MRshow 10.562 +1.000 UL 10.563 +LTb 10.564 +518 448 M 10.565 +0 63 V 10.566 +0 4108 R 10.567 +0 -63 V 10.568 +stroke 10.569 +518 308 M 10.570 +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] 10.571 +] -46.7 MCshow 10.572 +1.000 UL 10.573 +LTb 10.574 +1322 448 M 10.575 +0 63 V 10.576 +0 4108 R 10.577 +0 -63 V 10.578 +stroke 10.579 +1322 308 M 10.580 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] 10.581 +] -46.7 MCshow 10.582 +1.000 UL 10.583 +LTb 10.584 +2125 448 M 10.585 +0 63 V 10.586 +0 4108 R 10.587 +0 -63 V 10.588 +stroke 10.589 +2125 308 M 10.590 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] 10.591 +] -46.7 MCshow 10.592 +1.000 UL 10.593 +LTb 10.594 +2929 448 M 10.595 +0 63 V 10.596 +0 4108 R 10.597 +0 -63 V 10.598 +stroke 10.599 +2929 308 M 10.600 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] 10.601 +] -46.7 MCshow 10.602 +1.000 UL 10.603 +LTb 10.604 +3733 448 M 10.605 +0 63 V 10.606 +0 4108 R 10.607 +0 -63 V 10.608 +stroke 10.609 +3733 308 M 10.610 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] 10.611 +] -46.7 MCshow 10.612 +1.000 UL 10.613 +LTb 10.614 +4536 448 M 10.615 +0 63 V 10.616 +0 4108 R 10.617 +0 -63 V 10.618 +stroke 10.619 +4536 308 M 10.620 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] 10.621 +] -46.7 MCshow 10.622 +1.000 UL 10.623 +LTb 10.624 +5340 448 M 10.625 +0 63 V 10.626 +0 4108 R 10.627 +0 -63 V 10.628 +stroke 10.629 +5340 308 M 10.630 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] 10.631 +] -46.7 MCshow 10.632 +1.000 UL 10.633 +LTb 10.634 +6143 448 M 10.635 +0 63 V 10.636 +0 4108 R 10.637 +0 -63 V 10.638 +stroke 10.639 +6143 308 M 10.640 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] 10.641 +] -46.7 MCshow 10.642 +1.000 UL 10.643 +LTb 10.644 +6947 448 M 10.645 +0 63 V 10.646 +0 4108 R 10.647 +0 -63 V 10.648 +stroke 10.649 +6947 308 M 10.650 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] 10.651 +] -46.7 MCshow 10.652 +1.000 UL 10.653 +LTb 10.654 +1.000 UL 10.655 +LTb 10.656 +518 4619 N 10.657 +518 448 L 10.658 +6429 0 V 10.659 +0 4171 V 10.660 +-6429 0 V 10.661 +Z stroke 10.662 +LCb setrgbcolor 10.663 +112 2533 M 10.664 +currentpoint gsave translate -270 rotate 0 0 moveto 10.665 +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] 10.666 +] -46.7 MCshow 10.667 +grestore 10.668 +LTb 10.669 +LCb setrgbcolor 10.670 +3732 98 M 10.671 +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] 10.672 +] -46.7 MCshow 10.673 +LTb 10.674 +3732 4829 M 10.675 +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread on 1 socket by 2 core Conroe 3GHz)] 10.676 +] -46.7 MCshow 10.677 +1.000 UP 10.678 +1.000 UL 10.679 +LTb 10.680 +1.000 UL 10.681 +LTb 10.682 +5372 3996 N 10.683 +0 560 V 10.684 +1491 0 V 10.685 +0 -560 V 10.686 +-1491 0 V 10.687 +Z stroke 10.688 +5372 4556 M 10.689 +1491 0 V 10.690 +% Begin plot #1 10.691 +stroke 10.692 +LT1 10.693 +LCa setrgbcolor 10.694 +518 1044 M 10.695 +65 0 V 10.696 +65 0 V 10.697 +65 0 V 10.698 +65 0 V 10.699 +65 0 V 10.700 +65 0 V 10.701 +65 0 V 10.702 +65 0 V 10.703 +64 0 V 10.704 +65 0 V 10.705 +65 0 V 10.706 +65 0 V 10.707 +65 0 V 10.708 +65 0 V 10.709 +65 0 V 10.710 +65 0 V 10.711 +65 0 V 10.712 +65 0 V 10.713 +65 0 V 10.714 +65 0 V 10.715 +65 0 V 10.716 +65 0 V 10.717 +65 0 V 10.718 +65 0 V 10.719 +64 0 V 10.720 +65 0 V 10.721 +65 0 V 10.722 +65 0 V 10.723 +65 0 V 10.724 +65 0 V 10.725 +65 0 V 10.726 +65 0 V 10.727 +65 0 V 10.728 +65 0 V 10.729 +65 0 V 10.730 +65 0 V 10.731 +65 0 V 10.732 +65 0 V 10.733 +65 0 V 10.734 +65 0 V 10.735 +65 0 V 10.736 +64 0 V 10.737 +65 0 V 10.738 +65 0 V 10.739 +65 0 V 10.740 +65 0 V 10.741 +65 0 V 10.742 +65 0 V 10.743 +65 0 V 10.744 +65 0 V 10.745 +65 0 V 10.746 +65 0 V 10.747 +65 0 V 10.748 +65 0 V 10.749 +65 0 V 10.750 +65 0 V 10.751 +65 0 V 10.752 +64 0 V 10.753 +65 0 V 10.754 +65 0 V 10.755 +65 0 V 10.756 +65 0 V 10.757 +65 0 V 10.758 +65 0 V 10.759 +65 0 V 10.760 +65 0 V 10.761 +65 0 V 10.762 +65 0 V 10.763 +65 0 V 10.764 +65 0 V 10.765 +65 0 V 10.766 +65 0 V 10.767 +65 0 V 10.768 +65 0 V 10.769 +64 0 V 10.770 +65 0 V 10.771 +65 0 V 10.772 +65 0 V 10.773 +65 0 V 10.774 +65 0 V 10.775 +65 0 V 10.776 +65 0 V 10.777 +65 0 V 10.778 +65 0 V 10.779 +65 0 V 10.780 +65 0 V 10.781 +65 0 V 10.782 +65 0 V 10.783 +65 0 V 10.784 +65 0 V 10.785 +64 0 V 10.786 +65 0 V 10.787 +65 0 V 10.788 +65 0 V 10.789 +65 0 V 10.790 +65 0 V 10.791 +65 0 V 10.792 +65 0 V 10.793 +65 0 V 10.794 +% End plot #1 10.795 +% Begin plot #2 10.796 +stroke 10.797 +2.000 UL 10.798 +LT1 10.799 +LCb setrgbcolor 10.800 +6296 4486 M 10.801 +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] 10.802 +] -46.7 MRshow 10.803 +LT1 10.804 +6380 4486 M 10.805 +399 0 V 10.806 +685 2359 M 10.807 +34 -248 V 10.808 +56 -330 V 10.809 +887 1326 L 10.810 +225 -323 V 10.811 +1576 762 L 10.812 +2476 617 L 10.813 +4277 535 L 10.814 +6947 504 L 10.815 +% End plot #2 10.816 +% Begin plot #3 10.817 +stroke 10.818 +LT2 10.819 +LCb setrgbcolor 10.820 +6296 4346 M 10.821 +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] 10.822 +] -46.7 MRshow 10.823 +LT2 10.824 +6380 4346 M 10.825 +399 0 V 10.826 +686 2388 M 10.827 +32 -299 V 10.828 +57 -392 V 10.829 +887 1332 L 10.830 +1112 987 L 10.831 +1577 748 L 10.832 +2476 613 L 10.833 +4278 532 L 10.834 +6947 502 L 10.835 +% End plot #3 10.836 +% Begin plot #4 10.837 +stroke 10.838 +LT3 10.839 +LCb setrgbcolor 10.840 +6296 4206 M 10.841 +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] 10.842 +] -46.7 MRshow 10.843 +LT3 10.844 +6380 4206 M 10.845 +399 0 V 10.846 +686 2537 M 10.847 +34 -371 V 10.848 +55 -359 V 10.849 +888 1377 L 10.850 +226 -343 V 10.851 +1577 774 L 10.852 +2477 626 L 10.853 +4277 540 L 10.854 +6947 507 L 10.855 +% End plot #4 10.856 +% Begin plot #5 10.857 +stroke 10.858 +LT4 10.859 +LCb setrgbcolor 10.860 +6296 4066 M 10.861 +[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] 10.862 +] -46.7 MRshow 10.863 +LT4 10.864 +6380 4066 M 10.865 +399 0 V 10.866 +686 2624 M 10.867 +34 -351 V 10.868 +55 -399 V 10.869 +889 1437 L 10.870 +224 -372 V 10.871 +1577 790 L 10.872 +2477 635 L 10.873 +4278 545 L 10.874 +6947 510 L 10.875 +% End plot #5 10.876 +stroke 10.877 +1.000 UL 10.878 +LTb 10.879 +518 4619 N 10.880 +518 448 L 10.881 +6429 0 V 10.882 +0 4171 V 10.883 +-6429 0 V 10.884 +Z stroke 10.885 +1.000 UP 10.886 +1.000 UL 10.887 +LTb 10.888 +stroke 10.889 +grestore 10.890 +end 10.891 +showpage 10.892 +%%Trailer 10.893 +%%DocumentFonts: Helvetica 10.894 +%%Pages: 1
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 11.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/vms_pthread_8_32_128thds__o30000__perfCtrs.eps Sat Jan 21 20:51:58 2012 -0800 11.3 @@ -0,0 +1,858 @@ 11.4 +%!PS-Adobe-2.0 11.5 +%%Title: 8_32_128thds__o30000__perfCtrs.result.eps 11.6 +%%Creator: gnuplot 4.4 patchlevel 2 11.7 +%%CreationDate: Fri Jan 20 13:41:22 2012 11.8 +%%DocumentFonts: (atend) 11.9 +%%BoundingBox: 50 50 554 770 11.10 +%%Orientation: Landscape 11.11 +%%Pages: (atend) 11.12 +%%EndComments 11.13 +%%BeginProlog 11.14 +/gnudict 256 dict def 11.15 +gnudict begin 11.16 +% 11.17 +% The following true/false flags may be edited by hand if desired. 11.18 +% The unit line width and grayscale image gamma correction may also be changed. 11.19 +% 11.20 +/Color true def 11.21 +/Blacktext false def 11.22 +/Solid false def 11.23 +/Dashlength 1 def 11.24 +/Landscape true def 11.25 +/Level1 false def 11.26 +/Rounded false def 11.27 +/ClipToBoundingBox false def 11.28 +/TransparentPatterns false def 11.29 +/gnulinewidth 5.000 def 11.30 +/userlinewidth gnulinewidth def 11.31 +/Gamma 1.0 def 11.32 +% 11.33 +/vshift -46 def 11.34 +/dl1 { 11.35 + 10.0 Dashlength mul mul 11.36 + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if 11.37 +} def 11.38 +/dl2 { 11.39 + 10.0 Dashlength mul mul 11.40 + Rounded { currentlinewidth 0.75 mul add } if 11.41 +} def 11.42 +/hpt_ 31.5 def 11.43 +/vpt_ 31.5 def 11.44 +/hpt hpt_ def 11.45 +/vpt vpt_ def 11.46 +Level1 {} { 11.47 +/SDict 10 dict def 11.48 +systemdict /pdfmark known not { 11.49 + userdict /pdfmark systemdict /cleartomark get put 11.50 +} if 11.51 +SDict begin [ 11.52 + /Title (8_32_128thds__o30000__perfCtrs.result.eps) 11.53 + /Subject (gnuplot plot) 11.54 + /Creator (gnuplot 4.4 patchlevel 2) 11.55 + /Author (msach) 11.56 +% /Producer (gnuplot) 11.57 +% /Keywords () 11.58 + /CreationDate (Fri Jan 20 13:41:22 2012) 11.59 + /DOCINFO pdfmark 11.60 +end 11.61 +} ifelse 11.62 +/doclip { 11.63 + ClipToBoundingBox { 11.64 + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath 11.65 + clip 11.66 + } if 11.67 +} def 11.68 +% 11.69 +% Gnuplot Prolog Version 4.4 (August 2010) 11.70 +% 11.71 +%/SuppressPDFMark true def 11.72 +% 11.73 +/M {moveto} bind def 11.74 +/L {lineto} bind def 11.75 +/R {rmoveto} bind def 11.76 +/V {rlineto} bind def 11.77 +/N {newpath moveto} bind def 11.78 +/Z {closepath} bind def 11.79 +/C {setrgbcolor} bind def 11.80 +/f {rlineto fill} bind def 11.81 +/g {setgray} bind def 11.82 +/Gshow {show} def % May be redefined later in the file to support UTF-8 11.83 +/vpt2 vpt 2 mul def 11.84 +/hpt2 hpt 2 mul def 11.85 +/Lshow {currentpoint stroke M 0 vshift R 11.86 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 11.87 +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R 11.88 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 11.89 +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 11.90 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 11.91 +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def 11.92 + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def 11.93 +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} 11.94 + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def 11.95 +/BL {stroke userlinewidth 2 mul setlinewidth 11.96 + Rounded {1 setlinejoin 1 setlinecap} if} def 11.97 +/AL {stroke userlinewidth 2 div setlinewidth 11.98 + Rounded {1 setlinejoin 1 setlinecap} if} def 11.99 +/UL {dup gnulinewidth mul /userlinewidth exch def 11.100 + dup 1 lt {pop 1} if 10 mul /udl exch def} def 11.101 +/PL {stroke userlinewidth setlinewidth 11.102 + Rounded {1 setlinejoin 1 setlinecap} if} def 11.103 +3.8 setmiterlimit 11.104 +% Default Line colors 11.105 +/LCw {1 1 1} def 11.106 +/LCb {0 0 0} def 11.107 +/LCa {0 0 0} def 11.108 +/LC0 {1 0 0} def 11.109 +/LC1 {0 1 0} def 11.110 +/LC2 {0 0 1} def 11.111 +/LC3 {1 0 1} def 11.112 +/LC4 {0 1 1} def 11.113 +/LC5 {1 1 0} def 11.114 +/LC6 {0 0 0} def 11.115 +/LC7 {1 0.3 0} def 11.116 +/LC8 {0.5 0.5 0.5} def 11.117 +% Default Line Types 11.118 +/LTw {PL [] 1 setgray} def 11.119 +/LTb {BL [] LCb DL} def 11.120 +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def 11.121 +/LT0 {PL [] LC0 DL} def 11.122 +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def 11.123 +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def 11.124 +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def 11.125 +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def 11.126 +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def 11.127 +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def 11.128 +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def 11.129 +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def 11.130 +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def 11.131 +/Dia {stroke [] 0 setdash 2 copy vpt add M 11.132 + hpt neg vpt neg V hpt vpt neg V 11.133 + hpt vpt V hpt neg vpt V closepath stroke 11.134 + Pnt} def 11.135 +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V 11.136 + currentpoint stroke M 11.137 + hpt neg vpt neg R hpt2 0 V stroke 11.138 + } def 11.139 +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 11.140 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 11.141 + hpt2 neg 0 V closepath stroke 11.142 + Pnt} def 11.143 +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M 11.144 + hpt2 vpt2 neg V currentpoint stroke M 11.145 + hpt2 neg 0 R hpt2 vpt2 V stroke} def 11.146 +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M 11.147 + hpt neg vpt -1.62 mul V 11.148 + hpt 2 mul 0 V 11.149 + hpt neg vpt 1.62 mul V closepath stroke 11.150 + Pnt} def 11.151 +/Star {2 copy Pls Crs} def 11.152 +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M 11.153 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 11.154 + hpt2 neg 0 V closepath fill} def 11.155 +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M 11.156 + hpt neg vpt -1.62 mul V 11.157 + hpt 2 mul 0 V 11.158 + hpt neg vpt 1.62 mul V closepath fill} def 11.159 +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M 11.160 + hpt neg vpt 1.62 mul V 11.161 + hpt 2 mul 0 V 11.162 + hpt neg vpt -1.62 mul V closepath stroke 11.163 + Pnt} def 11.164 +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M 11.165 + hpt neg vpt 1.62 mul V 11.166 + hpt 2 mul 0 V 11.167 + hpt neg vpt -1.62 mul V closepath fill} def 11.168 +/DiaF {stroke [] 0 setdash vpt add M 11.169 + hpt neg vpt neg V hpt vpt neg V 11.170 + hpt vpt V hpt neg vpt V closepath fill} def 11.171 +/Pent {stroke [] 0 setdash 2 copy gsave 11.172 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 11.173 + closepath stroke grestore Pnt} def 11.174 +/PentF {stroke [] 0 setdash gsave 11.175 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 11.176 + closepath fill grestore} def 11.177 +/Circle {stroke [] 0 setdash 2 copy 11.178 + hpt 0 360 arc stroke Pnt} def 11.179 +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def 11.180 +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def 11.181 +/C1 {BL [] 0 setdash 2 copy moveto 11.182 + 2 copy vpt 0 90 arc closepath fill 11.183 + vpt 0 360 arc closepath} bind def 11.184 +/C2 {BL [] 0 setdash 2 copy moveto 11.185 + 2 copy vpt 90 180 arc closepath fill 11.186 + vpt 0 360 arc closepath} bind def 11.187 +/C3 {BL [] 0 setdash 2 copy moveto 11.188 + 2 copy vpt 0 180 arc closepath fill 11.189 + vpt 0 360 arc closepath} bind def 11.190 +/C4 {BL [] 0 setdash 2 copy moveto 11.191 + 2 copy vpt 180 270 arc closepath fill 11.192 + vpt 0 360 arc closepath} bind def 11.193 +/C5 {BL [] 0 setdash 2 copy moveto 11.194 + 2 copy vpt 0 90 arc 11.195 + 2 copy moveto 11.196 + 2 copy vpt 180 270 arc closepath fill 11.197 + vpt 0 360 arc} bind def 11.198 +/C6 {BL [] 0 setdash 2 copy moveto 11.199 + 2 copy vpt 90 270 arc closepath fill 11.200 + vpt 0 360 arc closepath} bind def 11.201 +/C7 {BL [] 0 setdash 2 copy moveto 11.202 + 2 copy vpt 0 270 arc closepath fill 11.203 + vpt 0 360 arc closepath} bind def 11.204 +/C8 {BL [] 0 setdash 2 copy moveto 11.205 + 2 copy vpt 270 360 arc closepath fill 11.206 + vpt 0 360 arc closepath} bind def 11.207 +/C9 {BL [] 0 setdash 2 copy moveto 11.208 + 2 copy vpt 270 450 arc closepath fill 11.209 + vpt 0 360 arc closepath} bind def 11.210 +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 11.211 + 2 copy moveto 11.212 + 2 copy vpt 90 180 arc closepath fill 11.213 + vpt 0 360 arc closepath} bind def 11.214 +/C11 {BL [] 0 setdash 2 copy moveto 11.215 + 2 copy vpt 0 180 arc closepath fill 11.216 + 2 copy moveto 11.217 + 2 copy vpt 270 360 arc closepath fill 11.218 + vpt 0 360 arc closepath} bind def 11.219 +/C12 {BL [] 0 setdash 2 copy moveto 11.220 + 2 copy vpt 180 360 arc closepath fill 11.221 + vpt 0 360 arc closepath} bind def 11.222 +/C13 {BL [] 0 setdash 2 copy moveto 11.223 + 2 copy vpt 0 90 arc closepath fill 11.224 + 2 copy moveto 11.225 + 2 copy vpt 180 360 arc closepath fill 11.226 + vpt 0 360 arc closepath} bind def 11.227 +/C14 {BL [] 0 setdash 2 copy moveto 11.228 + 2 copy vpt 90 360 arc closepath fill 11.229 + vpt 0 360 arc} bind def 11.230 +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill 11.231 + vpt 0 360 arc closepath} bind def 11.232 +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto 11.233 + neg 0 rlineto closepath} bind def 11.234 +/Square {dup Rec} bind def 11.235 +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def 11.236 +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def 11.237 +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def 11.238 +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 11.239 +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def 11.240 +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 11.241 +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill 11.242 + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 11.243 +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def 11.244 +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 11.245 + 2 copy vpt Square fill Bsquare} bind def 11.246 +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def 11.247 +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def 11.248 +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill 11.249 + Bsquare} bind def 11.250 +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill 11.251 + Bsquare} bind def 11.252 +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def 11.253 +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 11.254 + 2 copy vpt Square fill Bsquare} bind def 11.255 +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 11.256 + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 11.257 +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def 11.258 +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def 11.259 +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def 11.260 +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def 11.261 +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def 11.262 +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def 11.263 +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def 11.264 +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def 11.265 +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def 11.266 +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def 11.267 +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def 11.268 +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def 11.269 +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def 11.270 +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def 11.271 +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def 11.272 +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def 11.273 +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def 11.274 +/DiaE {stroke [] 0 setdash vpt add M 11.275 + hpt neg vpt neg V hpt vpt neg V 11.276 + hpt vpt V hpt neg vpt V closepath stroke} def 11.277 +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M 11.278 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 11.279 + hpt2 neg 0 V closepath stroke} def 11.280 +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M 11.281 + hpt neg vpt -1.62 mul V 11.282 + hpt 2 mul 0 V 11.283 + hpt neg vpt 1.62 mul V closepath stroke} def 11.284 +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M 11.285 + hpt neg vpt 1.62 mul V 11.286 + hpt 2 mul 0 V 11.287 + hpt neg vpt -1.62 mul V closepath stroke} def 11.288 +/PentE {stroke [] 0 setdash gsave 11.289 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 11.290 + closepath stroke grestore} def 11.291 +/CircE {stroke [] 0 setdash 11.292 + hpt 0 360 arc stroke} def 11.293 +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def 11.294 +/DiaW {stroke [] 0 setdash vpt add M 11.295 + hpt neg vpt neg V hpt vpt neg V 11.296 + hpt vpt V hpt neg vpt V Opaque stroke} def 11.297 +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M 11.298 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 11.299 + hpt2 neg 0 V Opaque stroke} def 11.300 +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M 11.301 + hpt neg vpt -1.62 mul V 11.302 + hpt 2 mul 0 V 11.303 + hpt neg vpt 1.62 mul V Opaque stroke} def 11.304 +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M 11.305 + hpt neg vpt 1.62 mul V 11.306 + hpt 2 mul 0 V 11.307 + hpt neg vpt -1.62 mul V Opaque stroke} def 11.308 +/PentW {stroke [] 0 setdash gsave 11.309 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 11.310 + Opaque stroke grestore} def 11.311 +/CircW {stroke [] 0 setdash 11.312 + hpt 0 360 arc Opaque stroke} def 11.313 +/BoxFill {gsave Rec 1 setgray fill grestore} def 11.314 +/Density { 11.315 + /Fillden exch def 11.316 + currentrgbcolor 11.317 + /ColB exch def /ColG exch def /ColR exch def 11.318 + /ColR ColR Fillden mul Fillden sub 1 add def 11.319 + /ColG ColG Fillden mul Fillden sub 1 add def 11.320 + /ColB ColB Fillden mul Fillden sub 1 add def 11.321 + ColR ColG ColB setrgbcolor} def 11.322 +/BoxColFill {gsave Rec PolyFill} def 11.323 +/PolyFill {gsave Density fill grestore grestore} def 11.324 +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def 11.325 +% 11.326 +% PostScript Level 1 Pattern Fill routine for rectangles 11.327 +% Usage: x y w h s a XX PatternFill 11.328 +% x,y = lower left corner of box to be filled 11.329 +% w,h = width and height of box 11.330 +% a = angle in degrees between lines and x-axis 11.331 +% XX = 0/1 for no/yes cross-hatch 11.332 +% 11.333 +/PatternFill {gsave /PFa [ 9 2 roll ] def 11.334 + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate 11.335 + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec 11.336 + gsave 1 setgray fill grestore clip 11.337 + currentlinewidth 0.5 mul setlinewidth 11.338 + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 11.339 + 0 0 M PFa 5 get rotate PFs -2 div dup translate 11.340 + 0 1 PFs PFa 4 get div 1 add floor cvi 11.341 + {PFa 4 get mul 0 M 0 PFs V} for 11.342 + 0 PFa 6 get ne { 11.343 + 0 1 PFs PFa 4 get div 1 add floor cvi 11.344 + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for 11.345 + } if 11.346 + stroke grestore} def 11.347 +% 11.348 +/languagelevel where 11.349 + {pop languagelevel} {1} ifelse 11.350 + 2 lt 11.351 + {/InterpretLevel1 true def} 11.352 + {/InterpretLevel1 Level1 def} 11.353 + ifelse 11.354 +% 11.355 +% PostScript level 2 pattern fill definitions 11.356 +% 11.357 +/Level2PatternFill { 11.358 +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} 11.359 + bind def 11.360 +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def 11.361 +<< Tile8x8 11.362 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 11.363 +>> matrix makepattern 11.364 +/Pat1 exch def 11.365 +<< Tile8x8 11.366 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke 11.367 + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} 11.368 +>> matrix makepattern 11.369 +/Pat2 exch def 11.370 +<< Tile8x8 11.371 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L 11.372 + 8 8 L 8 0 L 0 0 L fill} 11.373 +>> matrix makepattern 11.374 +/Pat3 exch def 11.375 +<< Tile8x8 11.376 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L 11.377 + 0 12 M 12 0 L stroke} 11.378 +>> matrix makepattern 11.379 +/Pat4 exch def 11.380 +<< Tile8x8 11.381 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L 11.382 + 0 -4 M 12 8 L stroke} 11.383 +>> matrix makepattern 11.384 +/Pat5 exch def 11.385 +<< Tile8x8 11.386 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L 11.387 + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} 11.388 +>> matrix makepattern 11.389 +/Pat6 exch def 11.390 +<< Tile8x8 11.391 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L 11.392 + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} 11.393 +>> matrix makepattern 11.394 +/Pat7 exch def 11.395 +<< Tile8x8 11.396 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L 11.397 + 12 0 M -4 8 L 12 4 M 0 10 L stroke} 11.398 +>> matrix makepattern 11.399 +/Pat8 exch def 11.400 +<< Tile8x8 11.401 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L 11.402 + -4 0 M 12 8 L -4 4 M 8 10 L stroke} 11.403 +>> matrix makepattern 11.404 +/Pat9 exch def 11.405 +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def 11.406 +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def 11.407 +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def 11.408 +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def 11.409 +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def 11.410 +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def 11.411 +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def 11.412 +} def 11.413 +% 11.414 +% 11.415 +%End of PostScript Level 2 code 11.416 +% 11.417 +/PatternBgnd { 11.418 + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse 11.419 +} def 11.420 +% 11.421 +% Substitute for Level 2 pattern fill codes with 11.422 +% grayscale if Level 2 support is not selected. 11.423 +% 11.424 +/Level1PatternFill { 11.425 +/Pattern1 {0.250 Density} bind def 11.426 +/Pattern2 {0.500 Density} bind def 11.427 +/Pattern3 {0.750 Density} bind def 11.428 +/Pattern4 {0.125 Density} bind def 11.429 +/Pattern5 {0.375 Density} bind def 11.430 +/Pattern6 {0.625 Density} bind def 11.431 +/Pattern7 {0.875 Density} bind def 11.432 +} def 11.433 +% 11.434 +% Now test for support of Level 2 code 11.435 +% 11.436 +Level1 {Level1PatternFill} {Level2PatternFill} ifelse 11.437 +% 11.438 +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont 11.439 +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall 11.440 +currentdict end definefont pop 11.441 +/MFshow { 11.442 + { dup 5 get 3 ge 11.443 + { 5 get 3 eq {gsave} {grestore} ifelse } 11.444 + {dup dup 0 get findfont exch 1 get scalefont setfont 11.445 + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 11.446 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq 11.447 + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 11.448 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div 11.449 + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get 11.450 + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop 11.451 + pop aload pop M} ifelse }ifelse }ifelse } 11.452 + ifelse } 11.453 + forall} def 11.454 +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def 11.455 +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } 11.456 + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont 11.457 + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def 11.458 +/MLshow { currentpoint stroke M 11.459 + 0 exch R 11.460 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 11.461 +/MRshow { currentpoint stroke M 11.462 + exch dup MFwidth neg 3 -1 roll R 11.463 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 11.464 +/MCshow { currentpoint stroke M 11.465 + exch dup MFwidth -2 div 3 -1 roll R 11.466 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 11.467 +/XYsave { [( ) 1 2 true false 3 ()] } bind def 11.468 +/XYrestore { [( ) 1 2 true false 4 ()] } bind def 11.469 +end 11.470 +%%EndProlog 11.471 +%%Page: 1 1 11.472 +gnudict begin 11.473 +gsave 11.474 +doclip 11.475 +50 50 translate 11.476 +0.100 0.100 scale 11.477 +90 rotate 11.478 +0 -5040 translate 11.479 +0 setgray 11.480 +newpath 11.481 +(Helvetica) findfont 140 scalefont setfont 11.482 +1.000 UL 11.483 +LTb 11.484 +518 448 M 11.485 +63 0 V 11.486 +6366 0 R 11.487 +-63 0 V 11.488 +stroke 11.489 +434 448 M 11.490 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] 11.491 +] -46.7 MRshow 11.492 +1.000 UL 11.493 +LTb 11.494 +518 1044 M 11.495 +63 0 V 11.496 +6366 0 R 11.497 +-63 0 V 11.498 +stroke 11.499 +434 1044 M 11.500 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] 11.501 +] -46.7 MRshow 11.502 +1.000 UL 11.503 +LTb 11.504 +518 1640 M 11.505 +63 0 V 11.506 +6366 0 R 11.507 +-63 0 V 11.508 +stroke 11.509 +434 1640 M 11.510 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] 11.511 +] -46.7 MRshow 11.512 +1.000 UL 11.513 +LTb 11.514 +518 2236 M 11.515 +63 0 V 11.516 +6366 0 R 11.517 +-63 0 V 11.518 +stroke 11.519 +434 2236 M 11.520 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] 11.521 +] -46.7 MRshow 11.522 +1.000 UL 11.523 +LTb 11.524 +518 2831 M 11.525 +63 0 V 11.526 +6366 0 R 11.527 +-63 0 V 11.528 +stroke 11.529 +434 2831 M 11.530 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] 11.531 +] -46.7 MRshow 11.532 +1.000 UL 11.533 +LTb 11.534 +518 3427 M 11.535 +63 0 V 11.536 +6366 0 R 11.537 +-63 0 V 11.538 +stroke 11.539 +434 3427 M 11.540 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] 11.541 +] -46.7 MRshow 11.542 +1.000 UL 11.543 +LTb 11.544 +518 4023 M 11.545 +63 0 V 11.546 +6366 0 R 11.547 +-63 0 V 11.548 +stroke 11.549 +434 4023 M 11.550 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] 11.551 +] -46.7 MRshow 11.552 +1.000 UL 11.553 +LTb 11.554 +518 4619 M 11.555 +63 0 V 11.556 +6366 0 R 11.557 +-63 0 V 11.558 +stroke 11.559 +434 4619 M 11.560 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] 11.561 +] -46.7 MRshow 11.562 +1.000 UL 11.563 +LTb 11.564 +518 448 M 11.565 +0 63 V 11.566 +0 4108 R 11.567 +0 -63 V 11.568 +stroke 11.569 +518 308 M 11.570 +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] 11.571 +] -46.7 MCshow 11.572 +1.000 UL 11.573 +LTb 11.574 +1322 448 M 11.575 +0 63 V 11.576 +0 4108 R 11.577 +0 -63 V 11.578 +stroke 11.579 +1322 308 M 11.580 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] 11.581 +] -46.7 MCshow 11.582 +1.000 UL 11.583 +LTb 11.584 +2125 448 M 11.585 +0 63 V 11.586 +0 4108 R 11.587 +0 -63 V 11.588 +stroke 11.589 +2125 308 M 11.590 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] 11.591 +] -46.7 MCshow 11.592 +1.000 UL 11.593 +LTb 11.594 +2929 448 M 11.595 +0 63 V 11.596 +0 4108 R 11.597 +0 -63 V 11.598 +stroke 11.599 +2929 308 M 11.600 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] 11.601 +] -46.7 MCshow 11.602 +1.000 UL 11.603 +LTb 11.604 +3733 448 M 11.605 +0 63 V 11.606 +0 4108 R 11.607 +0 -63 V 11.608 +stroke 11.609 +3733 308 M 11.610 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] 11.611 +] -46.7 MCshow 11.612 +1.000 UL 11.613 +LTb 11.614 +4536 448 M 11.615 +0 63 V 11.616 +0 4108 R 11.617 +0 -63 V 11.618 +stroke 11.619 +4536 308 M 11.620 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] 11.621 +] -46.7 MCshow 11.622 +1.000 UL 11.623 +LTb 11.624 +5340 448 M 11.625 +0 63 V 11.626 +0 4108 R 11.627 +0 -63 V 11.628 +stroke 11.629 +5340 308 M 11.630 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] 11.631 +] -46.7 MCshow 11.632 +1.000 UL 11.633 +LTb 11.634 +6143 448 M 11.635 +0 63 V 11.636 +0 4108 R 11.637 +0 -63 V 11.638 +stroke 11.639 +6143 308 M 11.640 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] 11.641 +] -46.7 MCshow 11.642 +1.000 UL 11.643 +LTb 11.644 +6947 448 M 11.645 +0 63 V 11.646 +0 4108 R 11.647 +0 -63 V 11.648 +stroke 11.649 +6947 308 M 11.650 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] 11.651 +] -46.7 MCshow 11.652 +1.000 UL 11.653 +LTb 11.654 +1.000 UL 11.655 +LTb 11.656 +518 4619 N 11.657 +518 448 L 11.658 +6429 0 V 11.659 +0 4171 V 11.660 +-6429 0 V 11.661 +Z stroke 11.662 +LCb setrgbcolor 11.663 +112 2533 M 11.664 +currentpoint gsave translate -270 rotate 0 0 moveto 11.665 +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] 11.666 +] -46.7 MCshow 11.667 +grestore 11.668 +LTb 11.669 +LCb setrgbcolor 11.670 +3732 98 M 11.671 +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] 11.672 +] -46.7 MCshow 11.673 +LTb 11.674 +3732 4829 M 11.675 +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads on 1 socket by 4 core Sandy Bridge 3.3GHz)] 11.676 +] -46.7 MCshow 11.677 +1.000 UP 11.678 +1.000 UL 11.679 +LTb 11.680 +1.000 UL 11.681 +LTb 11.682 +5372 4136 N 11.683 +0 420 V 11.684 +1491 0 V 11.685 +0 -420 V 11.686 +-1491 0 V 11.687 +Z stroke 11.688 +5372 4556 M 11.689 +1491 0 V 11.690 +% Begin plot #1 11.691 +stroke 11.692 +LT1 11.693 +LCa setrgbcolor 11.694 +518 1044 M 11.695 +65 0 V 11.696 +65 0 V 11.697 +65 0 V 11.698 +65 0 V 11.699 +65 0 V 11.700 +65 0 V 11.701 +65 0 V 11.702 +65 0 V 11.703 +64 0 V 11.704 +65 0 V 11.705 +65 0 V 11.706 +65 0 V 11.707 +65 0 V 11.708 +65 0 V 11.709 +65 0 V 11.710 +65 0 V 11.711 +65 0 V 11.712 +65 0 V 11.713 +65 0 V 11.714 +65 0 V 11.715 +65 0 V 11.716 +65 0 V 11.717 +65 0 V 11.718 +65 0 V 11.719 +64 0 V 11.720 +65 0 V 11.721 +65 0 V 11.722 +65 0 V 11.723 +65 0 V 11.724 +65 0 V 11.725 +65 0 V 11.726 +65 0 V 11.727 +65 0 V 11.728 +65 0 V 11.729 +65 0 V 11.730 +65 0 V 11.731 +65 0 V 11.732 +65 0 V 11.733 +65 0 V 11.734 +65 0 V 11.735 +65 0 V 11.736 +64 0 V 11.737 +65 0 V 11.738 +65 0 V 11.739 +65 0 V 11.740 +65 0 V 11.741 +65 0 V 11.742 +65 0 V 11.743 +65 0 V 11.744 +65 0 V 11.745 +65 0 V 11.746 +65 0 V 11.747 +65 0 V 11.748 +65 0 V 11.749 +65 0 V 11.750 +65 0 V 11.751 +65 0 V 11.752 +64 0 V 11.753 +65 0 V 11.754 +65 0 V 11.755 +65 0 V 11.756 +65 0 V 11.757 +65 0 V 11.758 +65 0 V 11.759 +65 0 V 11.760 +65 0 V 11.761 +65 0 V 11.762 +65 0 V 11.763 +65 0 V 11.764 +65 0 V 11.765 +65 0 V 11.766 +65 0 V 11.767 +65 0 V 11.768 +65 0 V 11.769 +64 0 V 11.770 +65 0 V 11.771 +65 0 V 11.772 +65 0 V 11.773 +65 0 V 11.774 +65 0 V 11.775 +65 0 V 11.776 +65 0 V 11.777 +65 0 V 11.778 +65 0 V 11.779 +65 0 V 11.780 +65 0 V 11.781 +65 0 V 11.782 +65 0 V 11.783 +65 0 V 11.784 +65 0 V 11.785 +64 0 V 11.786 +65 0 V 11.787 +65 0 V 11.788 +65 0 V 11.789 +65 0 V 11.790 +65 0 V 11.791 +65 0 V 11.792 +65 0 V 11.793 +65 0 V 11.794 +% End plot #1 11.795 +% Begin plot #2 11.796 +stroke 11.797 +2.000 UL 11.798 +LT1 11.799 +LCb setrgbcolor 11.800 +6296 4486 M 11.801 +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] 11.802 +] -46.7 MRshow 11.803 +LT1 11.804 +6380 4486 M 11.805 +399 0 V 11.806 +875 4619 M 11.807 +981 3434 L 11.808 +1363 2118 L 11.809 +772 -806 V 11.810 +3679 885 L 11.811 +6762 665 L 11.812 +% End plot #2 11.813 +% Begin plot #3 11.814 +stroke 11.815 +LT2 11.816 +LCb setrgbcolor 11.817 +6296 4346 M 11.818 +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] 11.819 +] -46.7 MRshow 11.820 +LT2 11.821 +6380 4346 M 11.822 +399 0 V 11.823 +1295 4619 M 11.824 +68 -586 V 11.825 +2138 2337 L 11.826 +3676 1458 L 11.827 +6769 967 L 11.828 +% End plot #3 11.829 +% Begin plot #4 11.830 +stroke 11.831 +LT3 11.832 +LCb setrgbcolor 11.833 +6296 4206 M 11.834 +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] 11.835 +] -46.7 MRshow 11.836 +LT3 11.837 +6380 4206 M 11.838 +399 0 V 11.839 +3329 4619 M 11.840 +357 -751 V 11.841 +6770 2178 L 11.842 +% End plot #4 11.843 +stroke 11.844 +1.000 UL 11.845 +LTb 11.846 +518 4619 N 11.847 +518 448 L 11.848 +6429 0 V 11.849 +0 4171 V 11.850 +-6429 0 V 11.851 +Z stroke 11.852 +1.000 UP 11.853 +1.000 UL 11.854 +LTb 11.855 +stroke 11.856 +grestore 11.857 +end 11.858 +showpage 11.859 +%%Trailer 11.860 +%%DocumentFonts: Helvetica 11.861 +%%Pages: 1
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 12.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/vms_vthread_8_32_128_512thds__o30000__perfCtrs.eps Sat Jan 21 20:51:58 2012 -0800 12.3 @@ -0,0 +1,891 @@ 12.4 +%!PS-Adobe-2.0 12.5 +%%Title: 8_32_128_512thds__o30000__perfCtrs.result.eps 12.6 +%%Creator: gnuplot 4.4 patchlevel 2 12.7 +%%CreationDate: Fri Jan 20 13:44:01 2012 12.8 +%%DocumentFonts: (atend) 12.9 +%%BoundingBox: 50 50 554 770 12.10 +%%Orientation: Landscape 12.11 +%%Pages: (atend) 12.12 +%%EndComments 12.13 +%%BeginProlog 12.14 +/gnudict 256 dict def 12.15 +gnudict begin 12.16 +% 12.17 +% The following true/false flags may be edited by hand if desired. 12.18 +% The unit line width and grayscale image gamma correction may also be changed. 12.19 +% 12.20 +/Color true def 12.21 +/Blacktext false def 12.22 +/Solid false def 12.23 +/Dashlength 1 def 12.24 +/Landscape true def 12.25 +/Level1 false def 12.26 +/Rounded false def 12.27 +/ClipToBoundingBox false def 12.28 +/TransparentPatterns false def 12.29 +/gnulinewidth 5.000 def 12.30 +/userlinewidth gnulinewidth def 12.31 +/Gamma 1.0 def 12.32 +% 12.33 +/vshift -46 def 12.34 +/dl1 { 12.35 + 10.0 Dashlength mul mul 12.36 + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if 12.37 +} def 12.38 +/dl2 { 12.39 + 10.0 Dashlength mul mul 12.40 + Rounded { currentlinewidth 0.75 mul add } if 12.41 +} def 12.42 +/hpt_ 31.5 def 12.43 +/vpt_ 31.5 def 12.44 +/hpt hpt_ def 12.45 +/vpt vpt_ def 12.46 +Level1 {} { 12.47 +/SDict 10 dict def 12.48 +systemdict /pdfmark known not { 12.49 + userdict /pdfmark systemdict /cleartomark get put 12.50 +} if 12.51 +SDict begin [ 12.52 + /Title (8_32_128_512thds__o30000__perfCtrs.result.eps) 12.53 + /Subject (gnuplot plot) 12.54 + /Creator (gnuplot 4.4 patchlevel 2) 12.55 + /Author (msach) 12.56 +% /Producer (gnuplot) 12.57 +% /Keywords () 12.58 + /CreationDate (Fri Jan 20 13:44:01 2012) 12.59 + /DOCINFO pdfmark 12.60 +end 12.61 +} ifelse 12.62 +/doclip { 12.63 + ClipToBoundingBox { 12.64 + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath 12.65 + clip 12.66 + } if 12.67 +} def 12.68 +% 12.69 +% Gnuplot Prolog Version 4.4 (August 2010) 12.70 +% 12.71 +%/SuppressPDFMark true def 12.72 +% 12.73 +/M {moveto} bind def 12.74 +/L {lineto} bind def 12.75 +/R {rmoveto} bind def 12.76 +/V {rlineto} bind def 12.77 +/N {newpath moveto} bind def 12.78 +/Z {closepath} bind def 12.79 +/C {setrgbcolor} bind def 12.80 +/f {rlineto fill} bind def 12.81 +/g {setgray} bind def 12.82 +/Gshow {show} def % May be redefined later in the file to support UTF-8 12.83 +/vpt2 vpt 2 mul def 12.84 +/hpt2 hpt 2 mul def 12.85 +/Lshow {currentpoint stroke M 0 vshift R 12.86 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 12.87 +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R 12.88 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 12.89 +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 12.90 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 12.91 +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def 12.92 + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def 12.93 +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} 12.94 + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def 12.95 +/BL {stroke userlinewidth 2 mul setlinewidth 12.96 + Rounded {1 setlinejoin 1 setlinecap} if} def 12.97 +/AL {stroke userlinewidth 2 div setlinewidth 12.98 + Rounded {1 setlinejoin 1 setlinecap} if} def 12.99 +/UL {dup gnulinewidth mul /userlinewidth exch def 12.100 + dup 1 lt {pop 1} if 10 mul /udl exch def} def 12.101 +/PL {stroke userlinewidth setlinewidth 12.102 + Rounded {1 setlinejoin 1 setlinecap} if} def 12.103 +3.8 setmiterlimit 12.104 +% Default Line colors 12.105 +/LCw {1 1 1} def 12.106 +/LCb {0 0 0} def 12.107 +/LCa {0 0 0} def 12.108 +/LC0 {1 0 0} def 12.109 +/LC1 {0 1 0} def 12.110 +/LC2 {0 0 1} def 12.111 +/LC3 {1 0 1} def 12.112 +/LC4 {0 1 1} def 12.113 +/LC5 {1 1 0} def 12.114 +/LC6 {0 0 0} def 12.115 +/LC7 {1 0.3 0} def 12.116 +/LC8 {0.5 0.5 0.5} def 12.117 +% Default Line Types 12.118 +/LTw {PL [] 1 setgray} def 12.119 +/LTb {BL [] LCb DL} def 12.120 +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def 12.121 +/LT0 {PL [] LC0 DL} def 12.122 +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def 12.123 +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def 12.124 +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def 12.125 +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def 12.126 +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def 12.127 +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def 12.128 +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def 12.129 +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def 12.130 +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def 12.131 +/Dia {stroke [] 0 setdash 2 copy vpt add M 12.132 + hpt neg vpt neg V hpt vpt neg V 12.133 + hpt vpt V hpt neg vpt V closepath stroke 12.134 + Pnt} def 12.135 +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V 12.136 + currentpoint stroke M 12.137 + hpt neg vpt neg R hpt2 0 V stroke 12.138 + } def 12.139 +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 12.140 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 12.141 + hpt2 neg 0 V closepath stroke 12.142 + Pnt} def 12.143 +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M 12.144 + hpt2 vpt2 neg V currentpoint stroke M 12.145 + hpt2 neg 0 R hpt2 vpt2 V stroke} def 12.146 +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M 12.147 + hpt neg vpt -1.62 mul V 12.148 + hpt 2 mul 0 V 12.149 + hpt neg vpt 1.62 mul V closepath stroke 12.150 + Pnt} def 12.151 +/Star {2 copy Pls Crs} def 12.152 +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M 12.153 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 12.154 + hpt2 neg 0 V closepath fill} def 12.155 +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M 12.156 + hpt neg vpt -1.62 mul V 12.157 + hpt 2 mul 0 V 12.158 + hpt neg vpt 1.62 mul V closepath fill} def 12.159 +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M 12.160 + hpt neg vpt 1.62 mul V 12.161 + hpt 2 mul 0 V 12.162 + hpt neg vpt -1.62 mul V closepath stroke 12.163 + Pnt} def 12.164 +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M 12.165 + hpt neg vpt 1.62 mul V 12.166 + hpt 2 mul 0 V 12.167 + hpt neg vpt -1.62 mul V closepath fill} def 12.168 +/DiaF {stroke [] 0 setdash vpt add M 12.169 + hpt neg vpt neg V hpt vpt neg V 12.170 + hpt vpt V hpt neg vpt V closepath fill} def 12.171 +/Pent {stroke [] 0 setdash 2 copy gsave 12.172 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 12.173 + closepath stroke grestore Pnt} def 12.174 +/PentF {stroke [] 0 setdash gsave 12.175 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 12.176 + closepath fill grestore} def 12.177 +/Circle {stroke [] 0 setdash 2 copy 12.178 + hpt 0 360 arc stroke Pnt} def 12.179 +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def 12.180 +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def 12.181 +/C1 {BL [] 0 setdash 2 copy moveto 12.182 + 2 copy vpt 0 90 arc closepath fill 12.183 + vpt 0 360 arc closepath} bind def 12.184 +/C2 {BL [] 0 setdash 2 copy moveto 12.185 + 2 copy vpt 90 180 arc closepath fill 12.186 + vpt 0 360 arc closepath} bind def 12.187 +/C3 {BL [] 0 setdash 2 copy moveto 12.188 + 2 copy vpt 0 180 arc closepath fill 12.189 + vpt 0 360 arc closepath} bind def 12.190 +/C4 {BL [] 0 setdash 2 copy moveto 12.191 + 2 copy vpt 180 270 arc closepath fill 12.192 + vpt 0 360 arc closepath} bind def 12.193 +/C5 {BL [] 0 setdash 2 copy moveto 12.194 + 2 copy vpt 0 90 arc 12.195 + 2 copy moveto 12.196 + 2 copy vpt 180 270 arc closepath fill 12.197 + vpt 0 360 arc} bind def 12.198 +/C6 {BL [] 0 setdash 2 copy moveto 12.199 + 2 copy vpt 90 270 arc closepath fill 12.200 + vpt 0 360 arc closepath} bind def 12.201 +/C7 {BL [] 0 setdash 2 copy moveto 12.202 + 2 copy vpt 0 270 arc closepath fill 12.203 + vpt 0 360 arc closepath} bind def 12.204 +/C8 {BL [] 0 setdash 2 copy moveto 12.205 + 2 copy vpt 270 360 arc closepath fill 12.206 + vpt 0 360 arc closepath} bind def 12.207 +/C9 {BL [] 0 setdash 2 copy moveto 12.208 + 2 copy vpt 270 450 arc closepath fill 12.209 + vpt 0 360 arc closepath} bind def 12.210 +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 12.211 + 2 copy moveto 12.212 + 2 copy vpt 90 180 arc closepath fill 12.213 + vpt 0 360 arc closepath} bind def 12.214 +/C11 {BL [] 0 setdash 2 copy moveto 12.215 + 2 copy vpt 0 180 arc closepath fill 12.216 + 2 copy moveto 12.217 + 2 copy vpt 270 360 arc closepath fill 12.218 + vpt 0 360 arc closepath} bind def 12.219 +/C12 {BL [] 0 setdash 2 copy moveto 12.220 + 2 copy vpt 180 360 arc closepath fill 12.221 + vpt 0 360 arc closepath} bind def 12.222 +/C13 {BL [] 0 setdash 2 copy moveto 12.223 + 2 copy vpt 0 90 arc closepath fill 12.224 + 2 copy moveto 12.225 + 2 copy vpt 180 360 arc closepath fill 12.226 + vpt 0 360 arc closepath} bind def 12.227 +/C14 {BL [] 0 setdash 2 copy moveto 12.228 + 2 copy vpt 90 360 arc closepath fill 12.229 + vpt 0 360 arc} bind def 12.230 +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill 12.231 + vpt 0 360 arc closepath} bind def 12.232 +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto 12.233 + neg 0 rlineto closepath} bind def 12.234 +/Square {dup Rec} bind def 12.235 +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def 12.236 +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def 12.237 +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def 12.238 +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 12.239 +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def 12.240 +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 12.241 +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill 12.242 + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 12.243 +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def 12.244 +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 12.245 + 2 copy vpt Square fill Bsquare} bind def 12.246 +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def 12.247 +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def 12.248 +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill 12.249 + Bsquare} bind def 12.250 +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill 12.251 + Bsquare} bind def 12.252 +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def 12.253 +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 12.254 + 2 copy vpt Square fill Bsquare} bind def 12.255 +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 12.256 + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 12.257 +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def 12.258 +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def 12.259 +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def 12.260 +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def 12.261 +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def 12.262 +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def 12.263 +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def 12.264 +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def 12.265 +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def 12.266 +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def 12.267 +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def 12.268 +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def 12.269 +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def 12.270 +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def 12.271 +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def 12.272 +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def 12.273 +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def 12.274 +/DiaE {stroke [] 0 setdash vpt add M 12.275 + hpt neg vpt neg V hpt vpt neg V 12.276 + hpt vpt V hpt neg vpt V closepath stroke} def 12.277 +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M 12.278 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 12.279 + hpt2 neg 0 V closepath stroke} def 12.280 +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M 12.281 + hpt neg vpt -1.62 mul V 12.282 + hpt 2 mul 0 V 12.283 + hpt neg vpt 1.62 mul V closepath stroke} def 12.284 +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M 12.285 + hpt neg vpt 1.62 mul V 12.286 + hpt 2 mul 0 V 12.287 + hpt neg vpt -1.62 mul V closepath stroke} def 12.288 +/PentE {stroke [] 0 setdash gsave 12.289 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 12.290 + closepath stroke grestore} def 12.291 +/CircE {stroke [] 0 setdash 12.292 + hpt 0 360 arc stroke} def 12.293 +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def 12.294 +/DiaW {stroke [] 0 setdash vpt add M 12.295 + hpt neg vpt neg V hpt vpt neg V 12.296 + hpt vpt V hpt neg vpt V Opaque stroke} def 12.297 +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M 12.298 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 12.299 + hpt2 neg 0 V Opaque stroke} def 12.300 +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M 12.301 + hpt neg vpt -1.62 mul V 12.302 + hpt 2 mul 0 V 12.303 + hpt neg vpt 1.62 mul V Opaque stroke} def 12.304 +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M 12.305 + hpt neg vpt 1.62 mul V 12.306 + hpt 2 mul 0 V 12.307 + hpt neg vpt -1.62 mul V Opaque stroke} def 12.308 +/PentW {stroke [] 0 setdash gsave 12.309 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 12.310 + Opaque stroke grestore} def 12.311 +/CircW {stroke [] 0 setdash 12.312 + hpt 0 360 arc Opaque stroke} def 12.313 +/BoxFill {gsave Rec 1 setgray fill grestore} def 12.314 +/Density { 12.315 + /Fillden exch def 12.316 + currentrgbcolor 12.317 + /ColB exch def /ColG exch def /ColR exch def 12.318 + /ColR ColR Fillden mul Fillden sub 1 add def 12.319 + /ColG ColG Fillden mul Fillden sub 1 add def 12.320 + /ColB ColB Fillden mul Fillden sub 1 add def 12.321 + ColR ColG ColB setrgbcolor} def 12.322 +/BoxColFill {gsave Rec PolyFill} def 12.323 +/PolyFill {gsave Density fill grestore grestore} def 12.324 +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def 12.325 +% 12.326 +% PostScript Level 1 Pattern Fill routine for rectangles 12.327 +% Usage: x y w h s a XX PatternFill 12.328 +% x,y = lower left corner of box to be filled 12.329 +% w,h = width and height of box 12.330 +% a = angle in degrees between lines and x-axis 12.331 +% XX = 0/1 for no/yes cross-hatch 12.332 +% 12.333 +/PatternFill {gsave /PFa [ 9 2 roll ] def 12.334 + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate 12.335 + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec 12.336 + gsave 1 setgray fill grestore clip 12.337 + currentlinewidth 0.5 mul setlinewidth 12.338 + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 12.339 + 0 0 M PFa 5 get rotate PFs -2 div dup translate 12.340 + 0 1 PFs PFa 4 get div 1 add floor cvi 12.341 + {PFa 4 get mul 0 M 0 PFs V} for 12.342 + 0 PFa 6 get ne { 12.343 + 0 1 PFs PFa 4 get div 1 add floor cvi 12.344 + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for 12.345 + } if 12.346 + stroke grestore} def 12.347 +% 12.348 +/languagelevel where 12.349 + {pop languagelevel} {1} ifelse 12.350 + 2 lt 12.351 + {/InterpretLevel1 true def} 12.352 + {/InterpretLevel1 Level1 def} 12.353 + ifelse 12.354 +% 12.355 +% PostScript level 2 pattern fill definitions 12.356 +% 12.357 +/Level2PatternFill { 12.358 +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} 12.359 + bind def 12.360 +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def 12.361 +<< Tile8x8 12.362 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 12.363 +>> matrix makepattern 12.364 +/Pat1 exch def 12.365 +<< Tile8x8 12.366 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke 12.367 + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} 12.368 +>> matrix makepattern 12.369 +/Pat2 exch def 12.370 +<< Tile8x8 12.371 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L 12.372 + 8 8 L 8 0 L 0 0 L fill} 12.373 +>> matrix makepattern 12.374 +/Pat3 exch def 12.375 +<< Tile8x8 12.376 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L 12.377 + 0 12 M 12 0 L stroke} 12.378 +>> matrix makepattern 12.379 +/Pat4 exch def 12.380 +<< Tile8x8 12.381 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L 12.382 + 0 -4 M 12 8 L stroke} 12.383 +>> matrix makepattern 12.384 +/Pat5 exch def 12.385 +<< Tile8x8 12.386 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L 12.387 + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} 12.388 +>> matrix makepattern 12.389 +/Pat6 exch def 12.390 +<< Tile8x8 12.391 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L 12.392 + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} 12.393 +>> matrix makepattern 12.394 +/Pat7 exch def 12.395 +<< Tile8x8 12.396 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L 12.397 + 12 0 M -4 8 L 12 4 M 0 10 L stroke} 12.398 +>> matrix makepattern 12.399 +/Pat8 exch def 12.400 +<< Tile8x8 12.401 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L 12.402 + -4 0 M 12 8 L -4 4 M 8 10 L stroke} 12.403 +>> matrix makepattern 12.404 +/Pat9 exch def 12.405 +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def 12.406 +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def 12.407 +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def 12.408 +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def 12.409 +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def 12.410 +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def 12.411 +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def 12.412 +} def 12.413 +% 12.414 +% 12.415 +%End of PostScript Level 2 code 12.416 +% 12.417 +/PatternBgnd { 12.418 + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse 12.419 +} def 12.420 +% 12.421 +% Substitute for Level 2 pattern fill codes with 12.422 +% grayscale if Level 2 support is not selected. 12.423 +% 12.424 +/Level1PatternFill { 12.425 +/Pattern1 {0.250 Density} bind def 12.426 +/Pattern2 {0.500 Density} bind def 12.427 +/Pattern3 {0.750 Density} bind def 12.428 +/Pattern4 {0.125 Density} bind def 12.429 +/Pattern5 {0.375 Density} bind def 12.430 +/Pattern6 {0.625 Density} bind def 12.431 +/Pattern7 {0.875 Density} bind def 12.432 +} def 12.433 +% 12.434 +% Now test for support of Level 2 code 12.435 +% 12.436 +Level1 {Level1PatternFill} {Level2PatternFill} ifelse 12.437 +% 12.438 +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont 12.439 +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall 12.440 +currentdict end definefont pop 12.441 +/MFshow { 12.442 + { dup 5 get 3 ge 12.443 + { 5 get 3 eq {gsave} {grestore} ifelse } 12.444 + {dup dup 0 get findfont exch 1 get scalefont setfont 12.445 + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 12.446 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq 12.447 + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 12.448 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div 12.449 + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get 12.450 + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop 12.451 + pop aload pop M} ifelse }ifelse }ifelse } 12.452 + ifelse } 12.453 + forall} def 12.454 +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def 12.455 +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } 12.456 + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont 12.457 + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def 12.458 +/MLshow { currentpoint stroke M 12.459 + 0 exch R 12.460 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 12.461 +/MRshow { currentpoint stroke M 12.462 + exch dup MFwidth neg 3 -1 roll R 12.463 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 12.464 +/MCshow { currentpoint stroke M 12.465 + exch dup MFwidth -2 div 3 -1 roll R 12.466 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 12.467 +/XYsave { [( ) 1 2 true false 3 ()] } bind def 12.468 +/XYrestore { [( ) 1 2 true false 4 ()] } bind def 12.469 +end 12.470 +%%EndProlog 12.471 +%%Page: 1 1 12.472 +gnudict begin 12.473 +gsave 12.474 +doclip 12.475 +50 50 translate 12.476 +0.100 0.100 scale 12.477 +90 rotate 12.478 +0 -5040 translate 12.479 +0 setgray 12.480 +newpath 12.481 +(Helvetica) findfont 140 scalefont setfont 12.482 +1.000 UL 12.483 +LTb 12.484 +518 448 M 12.485 +63 0 V 12.486 +6366 0 R 12.487 +-63 0 V 12.488 +stroke 12.489 +434 448 M 12.490 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] 12.491 +] -46.7 MRshow 12.492 +1.000 UL 12.493 +LTb 12.494 +518 1044 M 12.495 +63 0 V 12.496 +6366 0 R 12.497 +-63 0 V 12.498 +stroke 12.499 +434 1044 M 12.500 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] 12.501 +] -46.7 MRshow 12.502 +1.000 UL 12.503 +LTb 12.504 +518 1640 M 12.505 +63 0 V 12.506 +6366 0 R 12.507 +-63 0 V 12.508 +stroke 12.509 +434 1640 M 12.510 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] 12.511 +] -46.7 MRshow 12.512 +1.000 UL 12.513 +LTb 12.514 +518 2236 M 12.515 +63 0 V 12.516 +6366 0 R 12.517 +-63 0 V 12.518 +stroke 12.519 +434 2236 M 12.520 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] 12.521 +] -46.7 MRshow 12.522 +1.000 UL 12.523 +LTb 12.524 +518 2831 M 12.525 +63 0 V 12.526 +6366 0 R 12.527 +-63 0 V 12.528 +stroke 12.529 +434 2831 M 12.530 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] 12.531 +] -46.7 MRshow 12.532 +1.000 UL 12.533 +LTb 12.534 +518 3427 M 12.535 +63 0 V 12.536 +6366 0 R 12.537 +-63 0 V 12.538 +stroke 12.539 +434 3427 M 12.540 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] 12.541 +] -46.7 MRshow 12.542 +1.000 UL 12.543 +LTb 12.544 +518 4023 M 12.545 +63 0 V 12.546 +6366 0 R 12.547 +-63 0 V 12.548 +stroke 12.549 +434 4023 M 12.550 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] 12.551 +] -46.7 MRshow 12.552 +1.000 UL 12.553 +LTb 12.554 +518 4619 M 12.555 +63 0 V 12.556 +6366 0 R 12.557 +-63 0 V 12.558 +stroke 12.559 +434 4619 M 12.560 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] 12.561 +] -46.7 MRshow 12.562 +1.000 UL 12.563 +LTb 12.564 +518 448 M 12.565 +0 63 V 12.566 +0 4108 R 12.567 +0 -63 V 12.568 +stroke 12.569 +518 308 M 12.570 +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] 12.571 +] -46.7 MCshow 12.572 +1.000 UL 12.573 +LTb 12.574 +1322 448 M 12.575 +0 63 V 12.576 +0 4108 R 12.577 +0 -63 V 12.578 +stroke 12.579 +1322 308 M 12.580 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] 12.581 +] -46.7 MCshow 12.582 +1.000 UL 12.583 +LTb 12.584 +2125 448 M 12.585 +0 63 V 12.586 +0 4108 R 12.587 +0 -63 V 12.588 +stroke 12.589 +2125 308 M 12.590 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] 12.591 +] -46.7 MCshow 12.592 +1.000 UL 12.593 +LTb 12.594 +2929 448 M 12.595 +0 63 V 12.596 +0 4108 R 12.597 +0 -63 V 12.598 +stroke 12.599 +2929 308 M 12.600 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] 12.601 +] -46.7 MCshow 12.602 +1.000 UL 12.603 +LTb 12.604 +3733 448 M 12.605 +0 63 V 12.606 +0 4108 R 12.607 +0 -63 V 12.608 +stroke 12.609 +3733 308 M 12.610 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] 12.611 +] -46.7 MCshow 12.612 +1.000 UL 12.613 +LTb 12.614 +4536 448 M 12.615 +0 63 V 12.616 +0 4108 R 12.617 +0 -63 V 12.618 +stroke 12.619 +4536 308 M 12.620 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] 12.621 +] -46.7 MCshow 12.622 +1.000 UL 12.623 +LTb 12.624 +5340 448 M 12.625 +0 63 V 12.626 +0 4108 R 12.627 +0 -63 V 12.628 +stroke 12.629 +5340 308 M 12.630 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] 12.631 +] -46.7 MCshow 12.632 +1.000 UL 12.633 +LTb 12.634 +6143 448 M 12.635 +0 63 V 12.636 +0 4108 R 12.637 +0 -63 V 12.638 +stroke 12.639 +6143 308 M 12.640 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] 12.641 +] -46.7 MCshow 12.642 +1.000 UL 12.643 +LTb 12.644 +6947 448 M 12.645 +0 63 V 12.646 +0 4108 R 12.647 +0 -63 V 12.648 +stroke 12.649 +6947 308 M 12.650 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] 12.651 +] -46.7 MCshow 12.652 +1.000 UL 12.653 +LTb 12.654 +1.000 UL 12.655 +LTb 12.656 +518 4619 N 12.657 +518 448 L 12.658 +6429 0 V 12.659 +0 4171 V 12.660 +-6429 0 V 12.661 +Z stroke 12.662 +LCb setrgbcolor 12.663 +112 2533 M 12.664 +currentpoint gsave translate -270 rotate 0 0 moveto 12.665 +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] 12.666 +] -46.7 MCshow 12.667 +grestore 12.668 +LTb 12.669 +LCb setrgbcolor 12.670 +3732 98 M 12.671 +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] 12.672 +] -46.7 MCshow 12.673 +LTb 12.674 +3732 4829 M 12.675 +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread on 1 socket by 4 core Sandy Bridge 3.3GHz)] 12.676 +] -46.7 MCshow 12.677 +1.000 UP 12.678 +1.000 UL 12.679 +LTb 12.680 +1.000 UL 12.681 +LTb 12.682 +5372 3996 N 12.683 +0 560 V 12.684 +1491 0 V 12.685 +0 -560 V 12.686 +-1491 0 V 12.687 +Z stroke 12.688 +5372 4556 M 12.689 +1491 0 V 12.690 +% Begin plot #1 12.691 +stroke 12.692 +LT1 12.693 +LCa setrgbcolor 12.694 +518 1044 M 12.695 +65 0 V 12.696 +65 0 V 12.697 +65 0 V 12.698 +65 0 V 12.699 +65 0 V 12.700 +65 0 V 12.701 +65 0 V 12.702 +65 0 V 12.703 +64 0 V 12.704 +65 0 V 12.705 +65 0 V 12.706 +65 0 V 12.707 +65 0 V 12.708 +65 0 V 12.709 +65 0 V 12.710 +65 0 V 12.711 +65 0 V 12.712 +65 0 V 12.713 +65 0 V 12.714 +65 0 V 12.715 +65 0 V 12.716 +65 0 V 12.717 +65 0 V 12.718 +65 0 V 12.719 +64 0 V 12.720 +65 0 V 12.721 +65 0 V 12.722 +65 0 V 12.723 +65 0 V 12.724 +65 0 V 12.725 +65 0 V 12.726 +65 0 V 12.727 +65 0 V 12.728 +65 0 V 12.729 +65 0 V 12.730 +65 0 V 12.731 +65 0 V 12.732 +65 0 V 12.733 +65 0 V 12.734 +65 0 V 12.735 +65 0 V 12.736 +64 0 V 12.737 +65 0 V 12.738 +65 0 V 12.739 +65 0 V 12.740 +65 0 V 12.741 +65 0 V 12.742 +65 0 V 12.743 +65 0 V 12.744 +65 0 V 12.745 +65 0 V 12.746 +65 0 V 12.747 +65 0 V 12.748 +65 0 V 12.749 +65 0 V 12.750 +65 0 V 12.751 +65 0 V 12.752 +64 0 V 12.753 +65 0 V 12.754 +65 0 V 12.755 +65 0 V 12.756 +65 0 V 12.757 +65 0 V 12.758 +65 0 V 12.759 +65 0 V 12.760 +65 0 V 12.761 +65 0 V 12.762 +65 0 V 12.763 +65 0 V 12.764 +65 0 V 12.765 +65 0 V 12.766 +65 0 V 12.767 +65 0 V 12.768 +65 0 V 12.769 +64 0 V 12.770 +65 0 V 12.771 +65 0 V 12.772 +65 0 V 12.773 +65 0 V 12.774 +65 0 V 12.775 +65 0 V 12.776 +65 0 V 12.777 +65 0 V 12.778 +65 0 V 12.779 +65 0 V 12.780 +65 0 V 12.781 +65 0 V 12.782 +65 0 V 12.783 +65 0 V 12.784 +65 0 V 12.785 +64 0 V 12.786 +65 0 V 12.787 +65 0 V 12.788 +65 0 V 12.789 +65 0 V 12.790 +65 0 V 12.791 +65 0 V 12.792 +65 0 V 12.793 +65 0 V 12.794 +% End plot #1 12.795 +% Begin plot #2 12.796 +stroke 12.797 +2.000 UL 12.798 +LT1 12.799 +LCb setrgbcolor 12.800 +6296 4486 M 12.801 +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] 12.802 +] -46.7 MRshow 12.803 +LT1 12.804 +6380 4486 M 12.805 +399 0 V 12.806 +615 4310 M 12.807 +29 -744 V 12.808 +45 -967 V 12.809 +789 1813 L 12.810 +981 1267 L 12.811 +1367 894 L 12.812 +2136 647 L 12.813 +3680 554 L 12.814 +6765 499 L 12.815 +% End plot #2 12.816 +% Begin plot #3 12.817 +stroke 12.818 +LT2 12.819 +LCb setrgbcolor 12.820 +6296 4346 M 12.821 +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] 12.822 +] -46.7 MRshow 12.823 +LT2 12.824 +6380 4346 M 12.825 +399 0 V 12.826 +614 3429 M 12.827 +31 -756 V 12.828 +44 -376 V 12.829 +99 -805 V 12.830 +982 1060 L 12.831 +1367 799 L 12.832 +2138 624 L 12.833 +3681 527 L 12.834 +6765 490 L 12.835 +% End plot #3 12.836 +% Begin plot #4 12.837 +stroke 12.838 +LT3 12.839 +LCb setrgbcolor 12.840 +6296 4206 M 12.841 +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] 12.842 +] -46.7 MRshow 12.843 +LT3 12.844 +6380 4206 M 12.845 +399 0 V 12.846 +615 3542 M 12.847 +29 -659 V 12.848 +48 -723 V 12.849 +96 -550 V 12.850 +979 1098 L 12.851 +1367 808 L 12.852 +2137 629 L 12.853 +3681 542 L 12.854 +6767 489 L 12.855 +% End plot #4 12.856 +% Begin plot #5 12.857 +stroke 12.858 +LT4 12.859 +LCb setrgbcolor 12.860 +6296 4066 M 12.861 +[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] 12.862 +] -46.7 MRshow 12.863 +LT4 12.864 +6380 4066 M 12.865 +399 0 V 12.866 +615 3811 M 12.867 +26 -771 V 12.868 +48 -778 V 12.869 +99 -663 V 12.870 +979 1123 L 12.871 +1364 813 L 12.872 +2135 629 L 12.873 +3681 538 L 12.874 +6767 491 L 12.875 +% End plot #5 12.876 +stroke 12.877 +1.000 UL 12.878 +LTb 12.879 +518 4619 N 12.880 +518 448 L 12.881 +6429 0 V 12.882 +0 4171 V 12.883 +-6429 0 V 12.884 +Z stroke 12.885 +1.000 UP 12.886 +1.000 UL 12.887 +LTb 12.888 +stroke 12.889 +grestore 12.890 +end 12.891 +showpage 12.892 +%%Trailer 12.893 +%%DocumentFonts: Helvetica 12.894 +%%Pages: 1
13.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 13.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/xoanon_pthread_vthread_40core_80_160_320_640thds__o30000__perfCtrs.eps Sat Jan 21 20:51:58 2012 -0800 13.3 @@ -0,0 +1,1080 @@ 13.4 +%!PS-Adobe-2.0 13.5 +%%Title: pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.eps 13.6 +%%Creator: gnuplot 4.4 patchlevel 2 13.7 +%%CreationDate: Sat Jan 21 18:10:26 2012 13.8 +%%DocumentFonts: (atend) 13.9 +%%BoundingBox: 50 50 554 770 13.10 +%%Orientation: Landscape 13.11 +%%Pages: (atend) 13.12 +%%EndComments 13.13 +%%BeginProlog 13.14 +/gnudict 256 dict def 13.15 +gnudict begin 13.16 +% 13.17 +% The following true/false flags may be edited by hand if desired. 13.18 +% The unit line width and grayscale image gamma correction may also be changed. 13.19 +% 13.20 +/Color true def 13.21 +/Blacktext false def 13.22 +/Solid false def 13.23 +/Dashlength 1 def 13.24 +/Landscape true def 13.25 +/Level1 false def 13.26 +/Rounded false def 13.27 +/ClipToBoundingBox false def 13.28 +/TransparentPatterns false def 13.29 +/gnulinewidth 5.000 def 13.30 +/userlinewidth gnulinewidth def 13.31 +/Gamma 1.0 def 13.32 +% 13.33 +/vshift -46 def 13.34 +/dl1 { 13.35 + 10.0 Dashlength mul mul 13.36 + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if 13.37 +} def 13.38 +/dl2 { 13.39 + 10.0 Dashlength mul mul 13.40 + Rounded { currentlinewidth 0.75 mul add } if 13.41 +} def 13.42 +/hpt_ 31.5 def 13.43 +/vpt_ 31.5 def 13.44 +/hpt hpt_ def 13.45 +/vpt vpt_ def 13.46 +Level1 {} { 13.47 +/SDict 10 dict def 13.48 +systemdict /pdfmark known not { 13.49 + userdict /pdfmark systemdict /cleartomark get put 13.50 +} if 13.51 +SDict begin [ 13.52 + /Title (pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.eps) 13.53 + /Subject (gnuplot plot) 13.54 + /Creator (gnuplot 4.4 patchlevel 2) 13.55 + /Author (msach) 13.56 +% /Producer (gnuplot) 13.57 +% /Keywords () 13.58 + /CreationDate (Sat Jan 21 18:10:26 2012) 13.59 + /DOCINFO pdfmark 13.60 +end 13.61 +} ifelse 13.62 +/doclip { 13.63 + ClipToBoundingBox { 13.64 + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath 13.65 + clip 13.66 + } if 13.67 +} def 13.68 +% 13.69 +% Gnuplot Prolog Version 4.4 (August 2010) 13.70 +% 13.71 +%/SuppressPDFMark true def 13.72 +% 13.73 +/M {moveto} bind def 13.74 +/L {lineto} bind def 13.75 +/R {rmoveto} bind def 13.76 +/V {rlineto} bind def 13.77 +/N {newpath moveto} bind def 13.78 +/Z {closepath} bind def 13.79 +/C {setrgbcolor} bind def 13.80 +/f {rlineto fill} bind def 13.81 +/g {setgray} bind def 13.82 +/Gshow {show} def % May be redefined later in the file to support UTF-8 13.83 +/vpt2 vpt 2 mul def 13.84 +/hpt2 hpt 2 mul def 13.85 +/Lshow {currentpoint stroke M 0 vshift R 13.86 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 13.87 +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R 13.88 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 13.89 +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 13.90 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 13.91 +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def 13.92 + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def 13.93 +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} 13.94 + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def 13.95 +/BL {stroke userlinewidth 2 mul setlinewidth 13.96 + Rounded {1 setlinejoin 1 setlinecap} if} def 13.97 +/AL {stroke userlinewidth 2 div setlinewidth 13.98 + Rounded {1 setlinejoin 1 setlinecap} if} def 13.99 +/UL {dup gnulinewidth mul /userlinewidth exch def 13.100 + dup 1 lt {pop 1} if 10 mul /udl exch def} def 13.101 +/PL {stroke userlinewidth setlinewidth 13.102 + Rounded {1 setlinejoin 1 setlinecap} if} def 13.103 +3.8 setmiterlimit 13.104 +% Default Line colors 13.105 +/LCw {1 1 1} def 13.106 +/LCb {0 0 0} def 13.107 +/LCa {0 0 0} def 13.108 +/LC0 {1 0 0} def 13.109 +/LC1 {0 1 0} def 13.110 +/LC2 {0 0 1} def 13.111 +/LC3 {1 0 1} def 13.112 +/LC4 {0 1 1} def 13.113 +/LC5 {1 1 0} def 13.114 +/LC6 {0 0 0} def 13.115 +/LC7 {1 0.3 0} def 13.116 +/LC8 {0.5 0.5 0.5} def 13.117 +% Default Line Types 13.118 +/LTw {PL [] 1 setgray} def 13.119 +/LTb {BL [] LCb DL} def 13.120 +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def 13.121 +/LT0 {PL [] LC0 DL} def 13.122 +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def 13.123 +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def 13.124 +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def 13.125 +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def 13.126 +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def 13.127 +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def 13.128 +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def 13.129 +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def 13.130 +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def 13.131 +/Dia {stroke [] 0 setdash 2 copy vpt add M 13.132 + hpt neg vpt neg V hpt vpt neg V 13.133 + hpt vpt V hpt neg vpt V closepath stroke 13.134 + Pnt} def 13.135 +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V 13.136 + currentpoint stroke M 13.137 + hpt neg vpt neg R hpt2 0 V stroke 13.138 + } def 13.139 +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 13.140 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 13.141 + hpt2 neg 0 V closepath stroke 13.142 + Pnt} def 13.143 +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M 13.144 + hpt2 vpt2 neg V currentpoint stroke M 13.145 + hpt2 neg 0 R hpt2 vpt2 V stroke} def 13.146 +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M 13.147 + hpt neg vpt -1.62 mul V 13.148 + hpt 2 mul 0 V 13.149 + hpt neg vpt 1.62 mul V closepath stroke 13.150 + Pnt} def 13.151 +/Star {2 copy Pls Crs} def 13.152 +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M 13.153 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 13.154 + hpt2 neg 0 V closepath fill} def 13.155 +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M 13.156 + hpt neg vpt -1.62 mul V 13.157 + hpt 2 mul 0 V 13.158 + hpt neg vpt 1.62 mul V closepath fill} def 13.159 +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M 13.160 + hpt neg vpt 1.62 mul V 13.161 + hpt 2 mul 0 V 13.162 + hpt neg vpt -1.62 mul V closepath stroke 13.163 + Pnt} def 13.164 +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M 13.165 + hpt neg vpt 1.62 mul V 13.166 + hpt 2 mul 0 V 13.167 + hpt neg vpt -1.62 mul V closepath fill} def 13.168 +/DiaF {stroke [] 0 setdash vpt add M 13.169 + hpt neg vpt neg V hpt vpt neg V 13.170 + hpt vpt V hpt neg vpt V closepath fill} def 13.171 +/Pent {stroke [] 0 setdash 2 copy gsave 13.172 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 13.173 + closepath stroke grestore Pnt} def 13.174 +/PentF {stroke [] 0 setdash gsave 13.175 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 13.176 + closepath fill grestore} def 13.177 +/Circle {stroke [] 0 setdash 2 copy 13.178 + hpt 0 360 arc stroke Pnt} def 13.179 +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def 13.180 +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def 13.181 +/C1 {BL [] 0 setdash 2 copy moveto 13.182 + 2 copy vpt 0 90 arc closepath fill 13.183 + vpt 0 360 arc closepath} bind def 13.184 +/C2 {BL [] 0 setdash 2 copy moveto 13.185 + 2 copy vpt 90 180 arc closepath fill 13.186 + vpt 0 360 arc closepath} bind def 13.187 +/C3 {BL [] 0 setdash 2 copy moveto 13.188 + 2 copy vpt 0 180 arc closepath fill 13.189 + vpt 0 360 arc closepath} bind def 13.190 +/C4 {BL [] 0 setdash 2 copy moveto 13.191 + 2 copy vpt 180 270 arc closepath fill 13.192 + vpt 0 360 arc closepath} bind def 13.193 +/C5 {BL [] 0 setdash 2 copy moveto 13.194 + 2 copy vpt 0 90 arc 13.195 + 2 copy moveto 13.196 + 2 copy vpt 180 270 arc closepath fill 13.197 + vpt 0 360 arc} bind def 13.198 +/C6 {BL [] 0 setdash 2 copy moveto 13.199 + 2 copy vpt 90 270 arc closepath fill 13.200 + vpt 0 360 arc closepath} bind def 13.201 +/C7 {BL [] 0 setdash 2 copy moveto 13.202 + 2 copy vpt 0 270 arc closepath fill 13.203 + vpt 0 360 arc closepath} bind def 13.204 +/C8 {BL [] 0 setdash 2 copy moveto 13.205 + 2 copy vpt 270 360 arc closepath fill 13.206 + vpt 0 360 arc closepath} bind def 13.207 +/C9 {BL [] 0 setdash 2 copy moveto 13.208 + 2 copy vpt 270 450 arc closepath fill 13.209 + vpt 0 360 arc closepath} bind def 13.210 +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 13.211 + 2 copy moveto 13.212 + 2 copy vpt 90 180 arc closepath fill 13.213 + vpt 0 360 arc closepath} bind def 13.214 +/C11 {BL [] 0 setdash 2 copy moveto 13.215 + 2 copy vpt 0 180 arc closepath fill 13.216 + 2 copy moveto 13.217 + 2 copy vpt 270 360 arc closepath fill 13.218 + vpt 0 360 arc closepath} bind def 13.219 +/C12 {BL [] 0 setdash 2 copy moveto 13.220 + 2 copy vpt 180 360 arc closepath fill 13.221 + vpt 0 360 arc closepath} bind def 13.222 +/C13 {BL [] 0 setdash 2 copy moveto 13.223 + 2 copy vpt 0 90 arc closepath fill 13.224 + 2 copy moveto 13.225 + 2 copy vpt 180 360 arc closepath fill 13.226 + vpt 0 360 arc closepath} bind def 13.227 +/C14 {BL [] 0 setdash 2 copy moveto 13.228 + 2 copy vpt 90 360 arc closepath fill 13.229 + vpt 0 360 arc} bind def 13.230 +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill 13.231 + vpt 0 360 arc closepath} bind def 13.232 +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto 13.233 + neg 0 rlineto closepath} bind def 13.234 +/Square {dup Rec} bind def 13.235 +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def 13.236 +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def 13.237 +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def 13.238 +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 13.239 +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def 13.240 +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 13.241 +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill 13.242 + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 13.243 +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def 13.244 +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 13.245 + 2 copy vpt Square fill Bsquare} bind def 13.246 +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def 13.247 +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def 13.248 +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill 13.249 + Bsquare} bind def 13.250 +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill 13.251 + Bsquare} bind def 13.252 +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def 13.253 +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 13.254 + 2 copy vpt Square fill Bsquare} bind def 13.255 +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 13.256 + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 13.257 +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def 13.258 +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def 13.259 +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def 13.260 +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def 13.261 +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def 13.262 +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def 13.263 +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def 13.264 +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def 13.265 +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def 13.266 +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def 13.267 +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def 13.268 +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def 13.269 +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def 13.270 +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def 13.271 +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def 13.272 +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def 13.273 +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def 13.274 +/DiaE {stroke [] 0 setdash vpt add M 13.275 + hpt neg vpt neg V hpt vpt neg V 13.276 + hpt vpt V hpt neg vpt V closepath stroke} def 13.277 +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M 13.278 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 13.279 + hpt2 neg 0 V closepath stroke} def 13.280 +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M 13.281 + hpt neg vpt -1.62 mul V 13.282 + hpt 2 mul 0 V 13.283 + hpt neg vpt 1.62 mul V closepath stroke} def 13.284 +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M 13.285 + hpt neg vpt 1.62 mul V 13.286 + hpt 2 mul 0 V 13.287 + hpt neg vpt -1.62 mul V closepath stroke} def 13.288 +/PentE {stroke [] 0 setdash gsave 13.289 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 13.290 + closepath stroke grestore} def 13.291 +/CircE {stroke [] 0 setdash 13.292 + hpt 0 360 arc stroke} def 13.293 +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def 13.294 +/DiaW {stroke [] 0 setdash vpt add M 13.295 + hpt neg vpt neg V hpt vpt neg V 13.296 + hpt vpt V hpt neg vpt V Opaque stroke} def 13.297 +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M 13.298 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 13.299 + hpt2 neg 0 V Opaque stroke} def 13.300 +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M 13.301 + hpt neg vpt -1.62 mul V 13.302 + hpt 2 mul 0 V 13.303 + hpt neg vpt 1.62 mul V Opaque stroke} def 13.304 +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M 13.305 + hpt neg vpt 1.62 mul V 13.306 + hpt 2 mul 0 V 13.307 + hpt neg vpt -1.62 mul V Opaque stroke} def 13.308 +/PentW {stroke [] 0 setdash gsave 13.309 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 13.310 + Opaque stroke grestore} def 13.311 +/CircW {stroke [] 0 setdash 13.312 + hpt 0 360 arc Opaque stroke} def 13.313 +/BoxFill {gsave Rec 1 setgray fill grestore} def 13.314 +/Density { 13.315 + /Fillden exch def 13.316 + currentrgbcolor 13.317 + /ColB exch def /ColG exch def /ColR exch def 13.318 + /ColR ColR Fillden mul Fillden sub 1 add def 13.319 + /ColG ColG Fillden mul Fillden sub 1 add def 13.320 + /ColB ColB Fillden mul Fillden sub 1 add def 13.321 + ColR ColG ColB setrgbcolor} def 13.322 +/BoxColFill {gsave Rec PolyFill} def 13.323 +/PolyFill {gsave Density fill grestore grestore} def 13.324 +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def 13.325 +% 13.326 +% PostScript Level 1 Pattern Fill routine for rectangles 13.327 +% Usage: x y w h s a XX PatternFill 13.328 +% x,y = lower left corner of box to be filled 13.329 +% w,h = width and height of box 13.330 +% a = angle in degrees between lines and x-axis 13.331 +% XX = 0/1 for no/yes cross-hatch 13.332 +% 13.333 +/PatternFill {gsave /PFa [ 9 2 roll ] def 13.334 + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate 13.335 + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec 13.336 + gsave 1 setgray fill grestore clip 13.337 + currentlinewidth 0.5 mul setlinewidth 13.338 + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 13.339 + 0 0 M PFa 5 get rotate PFs -2 div dup translate 13.340 + 0 1 PFs PFa 4 get div 1 add floor cvi 13.341 + {PFa 4 get mul 0 M 0 PFs V} for 13.342 + 0 PFa 6 get ne { 13.343 + 0 1 PFs PFa 4 get div 1 add floor cvi 13.344 + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for 13.345 + } if 13.346 + stroke grestore} def 13.347 +% 13.348 +/languagelevel where 13.349 + {pop languagelevel} {1} ifelse 13.350 + 2 lt 13.351 + {/InterpretLevel1 true def} 13.352 + {/InterpretLevel1 Level1 def} 13.353 + ifelse 13.354 +% 13.355 +% PostScript level 2 pattern fill definitions 13.356 +% 13.357 +/Level2PatternFill { 13.358 +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} 13.359 + bind def 13.360 +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def 13.361 +<< Tile8x8 13.362 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 13.363 +>> matrix makepattern 13.364 +/Pat1 exch def 13.365 +<< Tile8x8 13.366 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke 13.367 + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} 13.368 +>> matrix makepattern 13.369 +/Pat2 exch def 13.370 +<< Tile8x8 13.371 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L 13.372 + 8 8 L 8 0 L 0 0 L fill} 13.373 +>> matrix makepattern 13.374 +/Pat3 exch def 13.375 +<< Tile8x8 13.376 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L 13.377 + 0 12 M 12 0 L stroke} 13.378 +>> matrix makepattern 13.379 +/Pat4 exch def 13.380 +<< Tile8x8 13.381 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L 13.382 + 0 -4 M 12 8 L stroke} 13.383 +>> matrix makepattern 13.384 +/Pat5 exch def 13.385 +<< Tile8x8 13.386 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L 13.387 + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} 13.388 +>> matrix makepattern 13.389 +/Pat6 exch def 13.390 +<< Tile8x8 13.391 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L 13.392 + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} 13.393 +>> matrix makepattern 13.394 +/Pat7 exch def 13.395 +<< Tile8x8 13.396 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L 13.397 + 12 0 M -4 8 L 12 4 M 0 10 L stroke} 13.398 +>> matrix makepattern 13.399 +/Pat8 exch def 13.400 +<< Tile8x8 13.401 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L 13.402 + -4 0 M 12 8 L -4 4 M 8 10 L stroke} 13.403 +>> matrix makepattern 13.404 +/Pat9 exch def 13.405 +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def 13.406 +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def 13.407 +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def 13.408 +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def 13.409 +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def 13.410 +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def 13.411 +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def 13.412 +} def 13.413 +% 13.414 +% 13.415 +%End of PostScript Level 2 code 13.416 +% 13.417 +/PatternBgnd { 13.418 + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse 13.419 +} def 13.420 +% 13.421 +% Substitute for Level 2 pattern fill codes with 13.422 +% grayscale if Level 2 support is not selected. 13.423 +% 13.424 +/Level1PatternFill { 13.425 +/Pattern1 {0.250 Density} bind def 13.426 +/Pattern2 {0.500 Density} bind def 13.427 +/Pattern3 {0.750 Density} bind def 13.428 +/Pattern4 {0.125 Density} bind def 13.429 +/Pattern5 {0.375 Density} bind def 13.430 +/Pattern6 {0.625 Density} bind def 13.431 +/Pattern7 {0.875 Density} bind def 13.432 +} def 13.433 +% 13.434 +% Now test for support of Level 2 code 13.435 +% 13.436 +Level1 {Level1PatternFill} {Level2PatternFill} ifelse 13.437 +% 13.438 +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont 13.439 +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall 13.440 +currentdict end definefont pop 13.441 +/MFshow { 13.442 + { dup 5 get 3 ge 13.443 + { 5 get 3 eq {gsave} {grestore} ifelse } 13.444 + {dup dup 0 get findfont exch 1 get scalefont setfont 13.445 + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 13.446 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq 13.447 + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 13.448 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div 13.449 + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get 13.450 + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop 13.451 + pop aload pop M} ifelse }ifelse }ifelse } 13.452 + ifelse } 13.453 + forall} def 13.454 +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def 13.455 +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } 13.456 + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont 13.457 + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def 13.458 +/MLshow { currentpoint stroke M 13.459 + 0 exch R 13.460 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 13.461 +/MRshow { currentpoint stroke M 13.462 + exch dup MFwidth neg 3 -1 roll R 13.463 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 13.464 +/MCshow { currentpoint stroke M 13.465 + exch dup MFwidth -2 div 3 -1 roll R 13.466 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 13.467 +/XYsave { [( ) 1 2 true false 3 ()] } bind def 13.468 +/XYrestore { [( ) 1 2 true false 4 ()] } bind def 13.469 +end 13.470 +%%EndProlog 13.471 +%%Page: 1 1 13.472 +gnudict begin 13.473 +gsave 13.474 +doclip 13.475 +50 50 translate 13.476 +0.100 0.100 scale 13.477 +90 rotate 13.478 +0 -5040 translate 13.479 +0 setgray 13.480 +newpath 13.481 +(Helvetica) findfont 140 scalefont setfont 13.482 +1.000 UL 13.483 +LTb 13.484 +686 960 M 13.485 +63 0 V 13.486 +6198 0 R 13.487 +-63 0 V 13.488 +stroke 13.489 +602 960 M 13.490 +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] 13.491 +] -46.7 MRshow 13.492 +1.000 UL 13.493 +LTb 13.494 +686 1483 M 13.495 +63 0 V 13.496 +6198 0 R 13.497 +-63 0 V 13.498 +stroke 13.499 +602 1483 M 13.500 +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] 13.501 +] -46.7 MRshow 13.502 +1.000 UL 13.503 +LTb 13.504 +686 2006 M 13.505 +63 0 V 13.506 +6198 0 R 13.507 +-63 0 V 13.508 +stroke 13.509 +602 2006 M 13.510 +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] 13.511 +] -46.7 MRshow 13.512 +1.000 UL 13.513 +LTb 13.514 +686 2528 M 13.515 +63 0 V 13.516 +6198 0 R 13.517 +-63 0 V 13.518 +stroke 13.519 +602 2528 M 13.520 +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] 13.521 +] -46.7 MRshow 13.522 +1.000 UL 13.523 +LTb 13.524 +686 3051 M 13.525 +63 0 V 13.526 +6198 0 R 13.527 +-63 0 V 13.528 +stroke 13.529 +602 3051 M 13.530 +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] 13.531 +] -46.7 MRshow 13.532 +1.000 UL 13.533 +LTb 13.534 +686 3574 M 13.535 +63 0 V 13.536 +6198 0 R 13.537 +-63 0 V 13.538 +stroke 13.539 +602 3574 M 13.540 +[ [(Helvetica) 140.0 0.0 true true 0 ( 300)] 13.541 +] -46.7 MRshow 13.542 +1.000 UL 13.543 +LTb 13.544 +686 4096 M 13.545 +63 0 V 13.546 +6198 0 R 13.547 +-63 0 V 13.548 +stroke 13.549 +602 4096 M 13.550 +[ [(Helvetica) 140.0 0.0 true true 0 ( 350)] 13.551 +] -46.7 MRshow 13.552 +1.000 UL 13.553 +LTb 13.554 +686 4619 M 13.555 +63 0 V 13.556 +6198 0 R 13.557 +-63 0 V 13.558 +stroke 13.559 +602 4619 M 13.560 +[ [(Helvetica) 140.0 0.0 true true 0 ( 400)] 13.561 +] -46.7 MRshow 13.562 +1.000 UL 13.563 +LTb 13.564 +686 448 M 13.565 +0 63 V 13.566 +0 4108 R 13.567 +0 -63 V 13.568 +stroke 13.569 +686 308 M 13.570 +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] 13.571 +] -46.7 MCshow 13.572 +1.000 UL 13.573 +LTb 13.574 +1469 448 M 13.575 +0 63 V 13.576 +0 4108 R 13.577 +0 -63 V 13.578 +stroke 13.579 +1469 308 M 13.580 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] 13.581 +] -46.7 MCshow 13.582 +1.000 UL 13.583 +LTb 13.584 +2251 448 M 13.585 +0 63 V 13.586 +0 4108 R 13.587 +0 -63 V 13.588 +stroke 13.589 +2251 308 M 13.590 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] 13.591 +] -46.7 MCshow 13.592 +1.000 UL 13.593 +LTb 13.594 +3034 448 M 13.595 +0 63 V 13.596 +0 4108 R 13.597 +0 -63 V 13.598 +stroke 13.599 +3034 308 M 13.600 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] 13.601 +] -46.7 MCshow 13.602 +1.000 UL 13.603 +LTb 13.604 +3817 448 M 13.605 +0 63 V 13.606 +0 4108 R 13.607 +0 -63 V 13.608 +stroke 13.609 +3817 308 M 13.610 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] 13.611 +] -46.7 MCshow 13.612 +1.000 UL 13.613 +LTb 13.614 +4599 448 M 13.615 +0 63 V 13.616 +0 4108 R 13.617 +0 -63 V 13.618 +stroke 13.619 +4599 308 M 13.620 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] 13.621 +] -46.7 MCshow 13.622 +1.000 UL 13.623 +LTb 13.624 +5382 448 M 13.625 +0 63 V 13.626 +0 4108 R 13.627 +0 -63 V 13.628 +stroke 13.629 +5382 308 M 13.630 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] 13.631 +] -46.7 MCshow 13.632 +1.000 UL 13.633 +LTb 13.634 +6164 448 M 13.635 +0 63 V 13.636 +0 4108 R 13.637 +0 -63 V 13.638 +stroke 13.639 +6164 308 M 13.640 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] 13.641 +] -46.7 MCshow 13.642 +1.000 UL 13.643 +LTb 13.644 +6947 448 M 13.645 +0 63 V 13.646 +0 4108 R 13.647 +0 -63 V 13.648 +stroke 13.649 +6947 308 M 13.650 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] 13.651 +] -46.7 MCshow 13.652 +1.000 UL 13.653 +LTb 13.654 +1.000 UL 13.655 +LTb 13.656 +686 4619 N 13.657 +686 448 L 13.658 +6261 0 V 13.659 +0 4171 V 13.660 +-6261 0 V 13.661 +Z stroke 13.662 +LCb setrgbcolor 13.663 +112 2533 M 13.664 +currentpoint gsave translate -270 rotate 0 0 moveto 13.665 +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] 13.666 +] -46.7 MCshow 13.667 +grestore 13.668 +LTb 13.669 +LCb setrgbcolor 13.670 +3816 98 M 13.671 +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] 13.672 +] -46.7 MCshow 13.673 +LTb 13.674 +3816 4829 M 13.675 +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread and pthreads on 4 socket by 10 core Westmere EX 2.4GHz)] 13.676 +] -46.7 MCshow 13.677 +1.000 UP 13.678 +1.000 UL 13.679 +LTb 13.680 +LCb setrgbcolor 13.681 +6044 4340 M 13.682 +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] 13.683 +] -46.7 MCshow 13.684 +LTb 13.685 +1.000 UL 13.686 +LTb 13.687 +5299 3710 N 13.688 +0 700 V 13.689 +1491 0 V 13.690 +0 -700 V 13.691 +-1491 0 V 13.692 +Z stroke 13.693 +5299 4270 M 13.694 +1491 0 V 13.695 +% Begin plot #1 13.696 +stroke 13.697 +2.000 UL 13.698 +LT0 13.699 +LCb setrgbcolor 13.700 +6223 4200 M 13.701 +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] 13.702 +] -46.7 MRshow 13.703 +LT0 13.704 +6307 4200 M 13.705 +399 0 V 13.706 +792 640 M 13.707 +41 -66 V 13.708 +71 -38 V 13.709 +139 -41 V 13.710 +286 -18 V 13.711 +560 -14 V 13.712 +1128 -7 V 13.713 +2256 -3 V 13.714 +1674 -1 V 13.715 +% End plot #1 13.716 +% Begin plot #2 13.717 +stroke 13.718 +LT2 13.719 +LCb setrgbcolor 13.720 +6223 4060 M 13.721 +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] 13.722 +] -46.7 MRshow 13.723 +LT2 13.724 +6307 4060 M 13.725 +399 0 V 13.726 +791 585 M 13.727 +45 5 V 13.728 +66 -89 V 13.729 +141 -21 V 13.730 +283 -7 V 13.731 +563 -13 V 13.732 +1127 -5 V 13.733 +2254 -4 V 13.734 +1677 -1 V 13.735 +% End plot #2 13.736 +% Begin plot #3 13.737 +stroke 13.738 +LT3 13.739 +LCb setrgbcolor 13.740 +6223 3920 M 13.741 +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] 13.742 +] -46.7 MRshow 13.743 +LT3 13.744 +6307 3920 M 13.745 +399 0 V 13.746 +790 592 M 13.747 +43 -41 V 13.748 +73 -10 V 13.749 +141 -45 V 13.750 +280 -20 V 13.751 +563 -11 V 13.752 +1128 -9 V 13.753 +2253 -5 V 13.754 +1676 -1 V 13.755 +% End plot #3 13.756 +% Begin plot #4 13.757 +stroke 13.758 +LT4 13.759 +LCb setrgbcolor 13.760 +6223 3780 M 13.761 +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] 13.762 +] -46.7 MRshow 13.763 +LT4 13.764 +6307 3780 M 13.765 +399 0 V 13.766 +791 600 M 13.767 +43 -44 V 13.768 +71 -31 V 13.769 +143 -22 V 13.770 +279 -30 V 13.771 +561 -14 V 13.772 +1130 -4 V 13.773 +2253 -3 V 13.774 +1676 -1 V 13.775 +% End plot #4 13.776 +stroke 13.777 +1.000 UL 13.778 +LTb 13.779 +686 4619 N 13.780 +686 448 L 13.781 +6261 0 V 13.782 +0 4171 V 13.783 +-6261 0 V 13.784 +Z stroke 13.785 +1.000 UP 13.786 +1.000 UL 13.787 +LTb 13.788 +1.000 UL 13.789 +LTb 13.790 +686 960 M 13.791 +63 0 V 13.792 +6198 0 R 13.793 +-63 0 V 13.794 +stroke 13.795 +602 960 M 13.796 +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] 13.797 +] -46.7 MRshow 13.798 +1.000 UL 13.799 +LTb 13.800 +686 1483 M 13.801 +63 0 V 13.802 +6198 0 R 13.803 +-63 0 V 13.804 +stroke 13.805 +602 1483 M 13.806 +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] 13.807 +] -46.7 MRshow 13.808 +1.000 UL 13.809 +LTb 13.810 +686 2006 M 13.811 +63 0 V 13.812 +6198 0 R 13.813 +-63 0 V 13.814 +stroke 13.815 +602 2006 M 13.816 +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] 13.817 +] -46.7 MRshow 13.818 +1.000 UL 13.819 +LTb 13.820 +686 2528 M 13.821 +63 0 V 13.822 +6198 0 R 13.823 +-63 0 V 13.824 +stroke 13.825 +602 2528 M 13.826 +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] 13.827 +] -46.7 MRshow 13.828 +1.000 UL 13.829 +LTb 13.830 +686 3051 M 13.831 +63 0 V 13.832 +6198 0 R 13.833 +-63 0 V 13.834 +stroke 13.835 +602 3051 M 13.836 +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] 13.837 +] -46.7 MRshow 13.838 +1.000 UL 13.839 +LTb 13.840 +686 3574 M 13.841 +63 0 V 13.842 +6198 0 R 13.843 +-63 0 V 13.844 +stroke 13.845 +602 3574 M 13.846 +[ [(Helvetica) 140.0 0.0 true true 0 ( 300)] 13.847 +] -46.7 MRshow 13.848 +1.000 UL 13.849 +LTb 13.850 +686 4096 M 13.851 +63 0 V 13.852 +6198 0 R 13.853 +-63 0 V 13.854 +stroke 13.855 +602 4096 M 13.856 +[ [(Helvetica) 140.0 0.0 true true 0 ( 350)] 13.857 +] -46.7 MRshow 13.858 +1.000 UL 13.859 +LTb 13.860 +686 4619 M 13.861 +63 0 V 13.862 +6198 0 R 13.863 +-63 0 V 13.864 +stroke 13.865 +602 4619 M 13.866 +[ [(Helvetica) 140.0 0.0 true true 0 ( 400)] 13.867 +] -46.7 MRshow 13.868 +1.000 UL 13.869 +LTb 13.870 +686 448 M 13.871 +0 63 V 13.872 +0 4108 R 13.873 +0 -63 V 13.874 +stroke 13.875 +686 308 M 13.876 +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] 13.877 +] -46.7 MCshow 13.878 +1.000 UL 13.879 +LTb 13.880 +1469 448 M 13.881 +0 63 V 13.882 +0 4108 R 13.883 +0 -63 V 13.884 +stroke 13.885 +1469 308 M 13.886 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] 13.887 +] -46.7 MCshow 13.888 +1.000 UL 13.889 +LTb 13.890 +2251 448 M 13.891 +0 63 V 13.892 +0 4108 R 13.893 +0 -63 V 13.894 +stroke 13.895 +2251 308 M 13.896 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] 13.897 +] -46.7 MCshow 13.898 +1.000 UL 13.899 +LTb 13.900 +3034 448 M 13.901 +0 63 V 13.902 +0 4108 R 13.903 +0 -63 V 13.904 +stroke 13.905 +3034 308 M 13.906 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] 13.907 +] -46.7 MCshow 13.908 +1.000 UL 13.909 +LTb 13.910 +3817 448 M 13.911 +0 63 V 13.912 +0 4108 R 13.913 +0 -63 V 13.914 +stroke 13.915 +3817 308 M 13.916 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] 13.917 +] -46.7 MCshow 13.918 +1.000 UL 13.919 +LTb 13.920 +4599 448 M 13.921 +0 63 V 13.922 +0 4108 R 13.923 +0 -63 V 13.924 +stroke 13.925 +4599 308 M 13.926 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] 13.927 +] -46.7 MCshow 13.928 +1.000 UL 13.929 +LTb 13.930 +5382 448 M 13.931 +0 63 V 13.932 +0 4108 R 13.933 +0 -63 V 13.934 +stroke 13.935 +5382 308 M 13.936 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] 13.937 +] -46.7 MCshow 13.938 +1.000 UL 13.939 +LTb 13.940 +6164 448 M 13.941 +0 63 V 13.942 +0 4108 R 13.943 +0 -63 V 13.944 +stroke 13.945 +6164 308 M 13.946 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] 13.947 +] -46.7 MCshow 13.948 +1.000 UL 13.949 +LTb 13.950 +6947 448 M 13.951 +0 63 V 13.952 +0 4108 R 13.953 +0 -63 V 13.954 +stroke 13.955 +6947 308 M 13.956 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] 13.957 +] -46.7 MCshow 13.958 +1.000 UL 13.959 +LTb 13.960 +1.000 UL 13.961 +LTb 13.962 +686 4619 N 13.963 +686 448 L 13.964 +6261 0 V 13.965 +0 4171 V 13.966 +-6261 0 V 13.967 +Z stroke 13.968 +LCb setrgbcolor 13.969 +112 2533 M 13.970 +currentpoint gsave translate -270 rotate 0 0 moveto 13.971 +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] 13.972 +] -46.7 MCshow 13.973 +grestore 13.974 +LTb 13.975 +LCb setrgbcolor 13.976 +3816 98 M 13.977 +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] 13.978 +] -46.7 MCshow 13.979 +LTb 13.980 +3816 4829 M 13.981 +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread and pthreads on 4 socket by 10 core Westmere EX 2.4GHz)] 13.982 +] -46.7 MCshow 13.983 +1.000 UP 13.984 +1.000 UL 13.985 +LTb 13.986 +LCb setrgbcolor 13.987 +6044 3608 M 13.988 +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] 13.989 +] -46.7 MCshow 13.990 +LTb 13.991 +1.000 UL 13.992 +LTb 13.993 +5299 2978 N 13.994 +0 700 V 13.995 +1491 0 V 13.996 +0 -700 V 13.997 +-1491 0 V 13.998 +Z stroke 13.999 +5299 3538 M 13.1000 +1491 0 V 13.1001 +% Begin plot #1 13.1002 +stroke 13.1003 +2.000 UL 13.1004 +LT5 13.1005 +LC7 setrgbcolor 13.1006 +LCb setrgbcolor 13.1007 +6223 3468 M 13.1008 +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] 13.1009 +] -46.7 MRshow 13.1010 +LT5 13.1011 +LC7 setrgbcolor 13.1012 +6307 3468 M 13.1013 +399 0 V 13.1014 +1930 4619 M 13.1015 +2375 3255 L 13.1016 +3855 2057 L 13.1017 +6947 1302 L 13.1018 +% End plot #1 13.1019 +% Begin plot #2 13.1020 +stroke 13.1021 +LT6 13.1022 +LCb setrgbcolor 13.1023 +6223 3328 M 13.1024 +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] 13.1025 +] -46.7 MRshow 13.1026 +LT6 13.1027 +6307 3328 M 13.1028 +399 0 V 13.1029 +1884 4619 M 13.1030 +2277 3359 L 13.1031 +4146 1826 L 13.1032 +6947 1115 L 13.1033 +% End plot #2 13.1034 +% Begin plot #3 13.1035 +stroke 13.1036 +LT7 13.1037 +LCb setrgbcolor 13.1038 +6223 3188 M 13.1039 +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] 13.1040 +] -46.7 MRshow 13.1041 +LT7 13.1042 +6307 3188 M 13.1043 +399 0 V 13.1044 +1469 4619 M 13.1045 +81 -643 V 13.1046 +2359 2465 L 13.1047 +3813 1527 L 13.1048 +6797 905 L 13.1049 +% End plot #3 13.1050 +% Begin plot #4 13.1051 +stroke 13.1052 +LT8 13.1053 +LCb setrgbcolor 13.1054 +6223 3048 M 13.1055 +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] 13.1056 +] -46.7 MRshow 13.1057 +LT8 13.1058 +6307 3048 M 13.1059 +399 0 V 13.1060 +2033 4619 M 13.1061 +2288 3323 L 13.1062 +3813 2431 L 13.1063 +6837 1268 L 13.1064 +% End plot #4 13.1065 +stroke 13.1066 +1.000 UL 13.1067 +LTb 13.1068 +686 4619 N 13.1069 +686 448 L 13.1070 +6261 0 V 13.1071 +0 4171 V 13.1072 +-6261 0 V 13.1073 +Z stroke 13.1074 +1.000 UP 13.1075 +1.000 UL 13.1076 +LTb 13.1077 +stroke 13.1078 +grestore 13.1079 +end 13.1080 +showpage 13.1081 +%%Trailer 13.1082 +%%DocumentFonts: Helvetica 13.1083 +%%Pages: 1
14.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 14.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/xoanon_pthreads_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps Sat Jan 21 20:51:58 2012 -0800 14.3 @@ -0,0 +1,886 @@ 14.4 +%!PS-Adobe-2.0 14.5 +%%Title: 80_160_320_640thds__o30000__perfCtrs.result.eps 14.6 +%%Creator: gnuplot 4.4 patchlevel 2 14.7 +%%CreationDate: Fri Jan 20 14:54:02 2012 14.8 +%%DocumentFonts: (atend) 14.9 +%%BoundingBox: 50 50 554 770 14.10 +%%Orientation: Landscape 14.11 +%%Pages: (atend) 14.12 +%%EndComments 14.13 +%%BeginProlog 14.14 +/gnudict 256 dict def 14.15 +gnudict begin 14.16 +% 14.17 +% The following true/false flags may be edited by hand if desired. 14.18 +% The unit line width and grayscale image gamma correction may also be changed. 14.19 +% 14.20 +/Color true def 14.21 +/Blacktext false def 14.22 +/Solid false def 14.23 +/Dashlength 1 def 14.24 +/Landscape true def 14.25 +/Level1 false def 14.26 +/Rounded false def 14.27 +/ClipToBoundingBox false def 14.28 +/TransparentPatterns false def 14.29 +/gnulinewidth 5.000 def 14.30 +/userlinewidth gnulinewidth def 14.31 +/Gamma 1.0 def 14.32 +% 14.33 +/vshift -46 def 14.34 +/dl1 { 14.35 + 10.0 Dashlength mul mul 14.36 + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if 14.37 +} def 14.38 +/dl2 { 14.39 + 10.0 Dashlength mul mul 14.40 + Rounded { currentlinewidth 0.75 mul add } if 14.41 +} def 14.42 +/hpt_ 31.5 def 14.43 +/vpt_ 31.5 def 14.44 +/hpt hpt_ def 14.45 +/vpt vpt_ def 14.46 +Level1 {} { 14.47 +/SDict 10 dict def 14.48 +systemdict /pdfmark known not { 14.49 + userdict /pdfmark systemdict /cleartomark get put 14.50 +} if 14.51 +SDict begin [ 14.52 + /Title (80_160_320_640thds__o30000__perfCtrs.result.eps) 14.53 + /Subject (gnuplot plot) 14.54 + /Creator (gnuplot 4.4 patchlevel 2) 14.55 + /Author (msach) 14.56 +% /Producer (gnuplot) 14.57 +% /Keywords () 14.58 + /CreationDate (Fri Jan 20 14:54:02 2012) 14.59 + /DOCINFO pdfmark 14.60 +end 14.61 +} ifelse 14.62 +/doclip { 14.63 + ClipToBoundingBox { 14.64 + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath 14.65 + clip 14.66 + } if 14.67 +} def 14.68 +% 14.69 +% Gnuplot Prolog Version 4.4 (August 2010) 14.70 +% 14.71 +%/SuppressPDFMark true def 14.72 +% 14.73 +/M {moveto} bind def 14.74 +/L {lineto} bind def 14.75 +/R {rmoveto} bind def 14.76 +/V {rlineto} bind def 14.77 +/N {newpath moveto} bind def 14.78 +/Z {closepath} bind def 14.79 +/C {setrgbcolor} bind def 14.80 +/f {rlineto fill} bind def 14.81 +/g {setgray} bind def 14.82 +/Gshow {show} def % May be redefined later in the file to support UTF-8 14.83 +/vpt2 vpt 2 mul def 14.84 +/hpt2 hpt 2 mul def 14.85 +/Lshow {currentpoint stroke M 0 vshift R 14.86 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 14.87 +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R 14.88 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 14.89 +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 14.90 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 14.91 +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def 14.92 + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def 14.93 +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} 14.94 + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def 14.95 +/BL {stroke userlinewidth 2 mul setlinewidth 14.96 + Rounded {1 setlinejoin 1 setlinecap} if} def 14.97 +/AL {stroke userlinewidth 2 div setlinewidth 14.98 + Rounded {1 setlinejoin 1 setlinecap} if} def 14.99 +/UL {dup gnulinewidth mul /userlinewidth exch def 14.100 + dup 1 lt {pop 1} if 10 mul /udl exch def} def 14.101 +/PL {stroke userlinewidth setlinewidth 14.102 + Rounded {1 setlinejoin 1 setlinecap} if} def 14.103 +3.8 setmiterlimit 14.104 +% Default Line colors 14.105 +/LCw {1 1 1} def 14.106 +/LCb {0 0 0} def 14.107 +/LCa {0 0 0} def 14.108 +/LC0 {1 0 0} def 14.109 +/LC1 {0 1 0} def 14.110 +/LC2 {0 0 1} def 14.111 +/LC3 {1 0 1} def 14.112 +/LC4 {0 1 1} def 14.113 +/LC5 {1 1 0} def 14.114 +/LC6 {0 0 0} def 14.115 +/LC7 {1 0.3 0} def 14.116 +/LC8 {0.5 0.5 0.5} def 14.117 +% Default Line Types 14.118 +/LTw {PL [] 1 setgray} def 14.119 +/LTb {BL [] LCb DL} def 14.120 +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def 14.121 +/LT0 {PL [] LC0 DL} def 14.122 +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def 14.123 +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def 14.124 +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def 14.125 +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def 14.126 +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def 14.127 +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def 14.128 +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def 14.129 +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def 14.130 +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def 14.131 +/Dia {stroke [] 0 setdash 2 copy vpt add M 14.132 + hpt neg vpt neg V hpt vpt neg V 14.133 + hpt vpt V hpt neg vpt V closepath stroke 14.134 + Pnt} def 14.135 +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V 14.136 + currentpoint stroke M 14.137 + hpt neg vpt neg R hpt2 0 V stroke 14.138 + } def 14.139 +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 14.140 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 14.141 + hpt2 neg 0 V closepath stroke 14.142 + Pnt} def 14.143 +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M 14.144 + hpt2 vpt2 neg V currentpoint stroke M 14.145 + hpt2 neg 0 R hpt2 vpt2 V stroke} def 14.146 +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M 14.147 + hpt neg vpt -1.62 mul V 14.148 + hpt 2 mul 0 V 14.149 + hpt neg vpt 1.62 mul V closepath stroke 14.150 + Pnt} def 14.151 +/Star {2 copy Pls Crs} def 14.152 +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M 14.153 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 14.154 + hpt2 neg 0 V closepath fill} def 14.155 +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M 14.156 + hpt neg vpt -1.62 mul V 14.157 + hpt 2 mul 0 V 14.158 + hpt neg vpt 1.62 mul V closepath fill} def 14.159 +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M 14.160 + hpt neg vpt 1.62 mul V 14.161 + hpt 2 mul 0 V 14.162 + hpt neg vpt -1.62 mul V closepath stroke 14.163 + Pnt} def 14.164 +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M 14.165 + hpt neg vpt 1.62 mul V 14.166 + hpt 2 mul 0 V 14.167 + hpt neg vpt -1.62 mul V closepath fill} def 14.168 +/DiaF {stroke [] 0 setdash vpt add M 14.169 + hpt neg vpt neg V hpt vpt neg V 14.170 + hpt vpt V hpt neg vpt V closepath fill} def 14.171 +/Pent {stroke [] 0 setdash 2 copy gsave 14.172 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 14.173 + closepath stroke grestore Pnt} def 14.174 +/PentF {stroke [] 0 setdash gsave 14.175 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 14.176 + closepath fill grestore} def 14.177 +/Circle {stroke [] 0 setdash 2 copy 14.178 + hpt 0 360 arc stroke Pnt} def 14.179 +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def 14.180 +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def 14.181 +/C1 {BL [] 0 setdash 2 copy moveto 14.182 + 2 copy vpt 0 90 arc closepath fill 14.183 + vpt 0 360 arc closepath} bind def 14.184 +/C2 {BL [] 0 setdash 2 copy moveto 14.185 + 2 copy vpt 90 180 arc closepath fill 14.186 + vpt 0 360 arc closepath} bind def 14.187 +/C3 {BL [] 0 setdash 2 copy moveto 14.188 + 2 copy vpt 0 180 arc closepath fill 14.189 + vpt 0 360 arc closepath} bind def 14.190 +/C4 {BL [] 0 setdash 2 copy moveto 14.191 + 2 copy vpt 180 270 arc closepath fill 14.192 + vpt 0 360 arc closepath} bind def 14.193 +/C5 {BL [] 0 setdash 2 copy moveto 14.194 + 2 copy vpt 0 90 arc 14.195 + 2 copy moveto 14.196 + 2 copy vpt 180 270 arc closepath fill 14.197 + vpt 0 360 arc} bind def 14.198 +/C6 {BL [] 0 setdash 2 copy moveto 14.199 + 2 copy vpt 90 270 arc closepath fill 14.200 + vpt 0 360 arc closepath} bind def 14.201 +/C7 {BL [] 0 setdash 2 copy moveto 14.202 + 2 copy vpt 0 270 arc closepath fill 14.203 + vpt 0 360 arc closepath} bind def 14.204 +/C8 {BL [] 0 setdash 2 copy moveto 14.205 + 2 copy vpt 270 360 arc closepath fill 14.206 + vpt 0 360 arc closepath} bind def 14.207 +/C9 {BL [] 0 setdash 2 copy moveto 14.208 + 2 copy vpt 270 450 arc closepath fill 14.209 + vpt 0 360 arc closepath} bind def 14.210 +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 14.211 + 2 copy moveto 14.212 + 2 copy vpt 90 180 arc closepath fill 14.213 + vpt 0 360 arc closepath} bind def 14.214 +/C11 {BL [] 0 setdash 2 copy moveto 14.215 + 2 copy vpt 0 180 arc closepath fill 14.216 + 2 copy moveto 14.217 + 2 copy vpt 270 360 arc closepath fill 14.218 + vpt 0 360 arc closepath} bind def 14.219 +/C12 {BL [] 0 setdash 2 copy moveto 14.220 + 2 copy vpt 180 360 arc closepath fill 14.221 + vpt 0 360 arc closepath} bind def 14.222 +/C13 {BL [] 0 setdash 2 copy moveto 14.223 + 2 copy vpt 0 90 arc closepath fill 14.224 + 2 copy moveto 14.225 + 2 copy vpt 180 360 arc closepath fill 14.226 + vpt 0 360 arc closepath} bind def 14.227 +/C14 {BL [] 0 setdash 2 copy moveto 14.228 + 2 copy vpt 90 360 arc closepath fill 14.229 + vpt 0 360 arc} bind def 14.230 +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill 14.231 + vpt 0 360 arc closepath} bind def 14.232 +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto 14.233 + neg 0 rlineto closepath} bind def 14.234 +/Square {dup Rec} bind def 14.235 +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def 14.236 +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def 14.237 +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def 14.238 +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 14.239 +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def 14.240 +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 14.241 +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill 14.242 + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 14.243 +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def 14.244 +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 14.245 + 2 copy vpt Square fill Bsquare} bind def 14.246 +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def 14.247 +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def 14.248 +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill 14.249 + Bsquare} bind def 14.250 +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill 14.251 + Bsquare} bind def 14.252 +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def 14.253 +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 14.254 + 2 copy vpt Square fill Bsquare} bind def 14.255 +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 14.256 + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 14.257 +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def 14.258 +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def 14.259 +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def 14.260 +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def 14.261 +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def 14.262 +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def 14.263 +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def 14.264 +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def 14.265 +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def 14.266 +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def 14.267 +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def 14.268 +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def 14.269 +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def 14.270 +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def 14.271 +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def 14.272 +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def 14.273 +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def 14.274 +/DiaE {stroke [] 0 setdash vpt add M 14.275 + hpt neg vpt neg V hpt vpt neg V 14.276 + hpt vpt V hpt neg vpt V closepath stroke} def 14.277 +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M 14.278 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 14.279 + hpt2 neg 0 V closepath stroke} def 14.280 +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M 14.281 + hpt neg vpt -1.62 mul V 14.282 + hpt 2 mul 0 V 14.283 + hpt neg vpt 1.62 mul V closepath stroke} def 14.284 +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M 14.285 + hpt neg vpt 1.62 mul V 14.286 + hpt 2 mul 0 V 14.287 + hpt neg vpt -1.62 mul V closepath stroke} def 14.288 +/PentE {stroke [] 0 setdash gsave 14.289 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 14.290 + closepath stroke grestore} def 14.291 +/CircE {stroke [] 0 setdash 14.292 + hpt 0 360 arc stroke} def 14.293 +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def 14.294 +/DiaW {stroke [] 0 setdash vpt add M 14.295 + hpt neg vpt neg V hpt vpt neg V 14.296 + hpt vpt V hpt neg vpt V Opaque stroke} def 14.297 +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M 14.298 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 14.299 + hpt2 neg 0 V Opaque stroke} def 14.300 +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M 14.301 + hpt neg vpt -1.62 mul V 14.302 + hpt 2 mul 0 V 14.303 + hpt neg vpt 1.62 mul V Opaque stroke} def 14.304 +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M 14.305 + hpt neg vpt 1.62 mul V 14.306 + hpt 2 mul 0 V 14.307 + hpt neg vpt -1.62 mul V Opaque stroke} def 14.308 +/PentW {stroke [] 0 setdash gsave 14.309 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 14.310 + Opaque stroke grestore} def 14.311 +/CircW {stroke [] 0 setdash 14.312 + hpt 0 360 arc Opaque stroke} def 14.313 +/BoxFill {gsave Rec 1 setgray fill grestore} def 14.314 +/Density { 14.315 + /Fillden exch def 14.316 + currentrgbcolor 14.317 + /ColB exch def /ColG exch def /ColR exch def 14.318 + /ColR ColR Fillden mul Fillden sub 1 add def 14.319 + /ColG ColG Fillden mul Fillden sub 1 add def 14.320 + /ColB ColB Fillden mul Fillden sub 1 add def 14.321 + ColR ColG ColB setrgbcolor} def 14.322 +/BoxColFill {gsave Rec PolyFill} def 14.323 +/PolyFill {gsave Density fill grestore grestore} def 14.324 +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def 14.325 +% 14.326 +% PostScript Level 1 Pattern Fill routine for rectangles 14.327 +% Usage: x y w h s a XX PatternFill 14.328 +% x,y = lower left corner of box to be filled 14.329 +% w,h = width and height of box 14.330 +% a = angle in degrees between lines and x-axis 14.331 +% XX = 0/1 for no/yes cross-hatch 14.332 +% 14.333 +/PatternFill {gsave /PFa [ 9 2 roll ] def 14.334 + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate 14.335 + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec 14.336 + gsave 1 setgray fill grestore clip 14.337 + currentlinewidth 0.5 mul setlinewidth 14.338 + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 14.339 + 0 0 M PFa 5 get rotate PFs -2 div dup translate 14.340 + 0 1 PFs PFa 4 get div 1 add floor cvi 14.341 + {PFa 4 get mul 0 M 0 PFs V} for 14.342 + 0 PFa 6 get ne { 14.343 + 0 1 PFs PFa 4 get div 1 add floor cvi 14.344 + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for 14.345 + } if 14.346 + stroke grestore} def 14.347 +% 14.348 +/languagelevel where 14.349 + {pop languagelevel} {1} ifelse 14.350 + 2 lt 14.351 + {/InterpretLevel1 true def} 14.352 + {/InterpretLevel1 Level1 def} 14.353 + ifelse 14.354 +% 14.355 +% PostScript level 2 pattern fill definitions 14.356 +% 14.357 +/Level2PatternFill { 14.358 +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} 14.359 + bind def 14.360 +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def 14.361 +<< Tile8x8 14.362 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 14.363 +>> matrix makepattern 14.364 +/Pat1 exch def 14.365 +<< Tile8x8 14.366 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke 14.367 + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} 14.368 +>> matrix makepattern 14.369 +/Pat2 exch def 14.370 +<< Tile8x8 14.371 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L 14.372 + 8 8 L 8 0 L 0 0 L fill} 14.373 +>> matrix makepattern 14.374 +/Pat3 exch def 14.375 +<< Tile8x8 14.376 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L 14.377 + 0 12 M 12 0 L stroke} 14.378 +>> matrix makepattern 14.379 +/Pat4 exch def 14.380 +<< Tile8x8 14.381 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L 14.382 + 0 -4 M 12 8 L stroke} 14.383 +>> matrix makepattern 14.384 +/Pat5 exch def 14.385 +<< Tile8x8 14.386 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L 14.387 + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} 14.388 +>> matrix makepattern 14.389 +/Pat6 exch def 14.390 +<< Tile8x8 14.391 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L 14.392 + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} 14.393 +>> matrix makepattern 14.394 +/Pat7 exch def 14.395 +<< Tile8x8 14.396 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L 14.397 + 12 0 M -4 8 L 12 4 M 0 10 L stroke} 14.398 +>> matrix makepattern 14.399 +/Pat8 exch def 14.400 +<< Tile8x8 14.401 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L 14.402 + -4 0 M 12 8 L -4 4 M 8 10 L stroke} 14.403 +>> matrix makepattern 14.404 +/Pat9 exch def 14.405 +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def 14.406 +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def 14.407 +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def 14.408 +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def 14.409 +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def 14.410 +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def 14.411 +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def 14.412 +} def 14.413 +% 14.414 +% 14.415 +%End of PostScript Level 2 code 14.416 +% 14.417 +/PatternBgnd { 14.418 + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse 14.419 +} def 14.420 +% 14.421 +% Substitute for Level 2 pattern fill codes with 14.422 +% grayscale if Level 2 support is not selected. 14.423 +% 14.424 +/Level1PatternFill { 14.425 +/Pattern1 {0.250 Density} bind def 14.426 +/Pattern2 {0.500 Density} bind def 14.427 +/Pattern3 {0.750 Density} bind def 14.428 +/Pattern4 {0.125 Density} bind def 14.429 +/Pattern5 {0.375 Density} bind def 14.430 +/Pattern6 {0.625 Density} bind def 14.431 +/Pattern7 {0.875 Density} bind def 14.432 +} def 14.433 +% 14.434 +% Now test for support of Level 2 code 14.435 +% 14.436 +Level1 {Level1PatternFill} {Level2PatternFill} ifelse 14.437 +% 14.438 +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont 14.439 +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall 14.440 +currentdict end definefont pop 14.441 +/MFshow { 14.442 + { dup 5 get 3 ge 14.443 + { 5 get 3 eq {gsave} {grestore} ifelse } 14.444 + {dup dup 0 get findfont exch 1 get scalefont setfont 14.445 + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 14.446 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq 14.447 + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 14.448 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div 14.449 + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get 14.450 + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop 14.451 + pop aload pop M} ifelse }ifelse }ifelse } 14.452 + ifelse } 14.453 + forall} def 14.454 +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def 14.455 +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } 14.456 + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont 14.457 + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def 14.458 +/MLshow { currentpoint stroke M 14.459 + 0 exch R 14.460 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 14.461 +/MRshow { currentpoint stroke M 14.462 + exch dup MFwidth neg 3 -1 roll R 14.463 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 14.464 +/MCshow { currentpoint stroke M 14.465 + exch dup MFwidth -2 div 3 -1 roll R 14.466 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 14.467 +/XYsave { [( ) 1 2 true false 3 ()] } bind def 14.468 +/XYrestore { [( ) 1 2 true false 4 ()] } bind def 14.469 +end 14.470 +%%EndProlog 14.471 +%%Page: 1 1 14.472 +gnudict begin 14.473 +gsave 14.474 +doclip 14.475 +50 50 translate 14.476 +0.100 0.100 scale 14.477 +90 rotate 14.478 +0 -5040 translate 14.479 +0 setgray 14.480 +newpath 14.481 +(Helvetica) findfont 140 scalefont setfont 14.482 +1.000 UL 14.483 +LTb 14.484 +686 443 M 14.485 +63 0 V 14.486 +6198 0 R 14.487 +-63 0 V 14.488 +stroke 14.489 +602 443 M 14.490 +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] 14.491 +] -46.7 MRshow 14.492 +1.000 UL 14.493 +LTb 14.494 +686 965 M 14.495 +63 0 V 14.496 +6198 0 R 14.497 +-63 0 V 14.498 +stroke 14.499 +602 965 M 14.500 +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] 14.501 +] -46.7 MRshow 14.502 +1.000 UL 14.503 +LTb 14.504 +686 1487 M 14.505 +63 0 V 14.506 +6198 0 R 14.507 +-63 0 V 14.508 +stroke 14.509 +602 1487 M 14.510 +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] 14.511 +] -46.7 MRshow 14.512 +1.000 UL 14.513 +LTb 14.514 +686 2009 M 14.515 +63 0 V 14.516 +6198 0 R 14.517 +-63 0 V 14.518 +stroke 14.519 +602 2009 M 14.520 +[ [(Helvetica) 140.0 0.0 true true 0 ( 300)] 14.521 +] -46.7 MRshow 14.522 +1.000 UL 14.523 +LTb 14.524 +686 2531 M 14.525 +63 0 V 14.526 +6198 0 R 14.527 +-63 0 V 14.528 +stroke 14.529 +602 2531 M 14.530 +[ [(Helvetica) 140.0 0.0 true true 0 ( 400)] 14.531 +] -46.7 MRshow 14.532 +1.000 UL 14.533 +LTb 14.534 +686 3053 M 14.535 +63 0 V 14.536 +6198 0 R 14.537 +-63 0 V 14.538 +stroke 14.539 +602 3053 M 14.540 +[ [(Helvetica) 140.0 0.0 true true 0 ( 500)] 14.541 +] -46.7 MRshow 14.542 +1.000 UL 14.543 +LTb 14.544 +686 3575 M 14.545 +63 0 V 14.546 +6198 0 R 14.547 +-63 0 V 14.548 +stroke 14.549 +602 3575 M 14.550 +[ [(Helvetica) 140.0 0.0 true true 0 ( 600)] 14.551 +] -46.7 MRshow 14.552 +1.000 UL 14.553 +LTb 14.554 +686 4097 M 14.555 +63 0 V 14.556 +6198 0 R 14.557 +-63 0 V 14.558 +stroke 14.559 +602 4097 M 14.560 +[ [(Helvetica) 140.0 0.0 true true 0 ( 700)] 14.561 +] -46.7 MRshow 14.562 +1.000 UL 14.563 +LTb 14.564 +686 4619 M 14.565 +63 0 V 14.566 +6198 0 R 14.567 +-63 0 V 14.568 +stroke 14.569 +602 4619 M 14.570 +[ [(Helvetica) 140.0 0.0 true true 0 ( 800)] 14.571 +] -46.7 MRshow 14.572 +1.000 UL 14.573 +LTb 14.574 +686 448 M 14.575 +0 63 V 14.576 +0 4108 R 14.577 +0 -63 V 14.578 +stroke 14.579 +686 308 M 14.580 +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] 14.581 +] -46.7 MCshow 14.582 +1.000 UL 14.583 +LTb 14.584 +1469 448 M 14.585 +0 63 V 14.586 +0 4108 R 14.587 +0 -63 V 14.588 +stroke 14.589 +1469 308 M 14.590 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] 14.591 +] -46.7 MCshow 14.592 +1.000 UL 14.593 +LTb 14.594 +2251 448 M 14.595 +0 63 V 14.596 +0 4108 R 14.597 +0 -63 V 14.598 +stroke 14.599 +2251 308 M 14.600 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] 14.601 +] -46.7 MCshow 14.602 +1.000 UL 14.603 +LTb 14.604 +3034 448 M 14.605 +0 63 V 14.606 +0 4108 R 14.607 +0 -63 V 14.608 +stroke 14.609 +3034 308 M 14.610 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] 14.611 +] -46.7 MCshow 14.612 +1.000 UL 14.613 +LTb 14.614 +3817 448 M 14.615 +0 63 V 14.616 +0 4108 R 14.617 +0 -63 V 14.618 +stroke 14.619 +3817 308 M 14.620 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] 14.621 +] -46.7 MCshow 14.622 +1.000 UL 14.623 +LTb 14.624 +4599 448 M 14.625 +0 63 V 14.626 +0 4108 R 14.627 +0 -63 V 14.628 +stroke 14.629 +4599 308 M 14.630 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] 14.631 +] -46.7 MCshow 14.632 +1.000 UL 14.633 +LTb 14.634 +5382 448 M 14.635 +0 63 V 14.636 +0 4108 R 14.637 +0 -63 V 14.638 +stroke 14.639 +5382 308 M 14.640 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] 14.641 +] -46.7 MCshow 14.642 +1.000 UL 14.643 +LTb 14.644 +6164 448 M 14.645 +0 63 V 14.646 +0 4108 R 14.647 +0 -63 V 14.648 +stroke 14.649 +6164 308 M 14.650 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] 14.651 +] -46.7 MCshow 14.652 +1.000 UL 14.653 +LTb 14.654 +6947 448 M 14.655 +0 63 V 14.656 +0 4108 R 14.657 +0 -63 V 14.658 +stroke 14.659 +6947 308 M 14.660 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] 14.661 +] -46.7 MCshow 14.662 +1.000 UL 14.663 +LTb 14.664 +1.000 UL 14.665 +LTb 14.666 +686 4619 N 14.667 +686 448 L 14.668 +6261 0 V 14.669 +0 4171 V 14.670 +-6261 0 V 14.671 +Z stroke 14.672 +LCb setrgbcolor 14.673 +112 2533 M 14.674 +currentpoint gsave translate -270 rotate 0 0 moveto 14.675 +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] 14.676 +] -46.7 MCshow 14.677 +grestore 14.678 +LTb 14.679 +LCb setrgbcolor 14.680 +3816 98 M 14.681 +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] 14.682 +] -46.7 MCshow 14.683 +LTb 14.684 +3816 4829 M 14.685 +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads on 2 socket by 20 core Westmere EX 2.4GHz)] 14.686 +] -46.7 MCshow 14.687 +1.000 UP 14.688 +1.000 UL 14.689 +LTb 14.690 +1.000 UL 14.691 +LTb 14.692 +5372 3996 N 14.693 +0 560 V 14.694 +1491 0 V 14.695 +0 -560 V 14.696 +-1491 0 V 14.697 +Z stroke 14.698 +5372 4556 M 14.699 +1491 0 V 14.700 +% Begin plot #1 14.701 +stroke 14.702 +LT1 14.703 +LCa setrgbcolor 14.704 +686 453 M 14.705 +63 0 V 14.706 +63 0 V 14.707 +64 0 V 14.708 +63 0 V 14.709 +63 0 V 14.710 +63 0 V 14.711 +64 0 V 14.712 +63 0 V 14.713 +63 0 V 14.714 +63 0 V 14.715 +64 0 V 14.716 +63 0 V 14.717 +63 0 V 14.718 +63 0 V 14.719 +64 0 V 14.720 +63 0 V 14.721 +63 0 V 14.722 +63 0 V 14.723 +64 0 V 14.724 +63 0 V 14.725 +63 0 V 14.726 +63 0 V 14.727 +64 0 V 14.728 +63 0 V 14.729 +63 0 V 14.730 +63 0 V 14.731 +64 0 V 14.732 +63 0 V 14.733 +63 0 V 14.734 +63 0 V 14.735 +64 0 V 14.736 +63 0 V 14.737 +63 0 V 14.738 +63 0 V 14.739 +63 0 V 14.740 +64 0 V 14.741 +63 0 V 14.742 +63 0 V 14.743 +63 0 V 14.744 +64 0 V 14.745 +63 0 V 14.746 +63 0 V 14.747 +63 0 V 14.748 +64 0 V 14.749 +63 0 V 14.750 +63 0 V 14.751 +63 0 V 14.752 +64 0 V 14.753 +63 0 V 14.754 +63 0 V 14.755 +63 0 V 14.756 +64 0 V 14.757 +63 0 V 14.758 +63 0 V 14.759 +63 0 V 14.760 +64 0 V 14.761 +63 0 V 14.762 +63 0 V 14.763 +63 0 V 14.764 +64 0 V 14.765 +63 0 V 14.766 +63 0 V 14.767 +63 0 V 14.768 +64 0 V 14.769 +63 0 V 14.770 +63 0 V 14.771 +63 0 V 14.772 +63 0 V 14.773 +64 0 V 14.774 +63 0 V 14.775 +63 0 V 14.776 +63 0 V 14.777 +64 0 V 14.778 +63 0 V 14.779 +63 0 V 14.780 +63 0 V 14.781 +64 0 V 14.782 +63 0 V 14.783 +63 0 V 14.784 +63 0 V 14.785 +64 0 V 14.786 +63 0 V 14.787 +63 0 V 14.788 +63 0 V 14.789 +64 0 V 14.790 +63 0 V 14.791 +63 0 V 14.792 +63 0 V 14.793 +64 0 V 14.794 +63 0 V 14.795 +63 0 V 14.796 +63 0 V 14.797 +64 0 V 14.798 +63 0 V 14.799 +63 0 V 14.800 +63 0 V 14.801 +64 0 V 14.802 +63 0 V 14.803 +63 0 V 14.804 +% End plot #1 14.805 +% Begin plot #2 14.806 +stroke 14.807 +2.000 UL 14.808 +LT1 14.809 +LCb setrgbcolor 14.810 +6296 4486 M 14.811 +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] 14.812 +] -46.7 MRshow 14.813 +LT1 14.814 +6380 4486 M 14.815 +399 0 V 14.816 +1403 4619 M 14.817 +1598 3039 L 14.818 +2375 1850 L 14.819 +3855 1252 L 14.820 +6947 875 L 14.821 +% End plot #2 14.822 +% Begin plot #3 14.823 +stroke 14.824 +LT2 14.825 +LCb setrgbcolor 14.826 +6296 4346 M 14.827 +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] 14.828 +] -46.7 MRshow 14.829 +LT2 14.830 +6380 4346 M 14.831 +399 0 V 14.832 +1258 4619 M 14.833 +1552 3062 L 14.834 +2277 1902 L 14.835 +4146 1136 L 14.836 +6947 781 L 14.837 +% End plot #3 14.838 +% Begin plot #4 14.839 +stroke 14.840 +LT3 14.841 +LCb setrgbcolor 14.842 +6296 4206 M 14.843 +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] 14.844 +] -46.7 MRshow 14.845 +LT3 14.846 +6380 4206 M 14.847 +399 0 V 14.848 +1084 4619 M 14.849 +91 -917 V 14.850 +1550 2210 L 14.851 +809 -755 V 14.852 +3813 987 L 14.853 +6797 676 L 14.854 +% End plot #4 14.855 +% Begin plot #5 14.856 +stroke 14.857 +LT4 14.858 +LCb setrgbcolor 14.859 +6296 4066 M 14.860 +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] 14.861 +] -46.7 MRshow 14.862 +LT4 14.863 +6380 4066 M 14.864 +399 0 V 14.865 +1407 4619 M 14.866 +159 -900 V 14.867 +2288 1884 L 14.868 +3813 1438 L 14.869 +6837 858 L 14.870 +% End plot #5 14.871 +stroke 14.872 +1.000 UL 14.873 +LTb 14.874 +686 4619 N 14.875 +686 448 L 14.876 +6261 0 V 14.877 +0 4171 V 14.878 +-6261 0 V 14.879 +Z stroke 14.880 +1.000 UP 14.881 +1.000 UL 14.882 +LTb 14.883 +stroke 14.884 +grestore 14.885 +end 14.886 +showpage 14.887 +%%Trailer 14.888 +%%DocumentFonts: Helvetica 14.889 +%%Pages: 1
15.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 15.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/xoanon_vthread_40core_80_160_320_640thds__o30000__perfCtrs.result.eps Sat Jan 21 20:51:58 2012 -0800 15.3 @@ -0,0 +1,884 @@ 15.4 +%!PS-Adobe-2.0 15.5 +%%Title: 80_160_320_640thds__o30000__perfCtrs.result.eps 15.6 +%%Creator: gnuplot 4.4 patchlevel 2 15.7 +%%CreationDate: Fri Jan 20 12:20:14 2012 15.8 +%%DocumentFonts: (atend) 15.9 +%%BoundingBox: 50 50 554 770 15.10 +%%Orientation: Landscape 15.11 +%%Pages: (atend) 15.12 +%%EndComments 15.13 +%%BeginProlog 15.14 +/gnudict 256 dict def 15.15 +gnudict begin 15.16 +% 15.17 +% The following true/false flags may be edited by hand if desired. 15.18 +% The unit line width and grayscale image gamma correction may also be changed. 15.19 +% 15.20 +/Color true def 15.21 +/Blacktext false def 15.22 +/Solid false def 15.23 +/Dashlength 1 def 15.24 +/Landscape true def 15.25 +/Level1 false def 15.26 +/Rounded false def 15.27 +/ClipToBoundingBox false def 15.28 +/TransparentPatterns false def 15.29 +/gnulinewidth 5.000 def 15.30 +/userlinewidth gnulinewidth def 15.31 +/Gamma 1.0 def 15.32 +% 15.33 +/vshift -46 def 15.34 +/dl1 { 15.35 + 10.0 Dashlength mul mul 15.36 + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if 15.37 +} def 15.38 +/dl2 { 15.39 + 10.0 Dashlength mul mul 15.40 + Rounded { currentlinewidth 0.75 mul add } if 15.41 +} def 15.42 +/hpt_ 31.5 def 15.43 +/vpt_ 31.5 def 15.44 +/hpt hpt_ def 15.45 +/vpt vpt_ def 15.46 +Level1 {} { 15.47 +/SDict 10 dict def 15.48 +systemdict /pdfmark known not { 15.49 + userdict /pdfmark systemdict /cleartomark get put 15.50 +} if 15.51 +SDict begin [ 15.52 + /Title (80_160_320_640thds__o30000__perfCtrs.result.eps) 15.53 + /Subject (gnuplot plot) 15.54 + /Creator (gnuplot 4.4 patchlevel 2) 15.55 + /Author (msach) 15.56 +% /Producer (gnuplot) 15.57 +% /Keywords () 15.58 + /CreationDate (Fri Jan 20 12:20:14 2012) 15.59 + /DOCINFO pdfmark 15.60 +end 15.61 +} ifelse 15.62 +/doclip { 15.63 + ClipToBoundingBox { 15.64 + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath 15.65 + clip 15.66 + } if 15.67 +} def 15.68 +% 15.69 +% Gnuplot Prolog Version 4.4 (August 2010) 15.70 +% 15.71 +%/SuppressPDFMark true def 15.72 +% 15.73 +/M {moveto} bind def 15.74 +/L {lineto} bind def 15.75 +/R {rmoveto} bind def 15.76 +/V {rlineto} bind def 15.77 +/N {newpath moveto} bind def 15.78 +/Z {closepath} bind def 15.79 +/C {setrgbcolor} bind def 15.80 +/f {rlineto fill} bind def 15.81 +/g {setgray} bind def 15.82 +/Gshow {show} def % May be redefined later in the file to support UTF-8 15.83 +/vpt2 vpt 2 mul def 15.84 +/hpt2 hpt 2 mul def 15.85 +/Lshow {currentpoint stroke M 0 vshift R 15.86 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 15.87 +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R 15.88 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 15.89 +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 15.90 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 15.91 +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def 15.92 + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def 15.93 +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} 15.94 + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def 15.95 +/BL {stroke userlinewidth 2 mul setlinewidth 15.96 + Rounded {1 setlinejoin 1 setlinecap} if} def 15.97 +/AL {stroke userlinewidth 2 div setlinewidth 15.98 + Rounded {1 setlinejoin 1 setlinecap} if} def 15.99 +/UL {dup gnulinewidth mul /userlinewidth exch def 15.100 + dup 1 lt {pop 1} if 10 mul /udl exch def} def 15.101 +/PL {stroke userlinewidth setlinewidth 15.102 + Rounded {1 setlinejoin 1 setlinecap} if} def 15.103 +3.8 setmiterlimit 15.104 +% Default Line colors 15.105 +/LCw {1 1 1} def 15.106 +/LCb {0 0 0} def 15.107 +/LCa {0 0 0} def 15.108 +/LC0 {1 0 0} def 15.109 +/LC1 {0 1 0} def 15.110 +/LC2 {0 0 1} def 15.111 +/LC3 {1 0 1} def 15.112 +/LC4 {0 1 1} def 15.113 +/LC5 {1 1 0} def 15.114 +/LC6 {0 0 0} def 15.115 +/LC7 {1 0.3 0} def 15.116 +/LC8 {0.5 0.5 0.5} def 15.117 +% Default Line Types 15.118 +/LTw {PL [] 1 setgray} def 15.119 +/LTb {BL [] LCb DL} def 15.120 +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def 15.121 +/LT0 {PL [] LC0 DL} def 15.122 +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def 15.123 +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def 15.124 +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def 15.125 +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def 15.126 +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def 15.127 +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def 15.128 +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def 15.129 +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def 15.130 +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def 15.131 +/Dia {stroke [] 0 setdash 2 copy vpt add M 15.132 + hpt neg vpt neg V hpt vpt neg V 15.133 + hpt vpt V hpt neg vpt V closepath stroke 15.134 + Pnt} def 15.135 +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V 15.136 + currentpoint stroke M 15.137 + hpt neg vpt neg R hpt2 0 V stroke 15.138 + } def 15.139 +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 15.140 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 15.141 + hpt2 neg 0 V closepath stroke 15.142 + Pnt} def 15.143 +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M 15.144 + hpt2 vpt2 neg V currentpoint stroke M 15.145 + hpt2 neg 0 R hpt2 vpt2 V stroke} def 15.146 +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M 15.147 + hpt neg vpt -1.62 mul V 15.148 + hpt 2 mul 0 V 15.149 + hpt neg vpt 1.62 mul V closepath stroke 15.150 + Pnt} def 15.151 +/Star {2 copy Pls Crs} def 15.152 +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M 15.153 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 15.154 + hpt2 neg 0 V closepath fill} def 15.155 +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M 15.156 + hpt neg vpt -1.62 mul V 15.157 + hpt 2 mul 0 V 15.158 + hpt neg vpt 1.62 mul V closepath fill} def 15.159 +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M 15.160 + hpt neg vpt 1.62 mul V 15.161 + hpt 2 mul 0 V 15.162 + hpt neg vpt -1.62 mul V closepath stroke 15.163 + Pnt} def 15.164 +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M 15.165 + hpt neg vpt 1.62 mul V 15.166 + hpt 2 mul 0 V 15.167 + hpt neg vpt -1.62 mul V closepath fill} def 15.168 +/DiaF {stroke [] 0 setdash vpt add M 15.169 + hpt neg vpt neg V hpt vpt neg V 15.170 + hpt vpt V hpt neg vpt V closepath fill} def 15.171 +/Pent {stroke [] 0 setdash 2 copy gsave 15.172 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 15.173 + closepath stroke grestore Pnt} def 15.174 +/PentF {stroke [] 0 setdash gsave 15.175 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 15.176 + closepath fill grestore} def 15.177 +/Circle {stroke [] 0 setdash 2 copy 15.178 + hpt 0 360 arc stroke Pnt} def 15.179 +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def 15.180 +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def 15.181 +/C1 {BL [] 0 setdash 2 copy moveto 15.182 + 2 copy vpt 0 90 arc closepath fill 15.183 + vpt 0 360 arc closepath} bind def 15.184 +/C2 {BL [] 0 setdash 2 copy moveto 15.185 + 2 copy vpt 90 180 arc closepath fill 15.186 + vpt 0 360 arc closepath} bind def 15.187 +/C3 {BL [] 0 setdash 2 copy moveto 15.188 + 2 copy vpt 0 180 arc closepath fill 15.189 + vpt 0 360 arc closepath} bind def 15.190 +/C4 {BL [] 0 setdash 2 copy moveto 15.191 + 2 copy vpt 180 270 arc closepath fill 15.192 + vpt 0 360 arc closepath} bind def 15.193 +/C5 {BL [] 0 setdash 2 copy moveto 15.194 + 2 copy vpt 0 90 arc 15.195 + 2 copy moveto 15.196 + 2 copy vpt 180 270 arc closepath fill 15.197 + vpt 0 360 arc} bind def 15.198 +/C6 {BL [] 0 setdash 2 copy moveto 15.199 + 2 copy vpt 90 270 arc closepath fill 15.200 + vpt 0 360 arc closepath} bind def 15.201 +/C7 {BL [] 0 setdash 2 copy moveto 15.202 + 2 copy vpt 0 270 arc closepath fill 15.203 + vpt 0 360 arc closepath} bind def 15.204 +/C8 {BL [] 0 setdash 2 copy moveto 15.205 + 2 copy vpt 270 360 arc closepath fill 15.206 + vpt 0 360 arc closepath} bind def 15.207 +/C9 {BL [] 0 setdash 2 copy moveto 15.208 + 2 copy vpt 270 450 arc closepath fill 15.209 + vpt 0 360 arc closepath} bind def 15.210 +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 15.211 + 2 copy moveto 15.212 + 2 copy vpt 90 180 arc closepath fill 15.213 + vpt 0 360 arc closepath} bind def 15.214 +/C11 {BL [] 0 setdash 2 copy moveto 15.215 + 2 copy vpt 0 180 arc closepath fill 15.216 + 2 copy moveto 15.217 + 2 copy vpt 270 360 arc closepath fill 15.218 + vpt 0 360 arc closepath} bind def 15.219 +/C12 {BL [] 0 setdash 2 copy moveto 15.220 + 2 copy vpt 180 360 arc closepath fill 15.221 + vpt 0 360 arc closepath} bind def 15.222 +/C13 {BL [] 0 setdash 2 copy moveto 15.223 + 2 copy vpt 0 90 arc closepath fill 15.224 + 2 copy moveto 15.225 + 2 copy vpt 180 360 arc closepath fill 15.226 + vpt 0 360 arc closepath} bind def 15.227 +/C14 {BL [] 0 setdash 2 copy moveto 15.228 + 2 copy vpt 90 360 arc closepath fill 15.229 + vpt 0 360 arc} bind def 15.230 +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill 15.231 + vpt 0 360 arc closepath} bind def 15.232 +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto 15.233 + neg 0 rlineto closepath} bind def 15.234 +/Square {dup Rec} bind def 15.235 +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def 15.236 +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def 15.237 +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def 15.238 +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 15.239 +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def 15.240 +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 15.241 +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill 15.242 + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 15.243 +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def 15.244 +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 15.245 + 2 copy vpt Square fill Bsquare} bind def 15.246 +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def 15.247 +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def 15.248 +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill 15.249 + Bsquare} bind def 15.250 +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill 15.251 + Bsquare} bind def 15.252 +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def 15.253 +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 15.254 + 2 copy vpt Square fill Bsquare} bind def 15.255 +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 15.256 + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 15.257 +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def 15.258 +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def 15.259 +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def 15.260 +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def 15.261 +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def 15.262 +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def 15.263 +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def 15.264 +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def 15.265 +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def 15.266 +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def 15.267 +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def 15.268 +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def 15.269 +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def 15.270 +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def 15.271 +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def 15.272 +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def 15.273 +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def 15.274 +/DiaE {stroke [] 0 setdash vpt add M 15.275 + hpt neg vpt neg V hpt vpt neg V 15.276 + hpt vpt V hpt neg vpt V closepath stroke} def 15.277 +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M 15.278 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 15.279 + hpt2 neg 0 V closepath stroke} def 15.280 +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M 15.281 + hpt neg vpt -1.62 mul V 15.282 + hpt 2 mul 0 V 15.283 + hpt neg vpt 1.62 mul V closepath stroke} def 15.284 +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M 15.285 + hpt neg vpt 1.62 mul V 15.286 + hpt 2 mul 0 V 15.287 + hpt neg vpt -1.62 mul V closepath stroke} def 15.288 +/PentE {stroke [] 0 setdash gsave 15.289 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 15.290 + closepath stroke grestore} def 15.291 +/CircE {stroke [] 0 setdash 15.292 + hpt 0 360 arc stroke} def 15.293 +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def 15.294 +/DiaW {stroke [] 0 setdash vpt add M 15.295 + hpt neg vpt neg V hpt vpt neg V 15.296 + hpt vpt V hpt neg vpt V Opaque stroke} def 15.297 +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M 15.298 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 15.299 + hpt2 neg 0 V Opaque stroke} def 15.300 +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M 15.301 + hpt neg vpt -1.62 mul V 15.302 + hpt 2 mul 0 V 15.303 + hpt neg vpt 1.62 mul V Opaque stroke} def 15.304 +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M 15.305 + hpt neg vpt 1.62 mul V 15.306 + hpt 2 mul 0 V 15.307 + hpt neg vpt -1.62 mul V Opaque stroke} def 15.308 +/PentW {stroke [] 0 setdash gsave 15.309 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 15.310 + Opaque stroke grestore} def 15.311 +/CircW {stroke [] 0 setdash 15.312 + hpt 0 360 arc Opaque stroke} def 15.313 +/BoxFill {gsave Rec 1 setgray fill grestore} def 15.314 +/Density { 15.315 + /Fillden exch def 15.316 + currentrgbcolor 15.317 + /ColB exch def /ColG exch def /ColR exch def 15.318 + /ColR ColR Fillden mul Fillden sub 1 add def 15.319 + /ColG ColG Fillden mul Fillden sub 1 add def 15.320 + /ColB ColB Fillden mul Fillden sub 1 add def 15.321 + ColR ColG ColB setrgbcolor} def 15.322 +/BoxColFill {gsave Rec PolyFill} def 15.323 +/PolyFill {gsave Density fill grestore grestore} def 15.324 +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def 15.325 +% 15.326 +% PostScript Level 1 Pattern Fill routine for rectangles 15.327 +% Usage: x y w h s a XX PatternFill 15.328 +% x,y = lower left corner of box to be filled 15.329 +% w,h = width and height of box 15.330 +% a = angle in degrees between lines and x-axis 15.331 +% XX = 0/1 for no/yes cross-hatch 15.332 +% 15.333 +/PatternFill {gsave /PFa [ 9 2 roll ] def 15.334 + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate 15.335 + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec 15.336 + gsave 1 setgray fill grestore clip 15.337 + currentlinewidth 0.5 mul setlinewidth 15.338 + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 15.339 + 0 0 M PFa 5 get rotate PFs -2 div dup translate 15.340 + 0 1 PFs PFa 4 get div 1 add floor cvi 15.341 + {PFa 4 get mul 0 M 0 PFs V} for 15.342 + 0 PFa 6 get ne { 15.343 + 0 1 PFs PFa 4 get div 1 add floor cvi 15.344 + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for 15.345 + } if 15.346 + stroke grestore} def 15.347 +% 15.348 +/languagelevel where 15.349 + {pop languagelevel} {1} ifelse 15.350 + 2 lt 15.351 + {/InterpretLevel1 true def} 15.352 + {/InterpretLevel1 Level1 def} 15.353 + ifelse 15.354 +% 15.355 +% PostScript level 2 pattern fill definitions 15.356 +% 15.357 +/Level2PatternFill { 15.358 +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} 15.359 + bind def 15.360 +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def 15.361 +<< Tile8x8 15.362 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 15.363 +>> matrix makepattern 15.364 +/Pat1 exch def 15.365 +<< Tile8x8 15.366 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke 15.367 + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} 15.368 +>> matrix makepattern 15.369 +/Pat2 exch def 15.370 +<< Tile8x8 15.371 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L 15.372 + 8 8 L 8 0 L 0 0 L fill} 15.373 +>> matrix makepattern 15.374 +/Pat3 exch def 15.375 +<< Tile8x8 15.376 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L 15.377 + 0 12 M 12 0 L stroke} 15.378 +>> matrix makepattern 15.379 +/Pat4 exch def 15.380 +<< Tile8x8 15.381 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L 15.382 + 0 -4 M 12 8 L stroke} 15.383 +>> matrix makepattern 15.384 +/Pat5 exch def 15.385 +<< Tile8x8 15.386 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L 15.387 + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} 15.388 +>> matrix makepattern 15.389 +/Pat6 exch def 15.390 +<< Tile8x8 15.391 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L 15.392 + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} 15.393 +>> matrix makepattern 15.394 +/Pat7 exch def 15.395 +<< Tile8x8 15.396 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L 15.397 + 12 0 M -4 8 L 12 4 M 0 10 L stroke} 15.398 +>> matrix makepattern 15.399 +/Pat8 exch def 15.400 +<< Tile8x8 15.401 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L 15.402 + -4 0 M 12 8 L -4 4 M 8 10 L stroke} 15.403 +>> matrix makepattern 15.404 +/Pat9 exch def 15.405 +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def 15.406 +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def 15.407 +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def 15.408 +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def 15.409 +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def 15.410 +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def 15.411 +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def 15.412 +} def 15.413 +% 15.414 +% 15.415 +%End of PostScript Level 2 code 15.416 +% 15.417 +/PatternBgnd { 15.418 + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse 15.419 +} def 15.420 +% 15.421 +% Substitute for Level 2 pattern fill codes with 15.422 +% grayscale if Level 2 support is not selected. 15.423 +% 15.424 +/Level1PatternFill { 15.425 +/Pattern1 {0.250 Density} bind def 15.426 +/Pattern2 {0.500 Density} bind def 15.427 +/Pattern3 {0.750 Density} bind def 15.428 +/Pattern4 {0.125 Density} bind def 15.429 +/Pattern5 {0.375 Density} bind def 15.430 +/Pattern6 {0.625 Density} bind def 15.431 +/Pattern7 {0.875 Density} bind def 15.432 +} def 15.433 +% 15.434 +% Now test for support of Level 2 code 15.435 +% 15.436 +Level1 {Level1PatternFill} {Level2PatternFill} ifelse 15.437 +% 15.438 +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont 15.439 +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall 15.440 +currentdict end definefont pop 15.441 +/MFshow { 15.442 + { dup 5 get 3 ge 15.443 + { 5 get 3 eq {gsave} {grestore} ifelse } 15.444 + {dup dup 0 get findfont exch 1 get scalefont setfont 15.445 + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 15.446 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq 15.447 + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 15.448 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div 15.449 + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get 15.450 + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop 15.451 + pop aload pop M} ifelse }ifelse }ifelse } 15.452 + ifelse } 15.453 + forall} def 15.454 +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def 15.455 +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } 15.456 + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont 15.457 + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def 15.458 +/MLshow { currentpoint stroke M 15.459 + 0 exch R 15.460 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 15.461 +/MRshow { currentpoint stroke M 15.462 + exch dup MFwidth neg 3 -1 roll R 15.463 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 15.464 +/MCshow { currentpoint stroke M 15.465 + exch dup MFwidth -2 div 3 -1 roll R 15.466 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 15.467 +/XYsave { [( ) 1 2 true false 3 ()] } bind def 15.468 +/XYrestore { [( ) 1 2 true false 4 ()] } bind def 15.469 +end 15.470 +%%EndProlog 15.471 +%%Page: 1 1 15.472 +gnudict begin 15.473 +gsave 15.474 +doclip 15.475 +50 50 translate 15.476 +0.100 0.100 scale 15.477 +90 rotate 15.478 +0 -5040 translate 15.479 +0 setgray 15.480 +newpath 15.481 +(Helvetica) findfont 140 scalefont setfont 15.482 +1.000 UL 15.483 +LTb 15.484 +518 448 M 15.485 +63 0 V 15.486 +6366 0 R 15.487 +-63 0 V 15.488 +stroke 15.489 +434 448 M 15.490 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] 15.491 +] -46.7 MRshow 15.492 +1.000 UL 15.493 +LTb 15.494 +518 1044 M 15.495 +63 0 V 15.496 +6366 0 R 15.497 +-63 0 V 15.498 +stroke 15.499 +434 1044 M 15.500 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] 15.501 +] -46.7 MRshow 15.502 +1.000 UL 15.503 +LTb 15.504 +518 1640 M 15.505 +63 0 V 15.506 +6366 0 R 15.507 +-63 0 V 15.508 +stroke 15.509 +434 1640 M 15.510 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] 15.511 +] -46.7 MRshow 15.512 +1.000 UL 15.513 +LTb 15.514 +518 2236 M 15.515 +63 0 V 15.516 +6366 0 R 15.517 +-63 0 V 15.518 +stroke 15.519 +434 2236 M 15.520 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] 15.521 +] -46.7 MRshow 15.522 +1.000 UL 15.523 +LTb 15.524 +518 2831 M 15.525 +63 0 V 15.526 +6366 0 R 15.527 +-63 0 V 15.528 +stroke 15.529 +434 2831 M 15.530 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] 15.531 +] -46.7 MRshow 15.532 +1.000 UL 15.533 +LTb 15.534 +518 3427 M 15.535 +63 0 V 15.536 +6366 0 R 15.537 +-63 0 V 15.538 +stroke 15.539 +434 3427 M 15.540 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] 15.541 +] -46.7 MRshow 15.542 +1.000 UL 15.543 +LTb 15.544 +518 4023 M 15.545 +63 0 V 15.546 +6366 0 R 15.547 +-63 0 V 15.548 +stroke 15.549 +434 4023 M 15.550 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] 15.551 +] -46.7 MRshow 15.552 +1.000 UL 15.553 +LTb 15.554 +518 4619 M 15.555 +63 0 V 15.556 +6366 0 R 15.557 +-63 0 V 15.558 +stroke 15.559 +434 4619 M 15.560 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] 15.561 +] -46.7 MRshow 15.562 +1.000 UL 15.563 +LTb 15.564 +518 448 M 15.565 +0 63 V 15.566 +0 4108 R 15.567 +0 -63 V 15.568 +stroke 15.569 +518 308 M 15.570 +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] 15.571 +] -46.7 MCshow 15.572 +1.000 UL 15.573 +LTb 15.574 +1322 448 M 15.575 +0 63 V 15.576 +0 4108 R 15.577 +0 -63 V 15.578 +stroke 15.579 +1322 308 M 15.580 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] 15.581 +] -46.7 MCshow 15.582 +1.000 UL 15.583 +LTb 15.584 +2125 448 M 15.585 +0 63 V 15.586 +0 4108 R 15.587 +0 -63 V 15.588 +stroke 15.589 +2125 308 M 15.590 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] 15.591 +] -46.7 MCshow 15.592 +1.000 UL 15.593 +LTb 15.594 +2929 448 M 15.595 +0 63 V 15.596 +0 4108 R 15.597 +0 -63 V 15.598 +stroke 15.599 +2929 308 M 15.600 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] 15.601 +] -46.7 MCshow 15.602 +1.000 UL 15.603 +LTb 15.604 +3733 448 M 15.605 +0 63 V 15.606 +0 4108 R 15.607 +0 -63 V 15.608 +stroke 15.609 +3733 308 M 15.610 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] 15.611 +] -46.7 MCshow 15.612 +1.000 UL 15.613 +LTb 15.614 +4536 448 M 15.615 +0 63 V 15.616 +0 4108 R 15.617 +0 -63 V 15.618 +stroke 15.619 +4536 308 M 15.620 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] 15.621 +] -46.7 MCshow 15.622 +1.000 UL 15.623 +LTb 15.624 +5340 448 M 15.625 +0 63 V 15.626 +0 4108 R 15.627 +0 -63 V 15.628 +stroke 15.629 +5340 308 M 15.630 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] 15.631 +] -46.7 MCshow 15.632 +1.000 UL 15.633 +LTb 15.634 +6143 448 M 15.635 +0 63 V 15.636 +0 4108 R 15.637 +0 -63 V 15.638 +stroke 15.639 +6143 308 M 15.640 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] 15.641 +] -46.7 MCshow 15.642 +1.000 UL 15.643 +LTb 15.644 +6947 448 M 15.645 +0 63 V 15.646 +0 4108 R 15.647 +0 -63 V 15.648 +stroke 15.649 +6947 308 M 15.650 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] 15.651 +] -46.7 MCshow 15.652 +1.000 UL 15.653 +LTb 15.654 +1.000 UL 15.655 +LTb 15.656 +518 4619 N 15.657 +518 448 L 15.658 +6429 0 V 15.659 +0 4171 V 15.660 +-6429 0 V 15.661 +Z stroke 15.662 +LCb setrgbcolor 15.663 +112 2533 M 15.664 +currentpoint gsave translate -270 rotate 0 0 moveto 15.665 +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] 15.666 +] -46.7 MCshow 15.667 +grestore 15.668 +LTb 15.669 +LCb setrgbcolor 15.670 +3732 98 M 15.671 +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] 15.672 +] -46.7 MCshow 15.673 +LTb 15.674 +3732 4829 M 15.675 +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread on 2 socket by 20 core Westmere EX 2.4GHz)] 15.676 +] -46.7 MCshow 15.677 +1.000 UP 15.678 +1.000 UL 15.679 +LTb 15.680 +1.000 UL 15.681 +LTb 15.682 +5372 3996 N 15.683 +0 560 V 15.684 +1491 0 V 15.685 +0 -560 V 15.686 +-1491 0 V 15.687 +Z stroke 15.688 +5372 4556 M 15.689 +1491 0 V 15.690 +% Begin plot #1 15.691 +stroke 15.692 +LT1 15.693 +LCa setrgbcolor 15.694 +518 1044 M 15.695 +65 0 V 15.696 +65 0 V 15.697 +65 0 V 15.698 +65 0 V 15.699 +65 0 V 15.700 +65 0 V 15.701 +65 0 V 15.702 +65 0 V 15.703 +64 0 V 15.704 +65 0 V 15.705 +65 0 V 15.706 +65 0 V 15.707 +65 0 V 15.708 +65 0 V 15.709 +65 0 V 15.710 +65 0 V 15.711 +65 0 V 15.712 +65 0 V 15.713 +65 0 V 15.714 +65 0 V 15.715 +65 0 V 15.716 +65 0 V 15.717 +65 0 V 15.718 +65 0 V 15.719 +64 0 V 15.720 +65 0 V 15.721 +65 0 V 15.722 +65 0 V 15.723 +65 0 V 15.724 +65 0 V 15.725 +65 0 V 15.726 +65 0 V 15.727 +65 0 V 15.728 +65 0 V 15.729 +65 0 V 15.730 +65 0 V 15.731 +65 0 V 15.732 +65 0 V 15.733 +65 0 V 15.734 +65 0 V 15.735 +65 0 V 15.736 +64 0 V 15.737 +65 0 V 15.738 +65 0 V 15.739 +65 0 V 15.740 +65 0 V 15.741 +65 0 V 15.742 +65 0 V 15.743 +65 0 V 15.744 +65 0 V 15.745 +65 0 V 15.746 +65 0 V 15.747 +65 0 V 15.748 +65 0 V 15.749 +65 0 V 15.750 +65 0 V 15.751 +65 0 V 15.752 +64 0 V 15.753 +65 0 V 15.754 +65 0 V 15.755 +65 0 V 15.756 +65 0 V 15.757 +65 0 V 15.758 +65 0 V 15.759 +65 0 V 15.760 +65 0 V 15.761 +65 0 V 15.762 +65 0 V 15.763 +65 0 V 15.764 +65 0 V 15.765 +65 0 V 15.766 +65 0 V 15.767 +65 0 V 15.768 +65 0 V 15.769 +64 0 V 15.770 +65 0 V 15.771 +65 0 V 15.772 +65 0 V 15.773 +65 0 V 15.774 +65 0 V 15.775 +65 0 V 15.776 +65 0 V 15.777 +65 0 V 15.778 +65 0 V 15.779 +65 0 V 15.780 +65 0 V 15.781 +65 0 V 15.782 +65 0 V 15.783 +65 0 V 15.784 +65 0 V 15.785 +64 0 V 15.786 +65 0 V 15.787 +65 0 V 15.788 +65 0 V 15.789 +65 0 V 15.790 +65 0 V 15.791 +65 0 V 15.792 +65 0 V 15.793 +65 0 V 15.794 +% End plot #1 15.795 +% Begin plot #2 15.796 +stroke 15.797 +2.000 UL 15.798 +LT1 15.799 +LCb setrgbcolor 15.800 +6296 4486 M 15.801 +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] 15.802 +] -46.7 MRshow 15.803 +LT1 15.804 +6380 4486 M 15.805 +399 0 V 15.806 +794 4619 M 15.807 +885 3143 L 15.808 +1178 2107 L 15.809 +575 -824 V 15.810 +2911 893 L 15.811 +5228 755 L 15.812 +6947 687 L 15.813 +% End plot #2 15.814 +% Begin plot #3 15.815 +stroke 15.816 +LT2 15.817 +LCb setrgbcolor 15.818 +6296 4346 M 15.819 +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] 15.820 +] -46.7 MRshow 15.821 +LT2 15.822 +6380 4346 M 15.823 +399 0 V 15.824 +724 4619 M 15.825 +740 3491 L 15.826 +885 2254 L 15.827 +290 -364 V 15.828 +578 -735 V 15.829 +2911 854 L 15.830 +5225 614 L 15.831 +6947 582 L 15.832 +% End plot #3 15.833 +% Begin plot #4 15.834 +stroke 15.835 +LT3 15.836 +LCb setrgbcolor 15.837 +6296 4206 M 15.838 +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] 15.839 +] -46.7 MRshow 15.840 +LT3 15.841 +6380 4206 M 15.842 +399 0 V 15.843 +808 4619 M 15.844 +889 3194 L 15.845 +1177 2053 L 15.846 +577 -653 V 15.847 +2913 912 L 15.848 +5226 615 L 15.849 +6947 587 L 15.850 +% End plot #4 15.851 +% Begin plot #5 15.852 +stroke 15.853 +LT4 15.854 +LCb setrgbcolor 15.855 +6296 4066 M 15.856 +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] 15.857 +] -46.7 MRshow 15.858 +LT4 15.859 +6380 4066 M 15.860 +399 0 V 15.861 +768 4619 M 15.862 +890 3567 L 15.863 +1176 1855 L 15.864 +577 -758 V 15.865 +2912 862 L 15.866 +5226 649 L 15.867 +6947 612 L 15.868 +% End plot #5 15.869 +stroke 15.870 +1.000 UL 15.871 +LTb 15.872 +518 4619 N 15.873 +518 448 L 15.874 +6429 0 V 15.875 +0 4171 V 15.876 +-6429 0 V 15.877 +Z stroke 15.878 +1.000 UP 15.879 +1.000 UL 15.880 +LTb 15.881 +stroke 15.882 +grestore 15.883 +end 15.884 +showpage 15.885 +%%Trailer 15.886 +%%DocumentFonts: Helvetica 15.887 +%%Pages: 1
16.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 16.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/xoanon_vthread_80core_80_160_320_640thds__o30000__perfCtrs.meas.eps Sat Jan 21 20:51:58 2012 -0800 16.3 @@ -0,0 +1,872 @@ 16.4 +%!PS-Adobe-2.0 16.5 +%%Title: 80_160_320_640thds__o30000__perfCtrs.meas.eps 16.6 +%%Creator: gnuplot 4.4 patchlevel 2 16.7 +%%CreationDate: Fri Jan 20 13:38:10 2012 16.8 +%%DocumentFonts: (atend) 16.9 +%%BoundingBox: 50 50 554 770 16.10 +%%Orientation: Landscape 16.11 +%%Pages: (atend) 16.12 +%%EndComments 16.13 +%%BeginProlog 16.14 +/gnudict 256 dict def 16.15 +gnudict begin 16.16 +% 16.17 +% The following true/false flags may be edited by hand if desired. 16.18 +% The unit line width and grayscale image gamma correction may also be changed. 16.19 +% 16.20 +/Color true def 16.21 +/Blacktext false def 16.22 +/Solid false def 16.23 +/Dashlength 1 def 16.24 +/Landscape true def 16.25 +/Level1 false def 16.26 +/Rounded false def 16.27 +/ClipToBoundingBox false def 16.28 +/TransparentPatterns false def 16.29 +/gnulinewidth 5.000 def 16.30 +/userlinewidth gnulinewidth def 16.31 +/Gamma 1.0 def 16.32 +% 16.33 +/vshift -46 def 16.34 +/dl1 { 16.35 + 10.0 Dashlength mul mul 16.36 + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if 16.37 +} def 16.38 +/dl2 { 16.39 + 10.0 Dashlength mul mul 16.40 + Rounded { currentlinewidth 0.75 mul add } if 16.41 +} def 16.42 +/hpt_ 31.5 def 16.43 +/vpt_ 31.5 def 16.44 +/hpt hpt_ def 16.45 +/vpt vpt_ def 16.46 +Level1 {} { 16.47 +/SDict 10 dict def 16.48 +systemdict /pdfmark known not { 16.49 + userdict /pdfmark systemdict /cleartomark get put 16.50 +} if 16.51 +SDict begin [ 16.52 + /Title (80_160_320_640thds__o30000__perfCtrs.meas.eps) 16.53 + /Subject (gnuplot plot) 16.54 + /Creator (gnuplot 4.4 patchlevel 2) 16.55 + /Author (msach) 16.56 +% /Producer (gnuplot) 16.57 +% /Keywords () 16.58 + /CreationDate (Fri Jan 20 13:38:10 2012) 16.59 + /DOCINFO pdfmark 16.60 +end 16.61 +} ifelse 16.62 +/doclip { 16.63 + ClipToBoundingBox { 16.64 + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath 16.65 + clip 16.66 + } if 16.67 +} def 16.68 +% 16.69 +% Gnuplot Prolog Version 4.4 (August 2010) 16.70 +% 16.71 +%/SuppressPDFMark true def 16.72 +% 16.73 +/M {moveto} bind def 16.74 +/L {lineto} bind def 16.75 +/R {rmoveto} bind def 16.76 +/V {rlineto} bind def 16.77 +/N {newpath moveto} bind def 16.78 +/Z {closepath} bind def 16.79 +/C {setrgbcolor} bind def 16.80 +/f {rlineto fill} bind def 16.81 +/g {setgray} bind def 16.82 +/Gshow {show} def % May be redefined later in the file to support UTF-8 16.83 +/vpt2 vpt 2 mul def 16.84 +/hpt2 hpt 2 mul def 16.85 +/Lshow {currentpoint stroke M 0 vshift R 16.86 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 16.87 +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R 16.88 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 16.89 +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 16.90 + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def 16.91 +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def 16.92 + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def 16.93 +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} 16.94 + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def 16.95 +/BL {stroke userlinewidth 2 mul setlinewidth 16.96 + Rounded {1 setlinejoin 1 setlinecap} if} def 16.97 +/AL {stroke userlinewidth 2 div setlinewidth 16.98 + Rounded {1 setlinejoin 1 setlinecap} if} def 16.99 +/UL {dup gnulinewidth mul /userlinewidth exch def 16.100 + dup 1 lt {pop 1} if 10 mul /udl exch def} def 16.101 +/PL {stroke userlinewidth setlinewidth 16.102 + Rounded {1 setlinejoin 1 setlinecap} if} def 16.103 +3.8 setmiterlimit 16.104 +% Default Line colors 16.105 +/LCw {1 1 1} def 16.106 +/LCb {0 0 0} def 16.107 +/LCa {0 0 0} def 16.108 +/LC0 {1 0 0} def 16.109 +/LC1 {0 1 0} def 16.110 +/LC2 {0 0 1} def 16.111 +/LC3 {1 0 1} def 16.112 +/LC4 {0 1 1} def 16.113 +/LC5 {1 1 0} def 16.114 +/LC6 {0 0 0} def 16.115 +/LC7 {1 0.3 0} def 16.116 +/LC8 {0.5 0.5 0.5} def 16.117 +% Default Line Types 16.118 +/LTw {PL [] 1 setgray} def 16.119 +/LTb {BL [] LCb DL} def 16.120 +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def 16.121 +/LT0 {PL [] LC0 DL} def 16.122 +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def 16.123 +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def 16.124 +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def 16.125 +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def 16.126 +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def 16.127 +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def 16.128 +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def 16.129 +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def 16.130 +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def 16.131 +/Dia {stroke [] 0 setdash 2 copy vpt add M 16.132 + hpt neg vpt neg V hpt vpt neg V 16.133 + hpt vpt V hpt neg vpt V closepath stroke 16.134 + Pnt} def 16.135 +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V 16.136 + currentpoint stroke M 16.137 + hpt neg vpt neg R hpt2 0 V stroke 16.138 + } def 16.139 +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 16.140 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 16.141 + hpt2 neg 0 V closepath stroke 16.142 + Pnt} def 16.143 +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M 16.144 + hpt2 vpt2 neg V currentpoint stroke M 16.145 + hpt2 neg 0 R hpt2 vpt2 V stroke} def 16.146 +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M 16.147 + hpt neg vpt -1.62 mul V 16.148 + hpt 2 mul 0 V 16.149 + hpt neg vpt 1.62 mul V closepath stroke 16.150 + Pnt} def 16.151 +/Star {2 copy Pls Crs} def 16.152 +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M 16.153 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 16.154 + hpt2 neg 0 V closepath fill} def 16.155 +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M 16.156 + hpt neg vpt -1.62 mul V 16.157 + hpt 2 mul 0 V 16.158 + hpt neg vpt 1.62 mul V closepath fill} def 16.159 +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M 16.160 + hpt neg vpt 1.62 mul V 16.161 + hpt 2 mul 0 V 16.162 + hpt neg vpt -1.62 mul V closepath stroke 16.163 + Pnt} def 16.164 +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M 16.165 + hpt neg vpt 1.62 mul V 16.166 + hpt 2 mul 0 V 16.167 + hpt neg vpt -1.62 mul V closepath fill} def 16.168 +/DiaF {stroke [] 0 setdash vpt add M 16.169 + hpt neg vpt neg V hpt vpt neg V 16.170 + hpt vpt V hpt neg vpt V closepath fill} def 16.171 +/Pent {stroke [] 0 setdash 2 copy gsave 16.172 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 16.173 + closepath stroke grestore Pnt} def 16.174 +/PentF {stroke [] 0 setdash gsave 16.175 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 16.176 + closepath fill grestore} def 16.177 +/Circle {stroke [] 0 setdash 2 copy 16.178 + hpt 0 360 arc stroke Pnt} def 16.179 +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def 16.180 +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def 16.181 +/C1 {BL [] 0 setdash 2 copy moveto 16.182 + 2 copy vpt 0 90 arc closepath fill 16.183 + vpt 0 360 arc closepath} bind def 16.184 +/C2 {BL [] 0 setdash 2 copy moveto 16.185 + 2 copy vpt 90 180 arc closepath fill 16.186 + vpt 0 360 arc closepath} bind def 16.187 +/C3 {BL [] 0 setdash 2 copy moveto 16.188 + 2 copy vpt 0 180 arc closepath fill 16.189 + vpt 0 360 arc closepath} bind def 16.190 +/C4 {BL [] 0 setdash 2 copy moveto 16.191 + 2 copy vpt 180 270 arc closepath fill 16.192 + vpt 0 360 arc closepath} bind def 16.193 +/C5 {BL [] 0 setdash 2 copy moveto 16.194 + 2 copy vpt 0 90 arc 16.195 + 2 copy moveto 16.196 + 2 copy vpt 180 270 arc closepath fill 16.197 + vpt 0 360 arc} bind def 16.198 +/C6 {BL [] 0 setdash 2 copy moveto 16.199 + 2 copy vpt 90 270 arc closepath fill 16.200 + vpt 0 360 arc closepath} bind def 16.201 +/C7 {BL [] 0 setdash 2 copy moveto 16.202 + 2 copy vpt 0 270 arc closepath fill 16.203 + vpt 0 360 arc closepath} bind def 16.204 +/C8 {BL [] 0 setdash 2 copy moveto 16.205 + 2 copy vpt 270 360 arc closepath fill 16.206 + vpt 0 360 arc closepath} bind def 16.207 +/C9 {BL [] 0 setdash 2 copy moveto 16.208 + 2 copy vpt 270 450 arc closepath fill 16.209 + vpt 0 360 arc closepath} bind def 16.210 +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 16.211 + 2 copy moveto 16.212 + 2 copy vpt 90 180 arc closepath fill 16.213 + vpt 0 360 arc closepath} bind def 16.214 +/C11 {BL [] 0 setdash 2 copy moveto 16.215 + 2 copy vpt 0 180 arc closepath fill 16.216 + 2 copy moveto 16.217 + 2 copy vpt 270 360 arc closepath fill 16.218 + vpt 0 360 arc closepath} bind def 16.219 +/C12 {BL [] 0 setdash 2 copy moveto 16.220 + 2 copy vpt 180 360 arc closepath fill 16.221 + vpt 0 360 arc closepath} bind def 16.222 +/C13 {BL [] 0 setdash 2 copy moveto 16.223 + 2 copy vpt 0 90 arc closepath fill 16.224 + 2 copy moveto 16.225 + 2 copy vpt 180 360 arc closepath fill 16.226 + vpt 0 360 arc closepath} bind def 16.227 +/C14 {BL [] 0 setdash 2 copy moveto 16.228 + 2 copy vpt 90 360 arc closepath fill 16.229 + vpt 0 360 arc} bind def 16.230 +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill 16.231 + vpt 0 360 arc closepath} bind def 16.232 +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto 16.233 + neg 0 rlineto closepath} bind def 16.234 +/Square {dup Rec} bind def 16.235 +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def 16.236 +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def 16.237 +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def 16.238 +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 16.239 +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def 16.240 +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 16.241 +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill 16.242 + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def 16.243 +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def 16.244 +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 16.245 + 2 copy vpt Square fill Bsquare} bind def 16.246 +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def 16.247 +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def 16.248 +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill 16.249 + Bsquare} bind def 16.250 +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill 16.251 + Bsquare} bind def 16.252 +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def 16.253 +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 16.254 + 2 copy vpt Square fill Bsquare} bind def 16.255 +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 16.256 + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def 16.257 +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def 16.258 +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def 16.259 +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def 16.260 +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def 16.261 +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def 16.262 +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def 16.263 +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def 16.264 +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def 16.265 +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def 16.266 +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def 16.267 +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def 16.268 +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def 16.269 +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def 16.270 +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def 16.271 +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def 16.272 +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def 16.273 +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def 16.274 +/DiaE {stroke [] 0 setdash vpt add M 16.275 + hpt neg vpt neg V hpt vpt neg V 16.276 + hpt vpt V hpt neg vpt V closepath stroke} def 16.277 +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M 16.278 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 16.279 + hpt2 neg 0 V closepath stroke} def 16.280 +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M 16.281 + hpt neg vpt -1.62 mul V 16.282 + hpt 2 mul 0 V 16.283 + hpt neg vpt 1.62 mul V closepath stroke} def 16.284 +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M 16.285 + hpt neg vpt 1.62 mul V 16.286 + hpt 2 mul 0 V 16.287 + hpt neg vpt -1.62 mul V closepath stroke} def 16.288 +/PentE {stroke [] 0 setdash gsave 16.289 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 16.290 + closepath stroke grestore} def 16.291 +/CircE {stroke [] 0 setdash 16.292 + hpt 0 360 arc stroke} def 16.293 +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def 16.294 +/DiaW {stroke [] 0 setdash vpt add M 16.295 + hpt neg vpt neg V hpt vpt neg V 16.296 + hpt vpt V hpt neg vpt V Opaque stroke} def 16.297 +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M 16.298 + 0 vpt2 neg V hpt2 0 V 0 vpt2 V 16.299 + hpt2 neg 0 V Opaque stroke} def 16.300 +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M 16.301 + hpt neg vpt -1.62 mul V 16.302 + hpt 2 mul 0 V 16.303 + hpt neg vpt 1.62 mul V Opaque stroke} def 16.304 +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M 16.305 + hpt neg vpt 1.62 mul V 16.306 + hpt 2 mul 0 V 16.307 + hpt neg vpt -1.62 mul V Opaque stroke} def 16.308 +/PentW {stroke [] 0 setdash gsave 16.309 + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat 16.310 + Opaque stroke grestore} def 16.311 +/CircW {stroke [] 0 setdash 16.312 + hpt 0 360 arc Opaque stroke} def 16.313 +/BoxFill {gsave Rec 1 setgray fill grestore} def 16.314 +/Density { 16.315 + /Fillden exch def 16.316 + currentrgbcolor 16.317 + /ColB exch def /ColG exch def /ColR exch def 16.318 + /ColR ColR Fillden mul Fillden sub 1 add def 16.319 + /ColG ColG Fillden mul Fillden sub 1 add def 16.320 + /ColB ColB Fillden mul Fillden sub 1 add def 16.321 + ColR ColG ColB setrgbcolor} def 16.322 +/BoxColFill {gsave Rec PolyFill} def 16.323 +/PolyFill {gsave Density fill grestore grestore} def 16.324 +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def 16.325 +% 16.326 +% PostScript Level 1 Pattern Fill routine for rectangles 16.327 +% Usage: x y w h s a XX PatternFill 16.328 +% x,y = lower left corner of box to be filled 16.329 +% w,h = width and height of box 16.330 +% a = angle in degrees between lines and x-axis 16.331 +% XX = 0/1 for no/yes cross-hatch 16.332 +% 16.333 +/PatternFill {gsave /PFa [ 9 2 roll ] def 16.334 + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate 16.335 + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec 16.336 + gsave 1 setgray fill grestore clip 16.337 + currentlinewidth 0.5 mul setlinewidth 16.338 + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 16.339 + 0 0 M PFa 5 get rotate PFs -2 div dup translate 16.340 + 0 1 PFs PFa 4 get div 1 add floor cvi 16.341 + {PFa 4 get mul 0 M 0 PFs V} for 16.342 + 0 PFa 6 get ne { 16.343 + 0 1 PFs PFa 4 get div 1 add floor cvi 16.344 + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for 16.345 + } if 16.346 + stroke grestore} def 16.347 +% 16.348 +/languagelevel where 16.349 + {pop languagelevel} {1} ifelse 16.350 + 2 lt 16.351 + {/InterpretLevel1 true def} 16.352 + {/InterpretLevel1 Level1 def} 16.353 + ifelse 16.354 +% 16.355 +% PostScript level 2 pattern fill definitions 16.356 +% 16.357 +/Level2PatternFill { 16.358 +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} 16.359 + bind def 16.360 +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def 16.361 +<< Tile8x8 16.362 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 16.363 +>> matrix makepattern 16.364 +/Pat1 exch def 16.365 +<< Tile8x8 16.366 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke 16.367 + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} 16.368 +>> matrix makepattern 16.369 +/Pat2 exch def 16.370 +<< Tile8x8 16.371 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L 16.372 + 8 8 L 8 0 L 0 0 L fill} 16.373 +>> matrix makepattern 16.374 +/Pat3 exch def 16.375 +<< Tile8x8 16.376 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L 16.377 + 0 12 M 12 0 L stroke} 16.378 +>> matrix makepattern 16.379 +/Pat4 exch def 16.380 +<< Tile8x8 16.381 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L 16.382 + 0 -4 M 12 8 L stroke} 16.383 +>> matrix makepattern 16.384 +/Pat5 exch def 16.385 +<< Tile8x8 16.386 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L 16.387 + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} 16.388 +>> matrix makepattern 16.389 +/Pat6 exch def 16.390 +<< Tile8x8 16.391 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L 16.392 + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} 16.393 +>> matrix makepattern 16.394 +/Pat7 exch def 16.395 +<< Tile8x8 16.396 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L 16.397 + 12 0 M -4 8 L 12 4 M 0 10 L stroke} 16.398 +>> matrix makepattern 16.399 +/Pat8 exch def 16.400 +<< Tile8x8 16.401 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L 16.402 + -4 0 M 12 8 L -4 4 M 8 10 L stroke} 16.403 +>> matrix makepattern 16.404 +/Pat9 exch def 16.405 +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def 16.406 +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def 16.407 +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def 16.408 +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def 16.409 +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def 16.410 +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def 16.411 +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def 16.412 +} def 16.413 +% 16.414 +% 16.415 +%End of PostScript Level 2 code 16.416 +% 16.417 +/PatternBgnd { 16.418 + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse 16.419 +} def 16.420 +% 16.421 +% Substitute for Level 2 pattern fill codes with 16.422 +% grayscale if Level 2 support is not selected. 16.423 +% 16.424 +/Level1PatternFill { 16.425 +/Pattern1 {0.250 Density} bind def 16.426 +/Pattern2 {0.500 Density} bind def 16.427 +/Pattern3 {0.750 Density} bind def 16.428 +/Pattern4 {0.125 Density} bind def 16.429 +/Pattern5 {0.375 Density} bind def 16.430 +/Pattern6 {0.625 Density} bind def 16.431 +/Pattern7 {0.875 Density} bind def 16.432 +} def 16.433 +% 16.434 +% Now test for support of Level 2 code 16.435 +% 16.436 +Level1 {Level1PatternFill} {Level2PatternFill} ifelse 16.437 +% 16.438 +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont 16.439 +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall 16.440 +currentdict end definefont pop 16.441 +/MFshow { 16.442 + { dup 5 get 3 ge 16.443 + { 5 get 3 eq {gsave} {grestore} ifelse } 16.444 + {dup dup 0 get findfont exch 1 get scalefont setfont 16.445 + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 16.446 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq 16.447 + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 16.448 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div 16.449 + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get 16.450 + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop 16.451 + pop aload pop M} ifelse }ifelse }ifelse } 16.452 + ifelse } 16.453 + forall} def 16.454 +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def 16.455 +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } 16.456 + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont 16.457 + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def 16.458 +/MLshow { currentpoint stroke M 16.459 + 0 exch R 16.460 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 16.461 +/MRshow { currentpoint stroke M 16.462 + exch dup MFwidth neg 3 -1 roll R 16.463 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 16.464 +/MCshow { currentpoint stroke M 16.465 + exch dup MFwidth -2 div 3 -1 roll R 16.466 + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def 16.467 +/XYsave { [( ) 1 2 true false 3 ()] } bind def 16.468 +/XYrestore { [( ) 1 2 true false 4 ()] } bind def 16.469 +end 16.470 +%%EndProlog 16.471 +%%Page: 1 1 16.472 +gnudict begin 16.473 +gsave 16.474 +doclip 16.475 +50 50 translate 16.476 +0.100 0.100 scale 16.477 +90 rotate 16.478 +0 -5040 translate 16.479 +0 setgray 16.480 +newpath 16.481 +(Helvetica) findfont 140 scalefont setfont 16.482 +1.000 UL 16.483 +LTb 16.484 +518 448 M 16.485 +63 0 V 16.486 +6366 0 R 16.487 +-63 0 V 16.488 +stroke 16.489 +434 448 M 16.490 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] 16.491 +] -46.7 MRshow 16.492 +1.000 UL 16.493 +LTb 16.494 +518 1044 M 16.495 +63 0 V 16.496 +6366 0 R 16.497 +-63 0 V 16.498 +stroke 16.499 +434 1044 M 16.500 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] 16.501 +] -46.7 MRshow 16.502 +1.000 UL 16.503 +LTb 16.504 +518 1640 M 16.505 +63 0 V 16.506 +6366 0 R 16.507 +-63 0 V 16.508 +stroke 16.509 +434 1640 M 16.510 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] 16.511 +] -46.7 MRshow 16.512 +1.000 UL 16.513 +LTb 16.514 +518 2236 M 16.515 +63 0 V 16.516 +6366 0 R 16.517 +-63 0 V 16.518 +stroke 16.519 +434 2236 M 16.520 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] 16.521 +] -46.7 MRshow 16.522 +1.000 UL 16.523 +LTb 16.524 +518 2831 M 16.525 +63 0 V 16.526 +6366 0 R 16.527 +-63 0 V 16.528 +stroke 16.529 +434 2831 M 16.530 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] 16.531 +] -46.7 MRshow 16.532 +1.000 UL 16.533 +LTb 16.534 +518 3427 M 16.535 +63 0 V 16.536 +6366 0 R 16.537 +-63 0 V 16.538 +stroke 16.539 +434 3427 M 16.540 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] 16.541 +] -46.7 MRshow 16.542 +1.000 UL 16.543 +LTb 16.544 +518 4023 M 16.545 +63 0 V 16.546 +6366 0 R 16.547 +-63 0 V 16.548 +stroke 16.549 +434 4023 M 16.550 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] 16.551 +] -46.7 MRshow 16.552 +1.000 UL 16.553 +LTb 16.554 +518 4619 M 16.555 +63 0 V 16.556 +6366 0 R 16.557 +-63 0 V 16.558 +stroke 16.559 +434 4619 M 16.560 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] 16.561 +] -46.7 MRshow 16.562 +1.000 UL 16.563 +LTb 16.564 +518 448 M 16.565 +0 63 V 16.566 +0 4108 R 16.567 +0 -63 V 16.568 +stroke 16.569 +518 308 M 16.570 +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] 16.571 +] -46.7 MCshow 16.572 +1.000 UL 16.573 +LTb 16.574 +1322 448 M 16.575 +0 63 V 16.576 +0 4108 R 16.577 +0 -63 V 16.578 +stroke 16.579 +1322 308 M 16.580 +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] 16.581 +] -46.7 MCshow 16.582 +1.000 UL 16.583 +LTb 16.584 +2125 448 M 16.585 +0 63 V 16.586 +0 4108 R 16.587 +0 -63 V 16.588 +stroke 16.589 +2125 308 M 16.590 +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] 16.591 +] -46.7 MCshow 16.592 +1.000 UL 16.593 +LTb 16.594 +2929 448 M 16.595 +0 63 V 16.596 +0 4108 R 16.597 +0 -63 V 16.598 +stroke 16.599 +2929 308 M 16.600 +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] 16.601 +] -46.7 MCshow 16.602 +1.000 UL 16.603 +LTb 16.604 +3733 448 M 16.605 +0 63 V 16.606 +0 4108 R 16.607 +0 -63 V 16.608 +stroke 16.609 +3733 308 M 16.610 +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] 16.611 +] -46.7 MCshow 16.612 +1.000 UL 16.613 +LTb 16.614 +4536 448 M 16.615 +0 63 V 16.616 +0 4108 R 16.617 +0 -63 V 16.618 +stroke 16.619 +4536 308 M 16.620 +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] 16.621 +] -46.7 MCshow 16.622 +1.000 UL 16.623 +LTb 16.624 +5340 448 M 16.625 +0 63 V 16.626 +0 4108 R 16.627 +0 -63 V 16.628 +stroke 16.629 +5340 308 M 16.630 +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] 16.631 +] -46.7 MCshow 16.632 +1.000 UL 16.633 +LTb 16.634 +6143 448 M 16.635 +0 63 V 16.636 +0 4108 R 16.637 +0 -63 V 16.638 +stroke 16.639 +6143 308 M 16.640 +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] 16.641 +] -46.7 MCshow 16.642 +1.000 UL 16.643 +LTb 16.644 +6947 448 M 16.645 +0 63 V 16.646 +0 4108 R 16.647 +0 -63 V 16.648 +stroke 16.649 +6947 308 M 16.650 +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] 16.651 +] -46.7 MCshow 16.652 +1.000 UL 16.653 +LTb 16.654 +1.000 UL 16.655 +LTb 16.656 +518 4619 N 16.657 +518 448 L 16.658 +6429 0 V 16.659 +0 4171 V 16.660 +-6429 0 V 16.661 +Z stroke 16.662 +LCb setrgbcolor 16.663 +112 2533 M 16.664 +currentpoint gsave translate -270 rotate 0 0 moveto 16.665 +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] 16.666 +] -46.7 MCshow 16.667 +grestore 16.668 +LTb 16.669 +LCb setrgbcolor 16.670 +3732 98 M 16.671 +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] 16.672 +] -46.7 MCshow 16.673 +LTb 16.674 +3732 4829 M 16.675 +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread on 4 socket by 20 core Westmere EX 2.4GHz)] 16.676 +] -46.7 MCshow 16.677 +1.000 UP 16.678 +1.000 UL 16.679 +LTb 16.680 +1.000 UL 16.681 +LTb 16.682 +5372 3996 N 16.683 +0 560 V 16.684 +1491 0 V 16.685 +0 -560 V 16.686 +-1491 0 V 16.687 +Z stroke 16.688 +5372 4556 M 16.689 +1491 0 V 16.690 +% Begin plot #1 16.691 +stroke 16.692 +LT1 16.693 +LCa setrgbcolor 16.694 +518 1044 M 16.695 +65 0 V 16.696 +65 0 V 16.697 +65 0 V 16.698 +65 0 V 16.699 +65 0 V 16.700 +65 0 V 16.701 +65 0 V 16.702 +65 0 V 16.703 +64 0 V 16.704 +65 0 V 16.705 +65 0 V 16.706 +65 0 V 16.707 +65 0 V 16.708 +65 0 V 16.709 +65 0 V 16.710 +65 0 V 16.711 +65 0 V 16.712 +65 0 V 16.713 +65 0 V 16.714 +65 0 V 16.715 +65 0 V 16.716 +65 0 V 16.717 +65 0 V 16.718 +65 0 V 16.719 +64 0 V 16.720 +65 0 V 16.721 +65 0 V 16.722 +65 0 V 16.723 +65 0 V 16.724 +65 0 V 16.725 +65 0 V 16.726 +65 0 V 16.727 +65 0 V 16.728 +65 0 V 16.729 +65 0 V 16.730 +65 0 V 16.731 +65 0 V 16.732 +65 0 V 16.733 +65 0 V 16.734 +65 0 V 16.735 +65 0 V 16.736 +64 0 V 16.737 +65 0 V 16.738 +65 0 V 16.739 +65 0 V 16.740 +65 0 V 16.741 +65 0 V 16.742 +65 0 V 16.743 +65 0 V 16.744 +65 0 V 16.745 +65 0 V 16.746 +65 0 V 16.747 +65 0 V 16.748 +65 0 V 16.749 +65 0 V 16.750 +65 0 V 16.751 +65 0 V 16.752 +64 0 V 16.753 +65 0 V 16.754 +65 0 V 16.755 +65 0 V 16.756 +65 0 V 16.757 +65 0 V 16.758 +65 0 V 16.759 +65 0 V 16.760 +65 0 V 16.761 +65 0 V 16.762 +65 0 V 16.763 +65 0 V 16.764 +65 0 V 16.765 +65 0 V 16.766 +65 0 V 16.767 +65 0 V 16.768 +65 0 V 16.769 +64 0 V 16.770 +65 0 V 16.771 +65 0 V 16.772 +65 0 V 16.773 +65 0 V 16.774 +65 0 V 16.775 +65 0 V 16.776 +65 0 V 16.777 +65 0 V 16.778 +65 0 V 16.779 +65 0 V 16.780 +65 0 V 16.781 +65 0 V 16.782 +65 0 V 16.783 +65 0 V 16.784 +65 0 V 16.785 +64 0 V 16.786 +65 0 V 16.787 +65 0 V 16.788 +65 0 V 16.789 +65 0 V 16.790 +65 0 V 16.791 +65 0 V 16.792 +65 0 V 16.793 +65 0 V 16.794 +% End plot #1 16.795 +% Begin plot #2 16.796 +stroke 16.797 +2.000 UL 16.798 +LT1 16.799 +LCb setrgbcolor 16.800 +6296 4486 M 16.801 +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] 16.802 +] -46.7 MRshow 16.803 +LT1 16.804 +6380 4486 M 16.805 +399 0 V 16.806 +% End plot #2 16.807 +% Begin plot #3 16.808 +stroke 16.809 +LT2 16.810 +LCb setrgbcolor 16.811 +6296 4346 M 16.812 +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] 16.813 +] -46.7 MRshow 16.814 +LT2 16.815 +6380 4346 M 16.816 +399 0 V 16.817 +1650 4619 M 16.818 +216 -617 V 16.819 +2992 2086 L 16.820 +5327 1379 L 16.821 +6947 1188 L 16.822 +% End plot #3 16.823 +% Begin plot #4 16.824 +stroke 16.825 +LT3 16.826 +LCb setrgbcolor 16.827 +6296 4206 M 16.828 +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] 16.829 +] -46.7 MRshow 16.830 +LT3 16.831 +6380 4206 M 16.832 +399 0 V 16.833 +1278 4619 M 16.834 +20 -267 V 16.835 +1839 3295 L 16.836 +3036 2054 L 16.837 +5385 1253 L 16.838 +6947 1117 L 16.839 +% End plot #4 16.840 +% Begin plot #5 16.841 +stroke 16.842 +LT4 16.843 +LCb setrgbcolor 16.844 +6296 4066 M 16.845 +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] 16.846 +] -46.7 MRshow 16.847 +LT4 16.848 +6380 4066 M 16.849 +399 0 V 16.850 +1271 4619 M 16.851 +11 -184 V 16.852 +572 -924 V 16.853 +3013 1939 L 16.854 +5345 1252 L 16.855 +6947 1123 L 16.856 +% End plot #5 16.857 +stroke 16.858 +1.000 UL 16.859 +LTb 16.860 +518 4619 N 16.861 +518 448 L 16.862 +6429 0 V 16.863 +0 4171 V 16.864 +-6429 0 V 16.865 +Z stroke 16.866 +1.000 UP 16.867 +1.000 UL 16.868 +LTb 16.869 +stroke 16.870 +grestore 16.871 +end 16.872 +showpage 16.873 +%%Trailer 16.874 +%%DocumentFonts: Helvetica 16.875 +%%Pages: 1
17.1 --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.aux Tue Jan 03 17:02:34 2012 -0800 17.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 17.3 @@ -1,64 +0,0 @@ 17.4 -\relax 17.5 -\bibstyle{plain} 17.6 -\citation{} 17.7 -\citation{} 17.8 -\citation{} 17.9 -\citation{} 17.10 -\citation{} 17.11 -\citation{} 17.12 -\@writefile{toc}{\contentsline {title}{A HW Abstraction Suitable for Use as the Base of a Portability Software Stack}{1}} 17.13 -\@writefile{toc}{\authcount {3}} 17.14 -\@writefile{toc}{\contentsline {author}{Sean Halle\unskip {} \and Merten Sach\unskip {} \and BJ\unskip {}}{1}} 17.15 -\@writefile{toc}{\contentsline {section}{\numberline {1}Planning}{1}} 17.16 -\@writefile{toc}{\contentsline {section}{\numberline {2}Motivation}{1}} 17.17 -\@writefile{toc}{\contentsline {section}{\numberline {3}old stuff}{2}} 17.18 -\citation{Fri98,CILKHome} 17.19 -\citation{SchedActivations} 17.20 -\citation{BOMinManticore} 17.21 -\citation{Fri98,CILKHome} 17.22 -\citation{OpenMPHome} 17.23 -\@writefile{toc}{\contentsline {section}{\numberline {4}Background and Related Work}{4}} 17.24 -\citation{Gelernter85Linda,CnCInHotPar,CnCHome} 17.25 -\citation{Kah74,hoare78,milner99,Hewitt10,Actors97} 17.26 -\citation{Car10,OpenCLHome} 17.27 -\@writefile{toc}{\contentsline {section}{\numberline {5}Abstract Definition of VMS}{5}} 17.28 -\newlabel{secAbsModel}{{5}{5}} 17.29 -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}The Elements of a VMS Computation System}{6}} 17.30 -\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Time in VMS}{6}} 17.31 -\newlabel{secTime}{{5.2}{6}} 17.32 -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Mapping program time onto Virtual time. \ The Master controls creation of new program time lines, and ending suspend points. Here, it has ended two suspend points at a common tie-point. }}{7}} 17.33 -\newlabel{figTimeMapping}{{1}{7}} 17.34 -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Scheduling State}{8}} 17.35 -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Scheduling states of a slave VP in the VMS model.}}{8}} 17.36 -\newlabel{figStates}{{2}{8}} 17.37 -\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces The Master, split into a generic core and a language-specific plugin. The core encapsulates the hardware and remains the same across applications. The plugin is part of the parallelism-construct implementation. }}{8}} 17.38 -\newlabel{figMasterSplit}{{3}{8}} 17.39 -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Plugins}{9}} 17.40 -\@writefile{toc}{\contentsline {section}{\numberline {6}Internal Workings of Our Implementation}{9}} 17.41 -\newlabel{secInternal}{{6}{9}} 17.42 -\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Internal elements of our example VMS implementation }}{10}} 17.43 -\newlabel{figInternals}{{4}{10}} 17.44 -\citation{VMSHome} 17.45 -\citation{VMSHome} 17.46 -\@writefile{toc}{\contentsline {section}{\numberline {7}Code Level View}{11}} 17.47 -\newlabel{secApp}{{7}{11}} 17.48 -\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Application code snippets showing that all calls to the parallelism library take the VP animating that call as a parameter. }}{12}} 17.49 -\newlabel{figAnimVP}{{5}{12}} 17.50 -\@writefile{toc}{\contentsline {section}{\numberline {8}Results}{13}} 17.51 -\newlabel{secResults}{{8}{13}} 17.52 -\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Implementation of SSR's receive\_from\_to library function.}}{14}} 17.53 -\newlabel{figImplLib}{{6}{14}} 17.54 -\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Implementation of VMS suspend processor. Re-animating the virtual processor reverses this sequence. \ It saves the \texttt {core\_loop}'s resume instr-addr and stack ptr into the VP structure, then loads the VP's stack ptr and jmps to its \texttt {resumeInstrAddr}. }}{14}} 17.55 -\newlabel{figAssembly}{{7}{14}} 17.56 -\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Pseudo-code of communication-handler for \texttt {receive\_from\_to} request type. The \texttt {semEnv} is a pointer to the shared parallel semantic state seen at the top of Figure\nobreakspace {}\G@refundefinedtrue {\unhbox \voidb@x \hbox {\normalfont \bfseries ??}}\GenericWarning { }{LaTeX Warning: Reference `figInternals' on page 14 undefined}. }}{14}} 17.57 -\newlabel{figReqHdlr}{{8}{14}} 17.58 -\bibdata{../helpers/bib_for_papers} 17.59 -\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Person-days to design, code, and test each parallelism library. L.O.C. is lines of (original) C code, excluding libraries and comments. }}{15}} 17.60 -\newlabel{tabPersonDaysLang}{{1}{15}} 17.61 -\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces Cycles of overhead, per scheduled slave. ``comp only'' is perfect memory, ``comp + mem'' is actual cycles. ``Plugin-concur'' only concurrency requests, ``plugin-all'' includes create and malloc requests. Two significant digits due to variability. }}{15}} 17.62 -\newlabel{tabOverheadCycles}{{2}{15}} 17.63 -\@writefile{lot}{\contentsline {table}{\numberline {3}{\ignorespaces On left, exe time in seconds for MM. To the right, overhead for pthread vs. Vthread. First column is cycles for perfect memory and second is total measured cycles. pthread cycles are deduced from round-trip experiments. }}{15}} 17.64 -\newlabel{tabHeadToHead}{{3}{15}} 17.65 -\@writefile{toc}{\contentsline {section}{\numberline {9}Conclusion}{15}} 17.66 -\newlabel{secConclusion}{{9}{15}} 17.67 -
18.1 --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.bbl Tue Jan 03 17:02:34 2012 -0800 18.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 18.3 @@ -1,95 +0,0 @@ 18.4 -\begin{thebibliography}{10} 18.5 - 18.6 -\bibitem{} 18.7 - 18.8 - 18.9 -\bibitem{Actors97} 18.10 -G.~Agha, I.~Mason, S.~Smith, and C.~Talcott. 18.11 -\newblock A foundation for actor computation. 18.12 -\newblock {\em Journal of Functional Programming}, 7(01):1--72, 1997. 18.13 - 18.14 -\bibitem{SchedActivations} 18.15 -Thomas~E. Anderson, Brian~N. Bershad, Edward~D. Lazowska, and Henry~M. Levy. 18.16 -\newblock Scheduler activations: effective kernel support for the user-level 18.17 - management of parallelism. 18.18 -\newblock {\em ACM Trans. Comput. Syst.}, 10:53--79, February 1992. 18.19 - 18.20 -\bibitem{Car10} 18.21 -Patrick Carribault, Marc P{\'e}rache, and Herv{\'e} Jourdren. 18.22 -\newblock Enabling low-overhead hybrid {MPI/OpenMP} parallelism with {MPC}. 18.23 -\newblock In {\em IWOMP'10}, pages 1--14, 2010. 18.24 - 18.25 -\bibitem{CnCHome} 18.26 -Intel Corp. 18.27 -\newblock {CnC} homepage. 18.28 -\newblock 18.29 - http://software.intel.com/en-us/articles/intel-concurrent-collections-for-cc% 18.30 -/. 18.31 - 18.32 -\bibitem{BOMinManticore} 18.33 -Matthew Fluet, Mike Rainey, John Reppy, Adam Shaw, and Yingqi Xiao. 18.34 -\newblock Manticore: a heterogeneous parallel language. 18.35 -\newblock In {\em Proceedings of the 2007 workshop on Declarative aspects of 18.36 - multicore programming}, DAMP '07, pages 37--44, 2007. 18.37 - 18.38 -\bibitem{Fri98} 18.39 -M.~Frigo, C.~E. Leiserson, and K.~H. Randall. 18.40 -\newblock The implementation of the cilk-5 multithreaded language. 18.41 -\newblock In {\em PLDI '98: Proceedings of the 1998 ACM SIGPLAN conference on 18.42 - Programming language design and implementation}, pages 212--223, Montreal, 18.43 - Quebec, June 1998. 18.44 - 18.45 -\bibitem{Gelernter85Linda} 18.46 -D.~Gelernter. 18.47 -\newblock {Generative communication in Linda}. 18.48 -\newblock {\em ACM Transactions on Programming Languages and Systems (TOPLAS)}, 18.49 - 7(1):80--112, 1985. 18.50 - 18.51 -\bibitem{OpenCLHome} 18.52 -Kronos Group. 18.53 -\newblock {Open Compute Language} homepage. 18.54 -\newblock http://www.khronos.org/opencl. 18.55 - 18.56 -\bibitem{CILKHome} 18.57 -Cilk group~at MIT. 18.58 -\newblock {CILK} homepage. 18.59 -\newblock http://supertech.csail.mit.edu/cilk/. 18.60 - 18.61 -\bibitem{VMSHome} 18.62 -Sean Halle. 18.63 -\newblock {VMS} home page. 18.64 -\newblock http://vmsexemodel.sourceforge.net. 18.65 - 18.66 -\bibitem{Hewitt10} 18.67 -Carl Hewitt. 18.68 -\newblock Actor model of computation, 2010. 18.69 -\newblock http://arxiv.org/abs/1008.1459. 18.70 - 18.71 -\bibitem{hoare78} 18.72 -C.~A.~R. Hoare. 18.73 -\newblock Communicating sequential processes. 18.74 -\newblock {\em Communications of the ACM}, 21(8):666--677, 1978. 18.75 - 18.76 -\bibitem{Kah74} 18.77 -G.~Kahn. 18.78 -\newblock The semantics of a simple language for parallel programming. 18.79 -\newblock In J.~L. Rosenfeld, editor, {\em Information processing}, pages 18.80 - 471--475, Stockholm, Sweden, August 1974. North Holland, Amsterdam. 18.81 - 18.82 -\bibitem{CnCInHotPar} 18.83 -Kathleen Knobe. 18.84 -\newblock Ease of use with concurrent collections {(CnC)}. 18.85 -\newblock In {\em HOTPAR '09: USENIX Workshop on Hot Topics in Parallelism}, 18.86 - March 2009. 18.87 - 18.88 -\bibitem{milner99} 18.89 -Robin Milner. 18.90 -\newblock {\em Communicating and Mobile Systems: The pi-Calculus}. 18.91 -\newblock Cambridge University Press, 1999. 18.92 - 18.93 -\bibitem{OpenMPHome} 18.94 -{OpenMP} organization. 18.95 -\newblock {OpenMP} home page. 18.96 -\newblock http://www.openmp.org. 18.97 - 18.98 -\end{thebibliography}
19.1 --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.blg Tue Jan 03 17:02:34 2012 -0800 19.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 19.3 @@ -1,29 +0,0 @@ 19.4 -This is 8-bit Big BibTeX version 0.99c 19.5 -Implementation: WIN32 Console, BaKoMa TNS bound. 19.6 -Release version: 3.71 (18 Aug 1996) 19.7 - 19.8 -The top-level auxiliary file: 11_Dc_27__HW_abstr_for_port_stack.aux 19.9 -The style file: plain.bst 19.10 -Database file #1: ../helpers/bib_for_papers.bib 19.11 -Repeated entry---line 18 of file ../helpers/bib_for_papers.bib 19.12 - : @book{ 19.13 - : , 19.14 -I'm skipping whatever remains of this entry 19.15 -Repeated entry---line 29 of file ../helpers/bib_for_papers.bib 19.16 - : @misc{ 19.17 - : , 19.18 -I'm skipping whatever remains of this entry 19.19 -Warning--to sort, need author or key in 19.20 -Warning--empty author in 19.21 -Warning--empty title in 19.22 -Warning--empty journal in 19.23 -Warning--empty year in 19.24 - 19.25 -Here's how much of BibTeX's memory you used: 19.26 - Cites: 17 out of 7500 19.27 - Fields: 125 out of 125000 19.28 - Hash table: 34843 out of 35000 19.29 - Strings: 600 out of 30000 19.30 - String pool: 6240 out of 750000 19.31 - Wizard functions: 2118 out of 10000 19.32 -(There were 2 error messages)
20.1 --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.ddf Tue Jan 03 17:02:34 2012 -0800 20.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 20.3 @@ -1,2 +0,0 @@ 20.4 -[MakeIndex] 20.5 -.idx=.ind
21.1 --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.tex Tue Jan 03 17:02:34 2012 -0800 21.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.tex Sat Jan 21 20:51:58 2012 -0800 21.3 @@ -3,7 +3,9 @@ 21.4 21.5 \documentclass[conference]{../helpers/llncs} 21.6 % 21.7 -\usepackage{makeidx,geometry,amssymb,graphicx,calc,ifthen} 21.8 + 21.9 +%\usepackage{geometry} %chgs the margins and layout! 21.10 +\usepackage{makeidx,amssymb,graphicx,calc,ifthen} 21.11 % 21.12 21.13 % *** CITATION PACKAGES *** 21.14 @@ -258,7 +260,7 @@ 21.15 \bibliographystyle{plain} 21.16 % 21.17 21.18 -\title{A HW Abstraction Suitable for Use as the Base of a Portability Software Stack} 21.19 +\title{A Hardware Abstraction Suitable for Use at the Base of a Portability Software Stack} 21.20 21.21 \author{Sean Halle \and Merten Sach \and BJ} 21.22 \institute{Technical University Berlin, Germany} 21.23 @@ -267,36 +269,94 @@ 21.24 % 21.25 21.26 \begin{abstract} 21.27 -Proposals for a software stack that supports performant portability\cite{} rely on the assumption, among others, that a suitable hardware abstraction exists for the bottom layer. It must have certain properties: it must be invisible to upper layers; it must simplify language implementation, in part by hiding details of synchronization and details of network; and at the same time enable high performance, in part by giving the language control over task placement and exposing memory hierarchy, communication times, and other major performance-related aspects of the hardware. 21.28 +Proposals for a software stack that supports performant portability\cite{} rely on the assumption, among others, that a suitable hardware abstraction exists for the bottom layer. The abstraction must have certain properties: it must be invisible to upper layers; it must simplify language implementation, in part by hiding details of synchronization and details of network; and at the same time enable high performance, in part by giving the language control over task placement and exposing memory hierarchy, communication times, and other major performance-related aspects of the hardware. 21.29 21.30 In this paper, we show that an abstraction called Virtualized Master-Slave, or VMS \cite{} 21.31 -satisfies all these criteria, and provide recent measurements to support the case. 21.32 +satisfies these criteria, and we provide recent measurements to support the case. 21.33 21.34 \end{abstract} 21.35 21.36 -\section{Motivation and Background} 21.37 +\section{Motivation} 21.38 21.39 -Performant portability is widely desired, to reduce the cost of software, by allowing code to be written once then run performantly across hardware targets, including unknown future architectures. 21.40 -Recent proposals for achieving this call for a software stack, with a layer of languages (toolchains) at the top, a layer of language runtimes below that, and a hardware abstraction layer at the bottom\cite{}. 21.41 +As stated in the call for papers, wide uptake of high efficiency parallel architectures ``requires new parallel programming paradigms, new methods of application design, new structures for system software, and new models of interaction among applications, compilers, operating systems, and hardware." In short, a new software stack, and players in research and industry organized to supply the pieces of the stack. The goal of the stack is to make parallel programming the same order of productivity as sequential programming, and to give parallel code similar portability onto newer generations of hardware that sequential code enjoyed. 21.42 21.43 -The languages must be designed to capture all information required to specialize the code for high performance across hardware. A computation model, called The Holistic Model\cite{}, suggests that such a canonical set of information exists. A proposal called PStack\cite{} proposes to develop the constructs to gather the information, some of which is in the form of specialization helpers such as task-resizers and layout modifiers. The application implements the specialization helpers, thereby encoding information about data structures and how to manipulate them. The seeds of such an approach were laid with work on DKU\cite{}, which demonstrated the success of task-resizing constructs. 21.44 +The benefit from such a stack is reducing the cost of parallel software, by making it just as productive as sequential coding, and by allowing code to be written once then run performantly across hardware targets, including unknown future architectures. 21.45 21.46 -The proposal also suggests the use of the BLIS\cite{} approach for managing multiple toolchains, each of which specializes to a different target. The install process is included, during which the correct toolchain output is paired to the installation target. Further specialization can thus naturally be added during installation, when exact hardware details are known. If required, runtime tuning and optimization also fit within the approach. 21.47 +A recent proposal for achieving this, known as PStack\cite{}, calls for a software stack having a layer of languages (toolchains) at the top, a layer of language runtimes below that, and a hardware abstraction layer at the bottom\cite{}. 21.48 + 21.49 +The languages must be designed to capture all information required to specialize the code for high performance across hardware. A computation model, called The Holistic Model\cite{}, suggests that such a canonical set of information exists. PStack proposes to develop the constructs that gather the information, where some constructs are in the form of specialization helpers such as task-resizers and layout modifiers. The application implements the specialization helpers, thereby encoding information about data structures and how to manipulate them. The seeds of such an approach were laid with work on DKU\cite{}, which demonstrated the success of task-resizing constructs. 21.50 + 21.51 +The proposal also suggests the use of the BLIS\cite{} approach for managing multiple toolchains, where each one specializes to a different target. The management includes the install process, during which the correct toolchain output is paired to the installation target. Further specialization can thus naturally be added during installation, when exact hardware details are known. If required, runtime tuning and optimization also fit within the approach. 21.52 21.53 The top layer of the software stack is thus the combination of constructs and managed toolchains. 21.54 Below that, in the middle of the stack, a collection of runtime systems acts as a sort of cross-bar switch, connecting the languages above to a standard hardware abstraction below. 21.55 21.56 -The purpose of the bottom abstraction is to minimize the effort of each runtime created in the middle layer. It must both hide hardware details and uniform-ize runtime implementation. However, it must not hide any performance-critical information from the runtime, which holds the scheduler that decides when tasks become free and where to execute them. Such scheduling choices need to know the communication paths and memory pools in the hardware, along with latency, bandwidth, capacity and performance. 21.57 +The purpose of the bottom abstraction is to minimize the effort to create the runtimes in the middle layer. It must both hide hardware details and uniform-ize runtime implementation. However, it must not hide performance-critical information from the runtime, which holds the scheduler that decides when tasks become free and where to execute them. Such scheduling choices need to know the communication paths and memory pools in the hardware, along with latency, bandwidth, capacity and performance. 21.58 21.59 -A single abstraction can't both hide details and expose those required by the runtimes to attain high performance. Instead, PStack calls for a family of abstractions, one for each major type of architecture, including a``hierarchy'' abstraction used to glue together heterogeneous hardware. In each, only the details critical to performance are exposed to the scheduler in the runtime, thus keeping the number of abstractions needed manageably small, on the order of ten in total. 21.60 +A single abstraction can't both hide details and expose those required by the runtimes to attain high performance. Instead, PStack calls for a family of abstractions, one for each major type of architecture, including a``hierarchy'' abstraction used to glue together heterogeneous hardware. In each, only the details critical to performance are exposed to the scheduler in the runtime, thus keeping the number of abstractions needed manageably small, on the order of tens in total. 21.61 21.62 -This paper's contribution is showing how the Virtualized Master-Slave abstraction\cite{} fits the criteria for the bottom of such a portability software stack. It gives recent performance results for VMS on a variety of hardware platforms over a selection of benchmarks. 21.63 +This paper's contribution is showing how the Virtualized Master-Slave abstraction\cite{} fits the criteria for the bottom of such a portability software stack. This includes recent performance results for VMS on a variety of hardware platforms over a selection of benchmarks. 21.64 21.65 21.66 -\section{Description} 21.67 -The bottom two layers of the software stack are the subject of this paper. The 21.68 - 21.69 - here, need to support eco-system\cite{} 21.70 +\section{Background on PStack and VMS} 21.71 + 21.72 +Describe details of bottom of software stack and details of how cross-bar works, tie to the need for low-work runtime impl, and the need for reuse of runtime code across languages. 21.73 + 21.74 +Describe how VMS fulfills those needs. Details of its interface, details of its impl on multi-core, details of differences on different machines. 21.75 +Leave as-is for 1x4 and 1x2 -- make entirely different impl for 2x4 and another for 4x10 21.76 + 21.77 +\section{Description of How VMS Fits PStack's Requirements} 21.78 + 21.79 +\section{Experimental Setup} 21.80 + 21.81 +\section{Results} 21.82 + 21.83 +\subsection{Performance Results} 21.84 +Figure X shows the execution time versus task-size curve for Vthread, while Figure X shows the same for pthread, both executed on the SandyBridge 1x4 machine. The 2x point occurs near X cycles for Vthread, nearly independently from the number of threads created. Meanwhile, it occurs near X for pthread, for a small number of threads, showing that pthreads has X times higher overhead in the best case. However, pthreads degrades rapidly as the number of threads is increased. The system crashes with more than X threads, at which point the overhead of pthreads is X times higher than Vthread (not shown on graph because it's too large). 21.85 + 21.86 +When moving to multi-socket machines, things change, as seen in figures X and X. The central master-lock in the VMS implementation creates a bottleneck for small task sizes. This causes Vthread to have only a X advantage over pthread for small task sizes. However, Vthread overhead remains independent of number of threads. 21.87 + 21.88 +Likewise, the benchmarks for ray tracking, matrix multiply, and kmeans clustering show that Vthread outperforms pthreads. They nearly match for large work sizes, but Vthread significantly outperforms for small work sizes, as seen in Figures X and X. 21.89 + 21.90 + 21.91 +\begin{figure}[ht] 21.92 +\mbox{\subfigure{\includegraphics[width=3in]{fig1.pdf}}\quad 21.93 +\subfigure{\includegraphics[width=2.3in, angle = -90]{../figures/plots_exec_vs_task_size_v3/cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps}} 21.94 + 21.95 + \caption 21.96 + {Execution time / total work vs size of a task. The smaller the task, the smaller the distance between scheduling events. When the ratio reaches 2, the scheduling overhead exactly equals the task size. 21.97 + } 21.98 +\label{figCray1Vthread} 21.99 +\end{figure} 21.100 + 21.101 + \includegraphics[width=2.3in, angle = -90]{../figures/plots_exec_vs_task_size_v3/cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps} 21.102 +\subsection{Implementation Time Results} 21.103 +As seen in a previous paper on VMS\citation{}, VMS makes runtime implementation quick and easy. The results are re-printed here to support the claim that VMS meets the PStack requirement of reducing runtime implementation effort. These compare to weeks or months to learn code of a pre-existing multi-threaded runtime, modify it, and debug the multi-threaded implementation. 21.104 + 21.105 +Implementation time is reduced by the uniform natrue of VMS-based runtimes, freedom from details hidden by the VMS interface, the helper facilities VMS provides, VMS's debugging facilities, and freedom from multi-threading issues due to VMS's tie-point ordering guarantee. When combined, they lead to the fast implementation times seen in Table X. 21.106 + 21.107 + 21.108 + 21.109 +\section{Future Work and Conclusion} 21.110 +A semester long 21.111 + 21.112 + 21.113 + 21.114 +\section{Planning} 21.115 + 21.116 + (6.5" x 9" 10pt 2 col) 21.117 + 21.118 +require new parallel programming paradigms, new methods of application design, new structures for system software, and new models of interaction among applications, compilers, operating systems, and hardware. 21.119 + 21.120 +what benefits performant portability will bring 21.121 + 21.122 +abstraction must have certain properties to fulfill its role in stack. Contribution of paper is new results confirming suitability of VMS to be that abstraction. 21.123 + 21.124 +The Need: background on portability stack -- the end-goal sought, the fundamentals involved in any solution to provide it, how proposed stack from last year is updated to accord with those fundamentals in achieving end-goal. The elements of the stack. What function/role each element serves. 21.125 + 21.126 +Describe details of bottom of software stack and details of how cross-bar works, and the need for low-work runtime impl, and the need for reuse of runtime code across languages. 21.127 + 21.128 +what need in bottom, to support eco-system\cite{} 21.129 21.130 Many runtime systems are implemented -- for each language, one runtime for each variant of the abstraction. 21.131 21.132 @@ -312,34 +372,29 @@ 21.133 21.134 Hence, the two primary aspects of the base hardware abstraction are its ability to reduce the effort of implementing the set of runtime systems for a given language, and its ability to reduce the number of such runtime systems. 21.135 21.136 -Describe details of bottom of software stack and details of how cross-bar works, and the need for low-work runtime impl, and the need for reuse of runtime code across languages. 21.137 +for abstraction in bottom layer, here's VMS, detailed in LCPC paper, with new results that show it can, indeed, fulfil the base abstraction role for the class of multi-core hardware. 21.138 + 21.139 + 21.140 + 21.141 + 21.142 + 21.143 + 21.144 + 21.145 + 21.146 + 21.147 + 21.148 + 21.149 + 21.150 + 21.151 + 21.152 + 21.153 + 21.154 + 21.155 + 21.156 +Describe details of bottom of software stack and details of how cross-bar works, tie to the need for low-work runtime impl, and the need for reuse of runtime code across languages. 21.157 + 21.158 Describe how VMS fulfills those needs. Details of its interface, details of its impl on multi-core, details of differences on different machines. 21.159 Leave as-is for 1x4 and 1x2 -- make entirely different impl for 2x4 and another for 4x10 21.160 - 21.161 - 21.162 - 21.163 -\section{Planning} 21.164 - 21.165 - what benefits performant portability will bring 21.166 - 21.167 -abstraction must have certain properties to fulfill its role in stack. Contribution of paper is new results confirming suitability of VMS to be that abstraction. 21.168 - 21.169 -The Need: background on portability stack -- the end-goal sought, the fundamentals involved in any solution to provide it, how proposed stack from last year is updated to accord with those fundamentals in achieving end-goal. The elements of the stack. What function/role each element serves. 21.170 - 21.171 -Brings to solution needed for abstraction in bottom layer. Here's VMS, detailed in LCPC paper, but without sufficient results. Here's new results that show it can, indeed fulfil the role for the class of multi-core hardware. 21.172 - 21.173 - 21.174 - 21.175 - 21.176 - 21.177 - 21.178 - 21.179 - 21.180 -Describe details of bottom of software stack and details of how cross-bar works, and the need for low-work runtime impl, and the need for reuse of runtime code across languages. 21.181 -Describe how VMS fulfills those needs. Details of its interface, details of its impl on multi-core, details of differences on different machines. 21.182 -Leave as-is for 1x4 and 1x2 -- make entirely different impl for 2x4 and another for 4x10 21.183 - 21.184 - 21.185 ? 21.186 \section{old stuff} 21.187
22.1 --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.tex.Backup-20111227-163852 Tue Jan 03 17:02:34 2012 -0800 22.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 22.3 @@ -1,1346 +0,0 @@ 22.4 -%&latex 22.5 - 22.6 - 22.7 -\documentclass[conference]{../helpers/llncs} 22.8 -% 22.9 -\usepackage{makeidx,geometry,amssymb,graphicx,calc,ifthen} 22.10 -% 22.11 - 22.12 -% *** CITATION PACKAGES *** 22.13 -% 22.14 -%\usepackage{cite} 22.15 -% cite.sty was written by Donald Arseneau 22.16 -% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package 22.17 -% \cite{} output to follow that of IEEE. Loading the cite package will 22.18 -% result in citation numbers being automatically sorted and properly 22.19 -% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using 22.20 -% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's 22.21 -% \cite will automatically add leading space, if needed. Use cite.sty's 22.22 -% noadjust option (cite.sty V3.8 and later) if you want to turn this off. 22.23 -% cite.sty is already installed on most LaTeX systems. Be sure and use 22.24 -% version 4.0 (2003-05-27) and later if using hyperref.sty. cite.sty does 22.25 -% not currently provide for hyperlinked citations. 22.26 -% The latest version can be obtained at: 22.27 -% http://www.ctan.org/tex-archive/macros/latex/contrib/cite/ 22.28 -% The documentation is contained in the cite.sty file itself. 22.29 - 22.30 - 22.31 - 22.32 - 22.33 - 22.34 - 22.35 -% *** GRAPHICS RELATED PACKAGES *** 22.36 -% 22.37 -%\ifCLASSINFOpdf 22.38 - % \usepackage[pdftex]{graphicx} 22.39 - % declare the path(s) where your graphic files are 22.40 - % \graphicspath{{../pdf/}{../jpeg/}} 22.41 - % and their extensions so you won't have to specify these with 22.42 - % every instance of \includegraphics 22.43 - % \DeclareGraphicsExtensions{.pdf,.jpeg,.png} 22.44 -%\else 22.45 - % or other class option (dvipsone, dvipdf, if not using dvips). graphicx 22.46 - % will default to the driver specified in the system graphics.cfg if no 22.47 - % driver is specified. 22.48 - % \usepackage[dvips]{graphicx} 22.49 - % declare the path(s) where your graphic files are 22.50 - % \graphicspath{{../eps/}} 22.51 - % and their extensions so you won't have to specify these with 22.52 - % every instance of \includegraphics 22.53 - % \DeclareGraphicsExtensions{.eps} 22.54 -%\fi 22.55 -% graphicx was written by David Carlisle and Sebastian Rahtz. It is 22.56 -% required if you want graphics, photos, etc. graphicx.sty is already 22.57 -% installed on most LaTeX systems. The latest version and documentation can 22.58 -% be obtained at: 22.59 -% http://www.ctan.org/tex-archive/macros/latex/required/graphics/ 22.60 -% Another good source of documentation is "Using Imported Graphics in 22.61 -% LaTeX2e" by Keith Reckdahl which can be found as epslatex.ps or 22.62 -% epslatex.pdf at: http://www.ctan.org/tex-archive/info/ 22.63 -% 22.64 -% latex, and pdflatex in dvi mode, support graphics in encapsulated 22.65 -% postscript (.eps) format. pdflatex in pdf mode supports graphics 22.66 -% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure 22.67 -% that all non-photo figures use a vector format (.eps, .pdf, .mps) and 22.68 -% not a bitmapped formats (.jpeg, .png). IEEE frowns on bitmapped formats 22.69 -% which can result in "jaggedy"/blurry rendering of lines and letters as 22.70 -% well as large increases in file sizes. 22.71 -% 22.72 -% You can find documentation about the pdfTeX application at: 22.73 -% http://www.tug.org/applications/pdftex 22.74 - 22.75 - 22.76 - 22.77 - 22.78 - 22.79 -% *** MATH PACKAGES *** 22.80 -% 22.81 -%\usepackage[cmex10]{amsmath} 22.82 -% A popular package from the American Mathematical Society that provides 22.83 -% many useful and powerful commands for dealing with mathematics. If using 22.84 -% it, be sure to load this package with the cmex10 option to ensure that 22.85 -% only type 1 fonts will utilized at all point sizes. Without this option, 22.86 -% it is possible that some math symbols, particularly those within 22.87 -% footnotes, will be rendered in bitmap form which will result in a 22.88 -% document that can not be IEEE Xplore compliant! 22.89 -% 22.90 -% Also, note that the amsmath package sets \interdisplaylinepenalty to 10000 22.91 -% thus preventing page breaks from occurring within multiline equations. Use: 22.92 -%\interdisplaylinepenalty=2500 22.93 -% after loading amsmath to restore such page breaks as IEEEtran.cls normally 22.94 -% does. amsmath.sty is already installed on most LaTeX systems. The latest 22.95 -% version and documentation can be obtained at: 22.96 -% http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/ 22.97 - 22.98 - 22.99 - 22.100 - 22.101 - 22.102 -% *** SPECIALIZED LIST PACKAGES *** 22.103 -% 22.104 -%\usepackage{algorithmic} 22.105 -% algorithmic.sty was written by Peter Williams and Rogerio Brito. 22.106 -% This package provides an algorithmic environment fo describing algorithms. 22.107 -% You can use the algorithmic environment in-text or within a figure 22.108 -% environment to provide for a floating algorithm. Do NOT use the algorithm 22.109 -% floating environment provided by algorithm.sty (by the same authors) or 22.110 -% algorithm2e.sty (by Christophe Fiorio) as IEEE does not use dedicated 22.111 -% algorithm float types and packages that provide these will not provide 22.112 -% correct IEEE style captions. The latest version and documentation of 22.113 -% algorithmic.sty can be obtained at: 22.114 -% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithms/ 22.115 -% There is also a support site at: 22.116 -% http://algorithms.berlios.de/index.html 22.117 -% Also of interest may be the (relatively newer and more customizable) 22.118 -% algorithmicx.sty package by Szasz Janos: 22.119 -% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithmicx/ 22.120 - 22.121 - 22.122 - 22.123 - 22.124 -% *** ALIGNMENT PACKAGES *** 22.125 -% 22.126 -%\usepackage{array} 22.127 -% Frank Mittelbach's and David Carlisle's array.sty patches and improves 22.128 -% the standard LaTeX2e array and tabular environments to provide better 22.129 -% appearance and additional user controls. As the default LaTeX2e table 22.130 -% generation code is lacking to the point of almost being broken with 22.131 -% respect to the quality of the end results, all users are strongly 22.132 -% advised to use an enhanced (at the very least that provided by array.sty) 22.133 -% set of table tools. array.sty is already installed on most systems. The 22.134 -% latest version and documentation can be obtained at: 22.135 -% http://www.ctan.org/tex-archive/macros/latex/required/tools/ 22.136 - 22.137 - 22.138 -%\usepackage{mdwmath} 22.139 -%\usepackage{mdwtab} 22.140 -% Also highly recommended is Mark Wooding's extremely powerful MDW tools, 22.141 -% especially mdwmath.sty and mdwtab.sty which are used to format equations 22.142 -% and tables, respectively. The MDWtools set is already installed on most 22.143 -% LaTeX systems. The lastest version and documentation is available at: 22.144 -% http://www.ctan.org/tex-archive/macros/latex/contrib/mdwtools/ 22.145 - 22.146 - 22.147 -% IEEEtran contains the IEEEeqnarray family of commands that can be used to 22.148 -% generate multiline equations as well as matrices, tables, etc., of high 22.149 -% quality. 22.150 - 22.151 - 22.152 -%\usepackage{eqparbox} 22.153 -% Also of notable interest is Scott Pakin's eqparbox package for creating 22.154 -% (automatically sized) equal width boxes - aka "natural width parboxes". 22.155 -% Available at: 22.156 -% http://www.ctan.org/tex-archive/macros/latex/contrib/eqparbox/ 22.157 - 22.158 - 22.159 - 22.160 - 22.161 - 22.162 -% *** SUBFIGURE PACKAGES *** 22.163 -%\usepackage[tight,footnotesize]{subfigure} 22.164 -% subfigure.sty was written by Steven Douglas Cochran. This package makes it 22.165 -% easy to put subfigures in your figures. e.g., "Figure 1a and 1b". For IEEE 22.166 -% work, it is a good idea to load it with the tight package option to reduce 22.167 -% the amount of white space around the subfigures. subfigure.sty is already 22.168 -% installed on most LaTeX systems. The latest version and documentation can 22.169 -% be obtained at: 22.170 -% http://www.ctan.org/tex-archive/obsolete/macros/latex/contrib/subfigure/ 22.171 -% subfigure.sty has been superceeded by subfig.sty. 22.172 - 22.173 - 22.174 - 22.175 -%\usepackage[caption=false]{caption} 22.176 -%\usepackage[font=footnotesize]{subfig} 22.177 -% subfig.sty, also written by Steven Douglas Cochran, is the modern 22.178 -% replacement for subfigure.sty. However, subfig.sty requires and 22.179 -% automatically loads Axel Sommerfeldt's caption.sty which will override 22.180 -% IEEEtran.cls handling of captions and this will result in nonIEEE style 22.181 -% figure/table captions. To prevent this problem, be sure and preload 22.182 -% caption.sty with its "caption=false" package option. This is will preserve 22.183 -% IEEEtran.cls handing of captions. Version 1.3 (2005/06/28) and later 22.184 -% (recommended due to many improvements over 1.2) of subfig.sty supports 22.185 -% the caption=false option directly: 22.186 -%\usepackage[caption=false,font=footnotesize]{subfig} 22.187 -% 22.188 -% The latest version and documentation can be obtained at: 22.189 -% http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/ 22.190 -% The latest version and documentation of caption.sty can be obtained at: 22.191 -% http://www.ctan.org/tex-archive/macros/latex/contrib/caption/ 22.192 - 22.193 - 22.194 - 22.195 - 22.196 -% *** FLOAT PACKAGES *** 22.197 -% 22.198 -%\usepackage{fixltx2e} 22.199 -% fixltx2e, the successor to the earlier fix2col.sty, was written by 22.200 -% Frank Mittelbach and David Carlisle. This package corrects a few problems 22.201 -% in the LaTeX2e kernel, the most notable of which is that in current 22.202 -% LaTeX2e releases, the ordering of single and double column floats is not 22.203 -% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a 22.204 -% single column figure to be placed prior to an earlier double column 22.205 -% figure. The latest version and documentation can be found at: 22.206 -% http://www.ctan.org/tex-archive/macros/latex/base/ 22.207 - 22.208 - 22.209 - 22.210 -%\usepackage{stfloats} 22.211 -% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e 22.212 -% the ability to do double column floats at the bottom of the page as well 22.213 -% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in 22.214 -% LaTeX2e). It also provides a command: 22.215 -%\fnbelowfloat 22.216 -% to enable the placement of footnotes below bottom floats (the standard 22.217 -% LaTeX2e kernel puts them above bottom floats). This is an invasive package 22.218 -% which rewrites many portions of the LaTeX2e float routines. It may not work 22.219 -% with other packages that modify the LaTeX2e float routines. The latest 22.220 -% version and documentation can be obtained at: 22.221 -% http://www.ctan.org/tex-archive/macros/latex/contrib/sttools/ 22.222 -% Documentation is contained in the stfloats.sty comments as well as in the 22.223 -% presfull.pdf file. Do not use the stfloats baselinefloat ability as IEEE 22.224 -% does not allow \baselineskip to stretch. Authors submitting work to the 22.225 -% IEEE should note that IEEE rarely uses double column equations and 22.226 -% that authors should try to avoid such use. Do not be tempted to use the 22.227 -% cuted.sty or midfloat.sty packages (also by Sigitas Tolusis) as IEEE does 22.228 -% not format its papers in such ways. 22.229 - 22.230 - 22.231 - 22.232 - 22.233 - 22.234 -% *** PDF, URL AND HYPERLINK PACKAGES *** 22.235 -% 22.236 -%\usepackage{url} 22.237 -% url.sty was written by Donald Arseneau. It provides better support for 22.238 -% handling and breaking URLs. url.sty is already installed on most LaTeX 22.239 -% systems. The latest version can be obtained at: 22.240 -% http://www.ctan.org/tex-archive/macros/latex/contrib/misc/ 22.241 -% Read the url.sty source comments for usage information. Basically, 22.242 -% \url{my_url_here}. 22.243 - 22.244 - 22.245 - 22.246 - 22.247 - 22.248 -% *** Do not adjust lengths that control margins, column widths, etc. *** 22.249 -% *** Do not use packages that alter fonts (such as pslatex). *** 22.250 -% There should be no need to do such things with IEEEtran.cls V1.6 and later. 22.251 -% (Unless specifically asked to do so by the journal or conference you plan 22.252 -% to submit to, of course. ) 22.253 - 22.254 - 22.255 -% correct bad hyphenation here 22.256 -\hyphenation{op-tical net-works semi-conduc-tor} 22.257 - 22.258 - 22.259 -\begin{document} 22.260 - 22.261 -\bibliographystyle{plain} 22.262 -% 22.263 - 22.264 -\title{VMS: Separating Synchronization Semantics from Order-Establishment} 22.265 - 22.266 -\author{Sean Halle\inst{1,2} \and Albert Cohen\inst{1}} 22.267 -\institute{INRIA and \'Ecole Normale Sup\'erieure, France 22.268 - \and 22.269 - University of California at Santa Cruz, USA} 22.270 - 22.271 -\maketitle 22.272 -% 22.273 - 22.274 -\begin{abstract} 22.275 -All synchronization constructs establish an ordering between program timelines. We formalize this with the notion of a tie-point and provide a hardware-neutral interface for establishing tie-points. To build synchronization constructs such as locks, condition variables, send-receive, spawn-sync, and so on, we couple the tie-point interface with a virtual timeline that establishes a global ordering of events from software timelines. The combination simplifies implementing synchronization primitives by allowing sequential algorithms to be used, without a performance penalty. 22.276 - 22.277 -This approach has the benefit of separating the semantics of synchronization from the mapping, of software timelines onto physical-core timelines. The hardware used to perform the mapping is hidden below the interface, and controlled by the runtime by invoking the interface, This improves portability, allows reuse, and shifts runtimes down into the OS kernel level, providing performance benefits. 22.278 -The language runtime gains secure access to all kernel level hardware mechanisms, and hardware resources are managed by dialog between runtime and interface, potentially alleviating a major challenge in parallel OS architecture. The semantics of the tie-point interface makes such a dialog practical, portable, and efficient, as opposed to current issues caused by the semantics of lock hardware such as TAS and CAS instructions. 22.279 - 22.280 -In this paper, we introduce the approach with a user-level implementation, deferring Linux integration and hardware support to future papers. 22.281 -We focus on the formal model of tie-points, details of our proof-of-concept implementation, 22.282 -and connecting these to application code. 22.283 - 22.284 - 22.285 - 22.286 - We demonstrate 22.287 - the low overhead of the interface and quickness to implement a runtime on three sets 22.288 - of parallelism constructs: rendez-vous style \texttt{send} and 22.289 - \texttt{receive}; Cilk style \texttt{spawn} and \texttt{sync}, which 22.290 - have similar performance to Cilk 5.4; and \texttt{mutex} and 22.291 - \texttt{condition variable} constructs from pthreads, which have 80x 22.292 - lower overhead than Linux thread operations. Development time 22.293 - averaged just over one day per set as opposed to weeks for equivalent lock-based implementations. 22.294 -\end{abstract} 22.295 - 22.296 -\section{Motivation} 22.297 - 22.298 -A common theme among parallel language designers, parallel OS implementers and parallel hardware architects is the need for a clean, portable hardware abstraction. Locks, with thread-constructs built above them, have failed due to interrelated issues: requiring system-wide quorum on each acquisition of a lock, limited semantics of lock-hardware, and its black-box nature which freezes out the OS and language runtimes. 22.299 - 22.300 - We argue that lock-oriented hardware plays a major role in the failure to achieve top-to-bottom integrated cooperation between application, langauge runtime, hardware management in the OS, and the hardware itself. We further argue that this kind of integration is a necessary (but not sufficient) requirement for efficient portability of applications. Both arguments are expounded upon in the dissertation of Halle[]. 22.301 - 22.302 -We further claim that every application-level synchronization or parallelism construct is a coupling, of semantic-behavior to a mechanism that orders events among application timelines. Even the CAS instruction combines compare and swap semantics with an order-establishing hardware mechanism. The mechanism guarantees that CAS instructions from different cores receive a sequential ordering, and is implemented in the memory system, where it establishes sole access of one core to the specified address, Meanwhile, the "Compare and swap" semantics may be implemented in the core, providing the behavior of the access. When several kinds of lock-establishing instruction are available, they all use the same memory-system hardware to establish ordering, and simply implement different behavior on top of it. The OS or language runtime code then use these instructions to establish ordering among the cores, and implement semantics of more complex constructs on top of that. 22.303 - 22.304 -What would happen, then, if the semantic-behavior were separated from the establishment of ordering? In this case, the order-establishment mechanism would have no behavior usable in a program. It would have to be coupled with code fragments that add semantic behavior. 22.305 - 22.306 -Such a separation is what this paper proposes, and presents an implementation in user-space for multi-core shared memory processors, 22.307 - 22.308 - 22.309 - 22.310 -? 22.311 - 22.312 -a rich interface between scheduling and hardware that enables adaptation to target hardware characteristics for higher performance, and integration into a cross-language framework 22.313 - 22.314 - ? 22.315 - 22.316 - This abstraction is not directly usable by application 22.317 - programmers. Instead, application-visible behavior is implemented 22.318 -in a semantical plugin, and then invoked via a language or library 22.319 - that uses the plugin. The main benefit is that parallel language 22.320 - runtimes become simpler to implement, because they use sequential 22.321 - algorithms for the parallel semantics. This is possible because the 22.322 - abstraction makes available a virtual time in which events in 22.323 - different program time-lines are sequentialized. The parallel 22.324 - semantics relate events in different time-lines via relating the 22.325 - sequentialized versions within the virtual time-line. 22.326 - 22.327 -? 22.328 - 22.329 -Thread parallelism constructs have been well documented to be 22.330 -difficult to program with. They directly expose low-level concurrency 22.331 -to the programmer. Arbitrary non-deterministic behavior and deadlocks 22.332 -can arise from improperly synchronized code. Efficient execution 22.333 -requires non-blocking algorithms whose correctness requires deep 22.334 -understanding of weakly consistent memory models. In addition, the 22.335 -operating system abstraction for threads comes with a very high 22.336 -context-switching and synchronization overhead. 22.337 - 22.338 -%% AC. The following is wrong. 22.339 -%\paragraph{\bf Problems with threads: } Thread parallelism constructs have been well documented to be difficult to program with. In addition, threads are problematic when one has multiple physical cores because the thread abstraction hides the hardware, disabling control over placement of tasks. High performance requires such control. Hence, not only are threads difficult to use directly in applications, but they prevent easier parallelism constructs from being built on top of them that have high performance. 22.340 - 22.341 -%\paragraph{\bf Partial solution: } To deal with this, in practice, a language's runtime turns off 22.342 - 22.343 -\paragraph*{A partial solution.} 22.344 - 22.345 -To deal with the last problem, a parallel language's runtime turns off 22.346 -operating system threads by pinning one to each physical core. This 22.347 -way, the custom runtime is assured that the software thread is 22.348 -one-to-one with a physical core. It then implements a user-level 22.349 -thread package that lets it control which OS thread a computational 22.350 -task is assigned to. Finally, the runtime then implements the 22.351 -language's parallel semantics in terms of those user threads. 22.352 - 22.353 -The user-level threading approach addresses the system overhead issue, 22.354 -but it still hides important events such as input-output or 22.355 -node-to-node communications in a cluster. 22.356 -%% AC. Irrelevant for a parallelism-centric paper 22.357 -%software faults, and other hardware events 22.358 -Hence, the more scalable runtimes need to coordinate task assignment 22.359 -to cores with application access of input and output, memory 22.360 -allocation over non-uniform cache and memory hierarchies, offloading 22.361 -to hardware accelerators, power management, and inter-node 22.362 -communication in a cluster. The user-level threading approach also 22.363 -makes the parallel runtime implementation cumbersome, error-prone and 22.364 -complex, because it is still written in terms of threads. 22.365 - 22.366 -Overall, parallel language implementations must deal with a number of 22.367 -challenges normally deferred to the operating system, and they still 22.368 -suffer from the complexity of non-blocking shared memory 22.369 -concurrency. 22.370 - 22.371 -Ideally, the OS would provide a mutable hardware abstraction, 22.372 -along with a selection of customizations or mutations that provide convenient 22.373 -parallelism constructs for applications to use. It should allow 22.374 -languages to provide their own parallel semantics. The language 22.375 -runtime would then provide a secure way for the runtime to access 22.376 -kernel-only hardware mechanisms. It could interact directly with the 22.377 -kernel to manage physical resources, in a low-overhead way. 22.378 -One benefit of this arrangement is the chance to implement a 22.379 -language's runtime directly as a plugin, which gives it the ability to 22.380 -control which task is assigned to which processing element at which 22.381 -time. This enables high performance and low-energy data affinity 22.382 -techniques. For example, the runtime could track data within the 22.383 -memory hierarchy and assign tasks to locations close to their consumed 22.384 -data. 22.385 - 22.386 -% \paragraph{\bf Support for portability: } This separation between 22.387 -% application executable and language runtime also supports 22.388 -% portability. It packages the language-specific scheduler into a 22.389 -% separate machine-specific module that is separately installed. The 22.390 -% scheduler is thus optimized for the combination of language with 22.391 -% hardware. This isn't a full solution to portability but it is a needed 22.392 -% precursor. 22.393 - 22.394 -% An interesting portability technique enabled by a separate 22.395 -% language-plus-hardware specific runtime is tracking which cores are 22.396 -% likely to already have data in the cache which a new task requires as 22.397 -% input. It could place tasks where the input data is likely to reside, 22.398 -% reducing communication to increase performance and power efficiency. 22.399 - 22.400 -\paragraph*{Contribution.} 22.401 - 22.402 -We show in this paper the definition and implementation of such a 22.403 -mutable hardware abstraction, albeit at user-level rather than in 22.404 -the kernel. It lets a language runtime be implemented as 22.405 -a plugin, which includes parallelism constructs and assignment of 22.406 -tasks to cores. 22.407 - 22.408 -We focus in this introductory paper on the definition of the 22.409 -abstraction and its support for parallelism constructs, postponing 22.410 -exploration of assignment of tasks onto cores and other performance 22.411 -optimizations to following papers. This paper establishes a definition 22.412 -of multiple time-lines in a program, and a virtual time that 22.413 -sequentializes events within those. It demonstrates three sets of 22.414 -parallelism constructs: synchronous \texttt{send}-\texttt{receive} 22.415 -motivated by process calculi; \texttt{spawn} and \texttt{sync} from 22.416 -Cilk {\cite{Fri98,CILKHome}}; and \texttt{mutex} and \texttt{condition 22.417 - variable} from pthreads. The assignment policy we implemented with 22.418 -them is simply first-come first-served. 22.419 - 22.420 -We call the abstraction Virtualized Master-Slave, or VMS. It is 22.421 -essentially a definition of virtualized time on parallel hardware. It 22.422 -exports facilities, to a plugin, to create virtual processors and 22.423 -control how their timelines relate to each other, and relate to 22.424 -physical time. It also exports facilities, for a library to use, to 22.425 -suspend a virtual processor and interact with the plugin. The plugin 22.426 -embodies most of a language's runtime, while the library is the 22.427 -application's gateway to that runtime. 22.428 - 22.429 -\paragraph*{Organization of paper.} 22.430 - 22.431 -Section~\ref{secAbsModel} provide the original concepts and 22.432 -definitions of VMS. Section~\ref{secInternal} focuses on the 22.433 -implementation, describing the elements and how they interact, then 22.434 -relating them back to the theoretical definition. 22.435 -Section~\ref{secApp} takes the point of view of the application code, 22.436 -studying the usage and implementation of parallel language constructs 22.437 -as a VMS plugin. To wrap up, measurements of effectiveness appear in 22.438 -Section~\ref{secResults} and conclusions in 22.439 -Section~\ref{secConclusion}. 22.440 - 22.441 -\section{Background and Related Work} 22.442 - 22.443 -User-level thread packages and most parallel language runtimes have to 22.444 -side-step OS threads, by pinning one to each core, which effectively 22.445 -gives the user-level package control over the core. Our VMS 22.446 -implementation also does this. We are not claiming in this paper to 22.447 -have the OS level implementation of VMS that is possible -- but just 22.448 -the user-space version. 22.449 - 22.450 -\paragraph*{Related work.} 22.451 - 22.452 -The most closely related work is Scheduler Activations 22.453 -\cite{SchedActivations}, which also allows modifying concurrency 22.454 -constructs and controlling assignment of virtual processors onto 22.455 -cores. However it has no virtual time to guarantee globally consistent 22.456 -sequentialization, and no interface for plugins. 22.457 - 22.458 -BOM \cite{BOMinManticore}, which is used in Manticore to express 22.459 -scheduling policies and synchronization, also bears resemblances to 22.460 -VMS, but at a higher level of abstraction. BOM is a functional 22.461 -language, rather than a primitive abstraction meant to sit at the 22.462 -hardware-software boundary as VMS is. 22.463 - 22.464 -Coroutines is a high-performance means of switching between 22.465 -tasks. Coroutine scheduling and stack handling techniques were well 22.466 -suited to the user-space implementation of VMS. 22.467 - 22.468 -Other related work either provides an abstraction of the thread model, 22.469 -or is a full language with specific parallelism constructs. As a 22.470 -protypic example of user-level threads, Cilk {\cite{Fri98,CILKHome}} 22.471 -provides a simplified abstraction with an efficient scheduling and 22.472 -load balancing algorithm, but limited to fork-join concurrency. OpenMP 22.473 -{\cite{OpenMPHome}} is a typical example of a parallel extension of 22.474 -sequential languages; it allows creating tasks and controlling their 22.475 -execution order. We claim that both Cilk and OpenMP, as well as most 22.476 -thread abstractions or parallel languages may be implemented via 22.477 -plugins to VMS, with similar performance. 22.478 - 22.479 -In contrast to thread abstractions and parallel programming languages, 22.480 -VMS doesn't impose its own low-level concurrency semantics as a 22.481 -programming model, but rather takes preferred ones as plugins. This 22.482 -makes it not a language itself, but a \emph{support} mechanism to 22.483 -implement language runtimes. Parallelism constructs may be implemented 22.484 -as VMS plugins, easily, quickly, and with high performance as 22.485 -indicated in Section~\ref{secResults}. 22.486 - 22.487 -This work presents a first incarnation and evaluation of VMS. We plan 22.488 -to explore the embedding into VMS of a variety of parallel languages, 22.489 -with a special interest for coordination languages 22.490 -\cite{Gelernter85Linda,CnCInHotPar,CnCHome}. We will also explore 22.491 -VMS's compatibility with different concurrent semantics 22.492 -\cite{Kah74,hoare78,milner99,Hewitt10,Actors97}. One particularly 22.493 -important application would be to use VMS to facilitate the design and 22.494 -implementation of the emerging hybrid programming models, such as 22.495 -MPI+OpenMP, or OpenMP+OpenCL \cite{Car10,OpenCLHome}. 22.496 - 22.497 -\paragraph*{Virtual Processor (VP).} 22.498 - 22.499 -We want to avoid the confusion associated with the various 22.500 -interpretation for the the terms ``thread'' and ``task'' so will use 22.501 -the term \emph{Virtual Processor} (VP), which we define as state in 22.502 -combination with the ability to animate code or an additional level of 22.503 -virtual processors. The state consists of a program counter, a stack 22.504 -with its contents, a pointer to top of stack, and a pointer to the 22.505 -current stack frame. 22.506 - 22.507 -\section{Abstract Definition of VMS} 22.508 -\label{secAbsModel} 22.509 - 22.510 -We start with an intuitive overview, then precise the definitions and 22.511 -properties in the following sub-sections. 22.512 - 22.513 -\paragraph*{Intuitive Overview.} 22.514 - 22.515 -VMS is concerned primarily with time and guarantees about it. This is 22.516 -because parallelism constructs control how the time-lines of different 22.517 -virtual processors intersect. They also guarantee relations of time 22.518 -lines to hardware events. 22.519 - 22.520 -As an example, consider a program that writes into a data structure in 22.521 -one time-line, then calls a \texttt{send} construct, meanwhile in a 22.522 -different time-line it calls the \texttt{receive} construct then reads 22.523 -the data structure. The constructs should guarantee that all data 22.524 -written before the \texttt{send} is readable in the other time-line 22.525 -after the \texttt{receive}. 22.526 - 22.527 -%% AC. Too early. 22.528 -% VMS provides a primitive guarantee that 22.529 -% plugin code builds upon to provide such higher-level guarantees. The 22.530 -% primitive guarantee is defined in Section~\ref{scTime}, after the 22.531 -% necessary vocabulary is established. 22.532 - 22.533 -To support parallelism constructs, VMS provides: primitive operations 22.534 -to create and suspend VPs; a way for plugged-in code to control when 22.535 -each VP is (re)started; and time-related guarantees. These are 22.536 -enforced on all hardware, be it shared memory or distributed, with 22.537 -strong memory consistency or weak. 22.538 - 22.539 -\paragraph*{Definition in three parts.} 22.540 - 22.541 -The definition we give is for VMS \emph{with plugins present}. Hence, 22.542 -the definition includes the behavior of any parallelism construct 22.543 -implementable with VMS. We give the abstract definition in three 22.544 -parts: a definition of the elements of a VMS computation system; a 22.545 -definition of time and the key VMS guarantee; and a definition of 22.546 -virtual processor scheduling states and transitions between them. 22.547 - 22.548 -%% AC. Too early, Master has not been defined. I renamed VMS-core into 22.549 -%% VMS afterwards, finding no ambiguity. 22.550 -% The Master mentioned in the definition is an abstract entity, with a 22.551 -% plugin present. In practice, this Master entity is implemented as part 22.552 -% of a core VMS, and plugins later added. This VMS-core is the hardware 22.553 -% abstraction. It hides the physical hardware behind an interface that 22.554 -% creates virtual processors and enforces well-defined time-behavior. 22.555 - 22.556 -\subsection{The Elements of a VMS Computation System} 22.557 - 22.558 -\begin{itemize} 22.559 -\item A VMS program has multiple VPs, which are Slaves, each with an 22.560 - independent time-line. 22.561 -\item A schedule of Slaves is generated by a Master entity, from 22.562 - within separate time-line(s). 22.563 -\item A schedule is defined as the set of points at which VPs are 22.564 - (re)animated. 22.565 -\item All semantic parallelism behavior is invoked via communication 22.566 - with the Master. 22.567 -\item Communication with the Master happens by using a VMS primitive, 22.568 - which causes \emph{voluntary} suspension of the program's VP. 22.569 -\end{itemize} 22.570 - 22.571 -What is important here is that the choice of which VP is animated, at 22.572 -which point, happens in a separate time-line; and that the VPs suspend 22.573 -voluntarily for each parallelism construct. This means that 22.574 -\emph{scheduling is separated from the program code}, the key point. 22.575 - 22.576 -The Master entity appears to be a single entity to the slaves, but may 22.577 -be implemented by multiple Master VPs hidden inside the VMS 22.578 -implementation. 22.579 - 22.580 -VPs use the Master as an intermediary to: semantically communicate 22.581 -with each other; cause creation of new program VPs; and to influence 22.582 -re-animation of VPs. As a subtlety, notice that hardware mechanisms, 22.583 -such as coherent shared memory, allow communication to take place that 22.584 -is not visible to the parallelism constructs. This is not allowed with 22.585 -VMS: parallelism constructs of the language, and through them VMS 22.586 -primitives, must be separately called in order to make use of shared 22.587 -variable communication safe. 22.588 - 22.589 -%% AC. Calling memory a processing element only adds confusion. 22.590 -% {\bf Definitions:\ }VMS is intended only for hardware systems that 22.591 -% consist of processing elements connected by communication. We define 22.592 -% a memory-space to be a processing element, albeit without the ability 22.593 -% to transform data. 22.594 - 22.595 -We define a \emph{physical core} to be a processing element executing 22.596 -a sequential stream of instructions. 22.597 - 22.598 -We define a program-time as the sequence of instructions animated by a 22.599 -Slave VP, which is eventually animated by a physical core. A Slave VP 22.600 -has associated \emph{scheduling state} that, among other things, 22.601 -relates to how its program-time progresses relative to physical time 22.602 -on the cores. 22.603 - 22.604 -\subsection{Time in VMS} 22.605 -\label{secTime} 22.606 - 22.607 -VMS has three levels of time: \emph{Program time}, \emph{Master time}, 22.608 -and \emph{Virtual time}. 22.609 - 22.610 -\begin{itemize} 22.611 -\item Program time is local to a Slave VP, measured in instruction 22.612 - executions. 22.613 -\item Master time is hidden from the program and is independent from 22.614 - all Program times. 22.615 -\item Virtual time is the ordered set of changes in scheduling state 22.616 - of Slave VPs. 22.617 -\end{itemize} 22.618 - 22.619 -What is most important here is that Virtual time defines a global 22.620 -sequential ordering. This ordering is consistent with the key VMS 22.621 -guarantee (given below), and each point in it is computed within 22.622 -Master time. 22.623 - 22.624 -Also, the independence between program times and master time has 22.625 -subtle advantages. It enables elegant enforcement of the VMS 22.626 -guarantee, and implementation simplifications that become clear after 22.627 -gaining deep implementation knowledge. 22.628 - 22.629 -In VMS, each event relevant to parallel semantics is tied to a 22.630 -transition of the state of a Slave VP. This means that implementing 22.631 -the behavior of parallel semantics is equivalent to controlling the 22.632 -order of transitions of state of virtual processors. 22.633 - 22.634 -\paragraph*{Definition.} 22.635 - 22.636 -The stream of instructions in a given program-time is broken into a 22.637 -number of \emph{trace-segments}, separated by suspension points. Each 22.638 -trace-segment is animated by a single physical core, but not 22.639 -necessarily the same core as animated the other trace segments. A 22.640 -suspend point is created by a Slave VP executing the ``suspend'' 22.641 -primitive provided by VMS. A suspend point has no duration in program 22.642 -time, but has distinct start and end points in virtual time. The 22.643 -end-suspension points of two different program times can be tied 22.644 -together within virtual time, which is called a \emph{tie point} and 22.645 -has special significance to parallel constructs. The physical time of 22.646 -a core has no relationship to any program time, except for the various 22.647 -time-guarantees in this definition of VMS. 22.648 - 22.649 -\begin{figure}[ht] 22.650 - \includegraphics[width=5in]{../figures/Time_in_VMS_1.eps} 22.651 - \caption 22.652 - {Mapping program time onto Virtual time. \ The 22.653 - Master controls creation of new program time lines, and ending suspend 22.654 - points. Here, it has ended two suspend points at a common tie-point. 22.655 - } 22.656 -\label{figTimeMapping} 22.657 -\end{figure} 22.658 - 22.659 -\paragraph*{Relating time-lines to each other.} 22.660 - 22.661 -Figure \ref{figTimeMapping} illustrates how trace-segments relate to 22.662 -suspend points, and map onto virtual time. A trace segment starts in 22.663 -virtual time where suspend is ended, as seen. In fact, the two trace 22.664 -segments shown have a common start-point within virtual time. This is 22.665 -because the parallelism semantics chose to start them at the same 22.666 -point -- this is what a tie point is. A key note is that the lengths 22.667 -in virtual time have no relation to the lengths in program-time. The 22.668 -only defined feature is that those two trace-segments have a common 22.669 -start-point in virtual time. This means that the two suspend points 22.670 -are considered to be tied together. 22.671 - 22.672 -\paragraph*{The key VMS guarantee.} 22.673 - 22.674 -Being tied together means that all physical events that can be 22.675 -observed by both program-times are covered by the key VMS guarantee: 22.676 -any events triggered before the common suspend point in one program 22.677 -time are guaranteed visible in the other program time after the common 22.678 -suspend point. They {\em{might}} be visible before, but it's not 22.679 -guaranteed. In addition, events triggered after the common suspend 22.680 -point in one are guaranteed not visible before the common suspend 22.681 -point in the other. This two-part guarantee is a fundamental design 22.682 -property of VMS. 22.683 - 22.684 -Intuitively, a tie-point separates before it from after such that tied 22.685 -program times agree (illustrated with code in Section \ref{secApp} 22.686 -Figure \ref{figAnimVP}). But the subtlety is that events triggered 22.687 -before the tie-point, {\em{might}} be visible to the other before, and 22.688 -ones triggered after {\em{might not}} be visible to the other after -- 22.689 -physical events triggered before are only guaranteed visible 22.690 -{\em{after}} the tie point, and events after are only guaranteed 22.691 -{\em{not}} visible {\em{before}} the tie point. 22.692 - 22.693 -This is a form of bounded non-determinism. The pattern of suspension 22.694 -end-points determines which trace-segments overlap in Virtual time, 22.695 -and events triggered in one might be visible in overlapped ones. But 22.696 -no guarantees cover these. If one segment tries to observe, it will 22.697 -see events triggered by overlapped segments in non-deterministic 22.698 -order. 22.699 - 22.700 -The VMS implementation defines which physical events are covered by 22.701 -the key VMS guarantee (reads/writes, network communication, DMA, I/O). 22.702 - 22.703 -\paragraph*{Globally consistent sequential order.} 22.704 - 22.705 -VMS maps suspend-start, suspend-end, and hence tie-points, to a 22.706 -globally-consistent sequential order in Virtual time. This enables one 22.707 -of VMS's key benefits: sequential algorithms for parallel constructs. 22.708 - 22.709 -Tie points define parallel behavior, so an implementation of how to 22.710 -choose tie points equals an implementation of parallel constructs. The 22.711 -Master chooses tie-points, so plugging code to choose tie-points into 22.712 -the Master equals plugging in parallel constructs. 22.713 - 22.714 -\subsection{Scheduling State} 22.715 - 22.716 -Scheduling state is used in VMS to organize internal activity, for 22.717 -enforcing the guarantees. 22.718 - 22.719 -\begin{itemize} 22.720 -\item VPs have three scheduling states: {\em{Animated}}, 22.721 - {\em{Blocked}}, {\em{Ready}}; see Figure~\ref{figStates}. 22.722 -\item VPs in Animated are {\em{allowed}} to advance Program time with 22.723 - (core-local) physical time. 22.724 -\item VPs in Blocked and Ready do not advance their Program time. 22.725 -\item Animated has two physical states: {\em{Progressing}} and 22.726 - {\em{Stalled}}. 22.727 -\item VPs in Progressing advance Program time with (core-local) 22.728 - physical time, those in Stalled do not (allowing non-semantic 22.729 - suspend). 22.730 -\item Scheduling states are defined in Virtual time only. 22.731 -\item Progressing and Stalled are defined in (core-local) physical 22.732 - time only; the distinction is invisible in Virtual time. 22.733 -\end{itemize} 22.734 - 22.735 -\begin{figure}[h!tb] 22.736 -\begin{minipage}{.55\textwidth} 22.737 - \includegraphics[width=\textwidth]{../figures/Scheduling_states_2.eps} 22.738 - \caption{Scheduling states of a slave VP in the VMS model.} 22.739 - \label{figStates} 22.740 -\end{minipage} 22.741 -\hfill 22.742 -\begin{minipage}{.43\textwidth} 22.743 - \includegraphics[width=\textwidth]{../figures/VMS-core__plugins.eps} 22.744 - \caption 22.745 - { 22.746 - The Master, split into a generic core and a language-specific plugin. 22.747 - The core encapsulates the hardware and remains the same across applications. 22.748 - The plugin is part of the parallelism-construct implementation. 22.749 - } 22.750 - \label{figMasterSplit} 22.751 -\end{minipage} 22.752 -\end{figure} 22.753 - 22.754 - 22.755 -Some important points: (1) only VPs Animated can trigger physical 22.756 -events that are seen in other program time-lines; (2) the distinction 22.757 -between Blocked vs Stalled is that a VP has to explicitly execute a 22.758 -VMS primitive operation to enter Blocked, making it part of the 22.759 -semantics of parallelism constructs. In contrast, Stalled happens 22.760 -invisibly, with no effect on semantic behavior. It is due to hardware 22.761 -events hidden inside VMS, such as interrupts. 22.762 - 22.763 -The Ready state is used to separate the parallelism-construct behavior 22.764 -from the scheduling behavior. It acts as a ``staging area'' for 22.765 -scheduling. VPs placed into this state are {\em{allowed}} to be 22.766 -animated, then the scheduler decides when and where. 22.767 - 22.768 -An essential and illustrative point is that actions {\em{outside}} a 22.769 -given Program time cause the VP to transition 22.770 -Blocked$\rightarrow$Ready, which contrasts to lock algorithms where 22.771 -the concurrency-related behavior takes place {\em{inside}} program 22.772 -time. 22.773 - 22.774 -\paragraph*{Transition Between Slave Scheduling States.} 22.775 - 22.776 -\begin{itemize} 22.777 -\item VPs transition states as shown in Figure \ref{figStates}. 22.778 -\item Animated$\rightarrow$Blocked is caused by a Slave VP 22.779 - executing the Suspend VMS primitive. 22.780 -\item Blocked$\rightarrow$Ready is determined by the semantics 22.781 - implemented in the plugin. 22.782 -\item Ready$\rightarrow$Animated is determined by the scheduler in the 22.783 - plugin. 22.784 -\item Transitions in scheduling state have a globally consistent order 22.785 - in Virtual time. 22.786 -\end{itemize} 22.787 - 22.788 -The parallelism primitives executed by a program do not control change 22.789 -in scheduling states. They merely communicate messages to the Master, 22.790 -via a VMS supplied primitive. Inside the Master, the plugin's 22.791 -parallelism construct implementation processes the message. Based on 22.792 -that, it performs changes in state from Blocked$\rightarrow$Ready, 22.793 -creates new VPs, and dissipates existing VPs. Most communication from 22.794 -Slave to Master requires the VP to suspend when it sends the 22.795 -message. A few messages, like creating new Slave may be sent without 22.796 -suspending. 22.797 - 22.798 -The suspend primitive decouples local physical time from Virtual time. 22.799 -Execution causes immediate transition to Stalled in physical time, 22.800 -then the Master performs Animated$\rightarrow$Blocked, fixing that 22.801 -transition in Virtual time. The only relationship is causality. This 22.802 -weak relation is what allows suspension-points to be serialized in 22.803 -Virtual time, which in turn is what allows using sequential algorithms 22.804 -to implement parallelism constructs. 22.805 - 22.806 -\subsection{Plugins} 22.807 - 22.808 -The Master entity has two parts, a generic core part and a plugin 22.809 -(Figure \ref{figMasterSplit}). The core part of the Master is 22.810 -implemented as part of VMS itself. The plugin supplies two functions: 22.811 -the communication-handler and the scheduler, both having a standard 22.812 -prototype. The communication-handler implements the parallelism 22.813 -constructs, while scheduler assigns VPs to cores. 22.814 - 22.815 -An \emph{instance} of a plugin is created as part of initializing an 22.816 -application, and the instance holds the semantic and scheduling state 22.817 -for that run of the application. This state, combined with the virtual 22.818 -processor states of the slaves created during that application run, 22.819 -represents progress of the work of the application. For example, 22.820 -multi-tasking is performed simply by the Master switching among 22.821 -plugin instances when it has a resource to offer to a scheduler. The 22.822 -parallelism-semantic state holds all information needed to resume 22.823 -(hardware state, such as TLB and cache-tags is inside VMS). 22.824 - 22.825 -\section{Internal Workings of Our Implementation} 22.826 -\label{secInternal} 22.827 - 22.828 -We name the elements of our example implementation and describe their 22.829 -logical function, then relate them to the abstract model. We then step 22.830 -through the operation of the elements. 22.831 - 22.832 -\paragraph*{Elements and their logical function.} 22.833 - 22.834 -As illustrated in Figure~\ref{figInternals}, our VMS implementation is 22.835 -organized around physical cores. Each core has its own {\em{master 22.836 - virtual-processor}}, \texttt{masterVP}, and a {\em{physical-core 22.837 - controller}}, which communicate via a set of scheduling slots, 22.838 -\texttt{schedSlot}. The Master in the abstract definition is 22.839 -implemented by the multiple \texttt{masterVP}s plus a particular 22.840 -plugin instance with its shared parallelism-semantic state (seen at 22.841 -the top). 22.842 - 22.843 -On a given core, only one of: the core-controller, \texttt{masterVP}, 22.844 -or a slave VP, is animated at any point in local physical time. Each 22.845 -\texttt{masterVP} animates the same function, called 22.846 -\texttt{master\_loop}, and each slave VP animates a function from the 22.847 -application, starting with the top-level function the slave is created 22.848 -with, and following its call sequence. The core controller is 22.849 -implemented here as a Linux pthread that runs the \texttt{core\_loop} 22.850 -function. 22.851 - 22.852 -Switching between VPs is done by executing a VMS primitive that 22.853 -suspends the VP. This switches the physical core over to the 22.854 -controller, by jumping to the start of the \texttt{core\_loop} 22.855 -function, which chooses the next VP and switches to that (switching is 22.856 -detailed in Section \ref{secApp} Figure \ref{figAssembly}). 22.857 - 22.858 -\paragraph*{Relation to abstract model.} 22.859 - 22.860 -We chose to implement the Master entity of the model by a set of 22.861 -\texttt{masterVP}s, plus plugin functions and shared 22.862 -parallelism-semantic state. VMS consists of this implementation of the 22.863 -Master, plus the core-controllers, plus the VMS primitive libraries, 22.864 -for creating new VPs and dissipating existing VPs, suspending VPs, and 22.865 -communicating from slave VP to Master. In Figure~\ref{figInternals}, 22.866 -everything in green is part of VMS, while the plugin is in red, and 22.867 -application code appears as blue, inside the slave VP. 22.868 - 22.869 -Virtual time in the model is implemented via a combination of four 22.870 -things: a \texttt{masterLock} (not shown) that guarantees non-overlap 22.871 -of \texttt{masterVP} trace-segments; the \texttt{master\_loop} which 22.872 -performs transition Animated$\rightarrow$Blocked; the 22.873 -\texttt{comm\_handler\_fn} which performs Blocked$\rightarrow$Ready 22.874 -and the \texttt{scheduler\_fn} which performs 22.875 -Ready$\rightarrow$Animated. \ Each state transition is one step of 22.876 -Virtual time; is guaranteed sequential by the non-overlap of 22.877 -\texttt{masterVP} trace segments; and is global due to being in 22.878 -parallelism-semantic state that is shared (top of 22.879 -Figure~\ref{figInternals}). 22.880 - 22.881 -Transitions Progressing$\rightleftarrows$Stalled within the Animated 22.882 -state are invisible to the parallelism semantics, the Master, and 22.883 -Virtual time, and so have no effect on the elements seen. 22.884 - 22.885 -\begin{figure*}[h!tb] 22.886 - \centerline{\includegraphics[width=5in]{../figures/VMS-core__internal_workings.eps}} 22.887 - \caption 22.888 - { Internal elements of our example VMS implementation 22.889 - } 22.890 - \label{figInternals} 22.891 -\end{figure*} 22.892 - 22.893 -\paragraph*{Steps of operation.} 22.894 - 22.895 -The steps of operation are numbered, in Figure \ref{figInternals}. 22.896 -Taking them in order: 22.897 - 22.898 -\begin{enumerate} 22.899 -\item \texttt{master\_loop} scans the scheduling slots to see which 22.900 - ones' slaves have suspended since the previous scan. 22.901 -\item It hands these to the \texttt{comm\_handler\_fn} plugged in 22.902 -(which equals transition Animated$\rightarrow$Blocked). 22.903 -\item The VP has a request attached, and data in it causes the 22.904 - \texttt{comm\_handler\_fn} to manipulate data structures in the 22.905 - shared parallelism-semantic state. These structures hold all the 22.906 - slaves in the blocked state (code-level detail and example will 22.907 - come in Figure~\ref{figReqHdlr}, Section~\ref{secApp}). 22.908 -\item Some requests cause slaves to be moved to a \texttt{readyQ} on 22.909 - one of the cores (Blocked$\rightarrow$Ready). Which core's 22.910 - \texttt{readyQ} receives the slave is under plugin control, 22.911 - determined by a combination of request contents, semantic state and 22.912 - physical machine state. 22.913 -\item During the scan, the \texttt{master\_loop} also looks for empty 22.914 - slots, and for each calls the \texttt{scheduler\_fn} plugged in. It 22.915 - chooses a slave from the \texttt{readyQ} on the core animating 22.916 - \texttt{master\_loop}. 22.917 -\item The \texttt{master\_loop} then places the slave VP's pointer 22.918 - into the scheduling slot (Ready$\rightarrow$Animated), making it 22.919 - available to the \texttt{core\_loop}. 22.920 -\item When done with the scan, \texttt{masterVP} suspends, switching 22.921 - animation back to the \texttt{core\_loop}. 22.922 -\item \texttt{core\_loop} takes slave VPs out of the slots. 22.923 -\item Then \texttt{core\_loop} switches animation to these slave VPs. 22.924 -\item When a slave self-suspends, animation returns to the 22.925 - \texttt{core\_loop} (detail in code in Figure 9), which picks 22.926 - another. 22.927 -\item Until all slots are empty and the \texttt{core\_loop} switches 22.928 - animation to the \texttt{masterVP}. 22.929 -\end{enumerate} 22.930 - 22.931 -\paragraph*{Enabling sequential implementation of parallelism semantics.} 22.932 - 22.933 -All these steps happen on each core separately, but 22.934 -%% AC. Cannot be both an essential property of VMS and "un this particular..." 22.935 -% in this particular implementation 22.936 -we use a central \texttt{masterLock} to ensure that 22.937 -only one core's \texttt{masterVP} can be active at any time. This 22.938 -guarantees non-overlap of trace-segments from different 22.939 -\texttt{masterVP}s, allowing the plugins to use sequential algorithms, 22.940 -without a performance penalty, as verified in 22.941 -Section~\ref{secResults}. 22.942 - 22.943 -Relating this to the abstract model: the parallelism-semantic behavior 22.944 -of the Master is implemented by the communication handler, in the 22.945 -plugin. It thus runs in the Master time referred to, in the model, in 22.946 -Section \ref{secAbsModel}. Requests are sent to the Master by 22.947 -self-suspension of the slaves, but sit idle until the other slaves in 22.948 -the scheduling slots have also run. This is the passive behavior of 22.949 -requests that was noted in Section~\ref{secAbsModel}, which allows the 22.950 -\texttt{masterVP}s to remain suspended until needed. This in turn 22.951 -enables the \texttt{masterVP}s from different cores to be 22.952 -non-overlapped. It is the non-overlap that enables the algorithms for 22.953 -the parallelism semantics to be sequential. 22.954 - 22.955 -\section{Code Level View} 22.956 -\label{secApp} 22.957 - 22.958 -To relate the abstract model and the internal elements to application 22.959 -code and parallelism-library code, we give code snippets that 22.960 -illustrate key features. We start with the application then work down 22.961 -through the sequence of calls, to the plugin, using our SSR 22.962 -{\cite{VMSHome}} parallelism-library as an example. 22.963 - 22.964 -In general, applications are either written in terms of a parallel 22.965 -language that has its own syntax, or a base language with a 22.966 -parallelism library, which is often called an {\em{embedded 22.967 - language}}. Our demonstrators, VCilk {\cite{VMSHome}}, Vthread, 22.968 -and SSR, are all parallelism libraries. A parallel language would 22.969 -follow the standard practice of performing source-to-source transform, 22.970 -from custom syntax into C plus parallelism-library calls. 22.971 - 22.972 -\paragraph*{SSR.} 22.973 - 22.974 -SSR stands for Synchronous Send-Receive, and details of its calls and 22.975 -internal implementation will be given throughout this section. It has 22.976 -two types of construct. The first, called {\em{from-to}} has two 22.977 -calls: \texttt{SSR\_send\_from\_to} and 22.978 -\texttt{SSR\_receive\_from\_to}, both of which specify the sending VP 22.979 -as well as the receiving VP. \ The other, called {\em{of-type}} also 22.980 -has two calls: \texttt{SSR\_\_send\_of\_type\_to} and 22.981 -\texttt{SSR\_\_receive\_of\_type}, which allow a receiver to accept 22.982 -from anonymous senders, but select according to type of message. 22.983 - 22.984 -% An example of a double column floating figure using two subfigures. 22.985 -% (The subfig.sty package must be loaded for this to work.) 22.986 -% The subfigure \label commands are set within each subfloat command, the 22.987 -% \label for the overall figure must come after \caption. 22.988 -% \hfil must be used as a separator to get equal spacing. 22.989 -% The subfigure.sty package works much the same way, except \subfigure is 22.990 -% used instead of \subfloat. 22.991 -% 22.992 -%\begin{figure*}[!t] 22.993 -%\centerline{\subfloat[Case I]\includegraphics[width=2.5in]{subfigcase1}% 22.994 -%\label{fig_first_case}} 22.995 -%\hfil 22.996 -%\subfloat[Case II]{\includegraphics[width=2.5in]{subfigcase2}% 22.997 -%\label{fig_second_case}}} 22.998 -%\caption{Simulation results} 22.999 -%\label{fig_sim} 22.1000 -%\end{figure*} 22.1001 -% 22.1002 -% Note that often IEEE papers with subfigures do not employ subfigure 22.1003 -% captions (using the optional argument to \subfloat), but instead will 22.1004 -% reference/describe all of them (a), (b), etc., within the main caption. 22.1005 - 22.1006 -\paragraph*{Application view.} 22.1007 - 22.1008 -Figure~\ref{figAnimVP} shows snippets of application code, which use 22.1009 -the SSR parallelism library. The most important feature is that all 22.1010 -calls take a pointer to the VP that is animating the call. This is 22.1011 -seen at the top of the figure where slave VP creation takes a pointer 22.1012 -to the VP asking for creation. Below that is the standard prototype 22.1013 -for top level functions, showing that the function receives a pointer 22.1014 -to the VP it is the top level function for. 22.1015 - 22.1016 -The pointer is placed on the stack by VMS when it creates the VP, and 22.1017 -is the means by which the application comes into possession of the 22.1018 -pointer. This animating VP is passed to all library calls made from 22.1019 -there. For example, the bottom shows a pointer to the animating VP 22.1020 -placed in the position of sender in the \texttt{send} construct call. 22.1021 -Correspondingly, for the \texttt{receive} construct, the position of 22.1022 -receiving VP is filled by the VP animating the call. 22.1023 - 22.1024 -\begin{figure}[h!tb] 22.1025 -{\noindent 22.1026 -{\footnotesize 22.1027 -{\small Creating a new processor:} 22.1028 -\begin{verbatim} 22.1029 -newProcessor = SSR__create_procr( &top_VP_fn, paramsPtr, animatingVP ); 22.1030 -\end{verbatim} 22.1031 - 22.1032 -{\small prototype for the top level function:} 22.1033 -\begin{verbatim} 22.1034 -top_VP_fn( void *parameterStrucPtr, VirtProcr *animatingVP ); 22.1035 -\end{verbatim} 22.1036 - 22.1037 -{\small handing animating VP to parallelism constructs:} 22.1038 -\begin{verbatim} 22.1039 -SSR__send_from_to( messagePtr, animatingVP, receivingVP ); 22.1040 -messagePtr = SSR__receive_from_to( sendingVP, animatingVP ); 22.1041 -\end{verbatim} 22.1042 -} 22.1043 -} 22.1044 -\caption 22.1045 -{Application code snippets showing that all calls to the parallelism library 22.1046 -take the VP animating that call as a parameter. 22.1047 -} 22.1048 -\label{figAnimVP} 22.1049 -\end{figure} 22.1050 - 22.1051 -Relating these to the internal elements of our implementation, the 22.1052 -\texttt{animatingVP} suspends inside each of these calls, passing a 22.1053 -request (generated in the library) to one of the \texttt{masterVP}s. 22.1054 -The \texttt{masterVP} then calls the \texttt{comm-handler} plugin, and 22.1055 -so on, as described in Section \ref{secInternal}. 22.1056 - 22.1057 -For the \texttt{SSR\_\_create\_processor} call, the comm-handler in 22.1058 -turn calls a VMS primitive to perform the creation. The primitive 22.1059 -places a pointer to the newly created VP onto its stack, so that when 22.1060 -\texttt{top\_VP\_fn} is later animated, it sees the VP-pointer as a 22.1061 -parameter passed to it. \ All application code is either such a 22.1062 -top-level function, or has one at the root of the call-stack. 22.1063 - 22.1064 -The send and receive calls both suspend their animating VP. When both 22.1065 -have been called, the communication handler pairs them up and resumes 22.1066 -both. This ties time-lines together, invoking the VMS guarantee. Both 22.1067 -application-functions know, because of the VMS guarantee 22.1068 -(Section~\ref{secAbsModel}), that writes to shared variables made 22.1069 -before the send call by the sender are visible to the receiver after 22.1070 -the receive call. This is the programmer's view of tying together the 22.1071 -local time-lines of two different VPs, as defined in 22.1072 -Section~\ref{secAbsModel}. 22.1073 - 22.1074 -\paragraph*{Concurrency-library view.} 22.1075 - 22.1076 -A parallelism library function, in general, only creates a request, 22.1077 -sends it, and returns, as seen below. To send a request, it uses the 22.1078 -combined request-and-suspend VMS primitive that attaches the request 22.1079 -then suspends the VP. The primitive requires the pointer to the VP, 22.1080 -to attach the request and to suspend it. 22.1081 - 22.1082 -In Figure~\ref{figImplLib}, notice that the request's data is on the 22.1083 -stack of the virtual processor that's animating the call, which is the 22.1084 -\texttt{receiveVP}. The \texttt{VMS\_\_send\_sem\_request} suspends 22.1085 -this VP, which changes the physical core's stack pointer to a 22.1086 -different stack. So the request data is guaranteed to remain 22.1087 -undisturbed while the VP is suspended. 22.1088 - 22.1089 -Figure~\ref{figAssembly} shows the implementation of the VMS suspend 22.1090 -primitive. As seen in Figure \ref{figInternals}, suspending the 22.1091 -\texttt{receiveVP} involves switching to the \texttt{core\_loop}. In 22.1092 -our implementation, this is done by switching to the stack of the 22.1093 -pthread pinned to the physical core and then jumping to the 22.1094 -start-point of \texttt{core\_loop}. 22.1095 - 22.1096 -This code uses standard techniques commonly employed in co-routine 22.1097 -implementations. Tuning effort spent in \texttt{core\_loop} is 22.1098 -inherited by all applications. 22.1099 - 22.1100 -\begin{figure}[h!tb] 22.1101 -{\noindent 22.1102 -{\footnotesize 22.1103 -\begin{verbatim} 22.1104 -void * SSR__receive_from_to( VirtProcr *sendVP, VirtProcr *receiveVP ) 22.1105 - { SSRSemReq reqData; 22.1106 - reqData.receiveVP = receiveVP; 22.1107 - reqData.sendVP = sendVP; 22.1108 - reqData.reqType = receive_from_to; 22.1109 - VMS__send_sem_request( &reqData, receiveVP ); 22.1110 - return receiveVP->dataReturnedFromRequest; 22.1111 - } 22.1112 -\end{verbatim} 22.1113 -} 22.1114 -} 22.1115 -\caption{Implementation of SSR's receive\_from\_to library function.} 22.1116 -\label{figImplLib} 22.1117 - 22.1118 -{\noindent 22.1119 -{\footnotesize 22.1120 -\begin{verbatim} 22.1121 -VMS__suspend_procr( VirtProcr *animatingVP ) 22.1122 - { animatingVP->resumeInstrAddr = &&ResumePt; //GCC takes addr of label 22.1123 - animatingVP->schedSlotAssignedTo->isNewlySuspended = TRUE; //for master_loop to see 22.1124 - <assembly code stores current physical core's stack reg into animatingVP struct> 22.1125 - <assembly code loads stack reg with core_loop stackPtr, which was saved into animatingVP> 22.1126 - <assembly code jmps to core_loop start instr addr, which was also saved into animatingVP> 22.1127 - ResumePt: 22.1128 - return; 22.1129 - } 22.1130 -\end{verbatim} 22.1131 -} 22.1132 -} 22.1133 - \caption 22.1134 -{Implementation of VMS suspend processor. 22.1135 -Re-animating the virtual processor reverses this sequence. \ It saves the 22.1136 -\texttt{core\_loop}'s resume instr-addr and stack ptr into the VP structure, 22.1137 -then loads the VP's stack ptr and jmps to its \texttt{resumeInstrAddr}. 22.1138 -} 22.1139 -\label{figAssembly} 22.1140 - 22.1141 -{\noindent 22.1142 -{\footnotesize 22.1143 -\begin{verbatim} 22.1144 -handle_receive_from_to( VirtProcr *requestingVP, SSRSemReq *reqData, SSRSemEnv *semEnv ) 22.1145 - { commHashTbl = semEnv->communicatingVPHashTable; 22.1146 - key[0] = reqData->receiveVP; key[1] = reqData->sendVP; //send uses same key 22.1147 - waitingReqData = lookup_and_remove( key, commHashTbl ); //get waiting request 22.1148 - if( waitingReqData != NULL ) 22.1149 - { resume_virt_procr( waitingReqData->sendVP ); 22.1150 - resume_virt_procr( waitingReqData->receiveVP ); 22.1151 - } 22.1152 - else 22.1153 - insert( key, reqData, commHashTbl ); //receive is first to arrive, make it wait 22.1154 - } 22.1155 -\end{verbatim} 22.1156 -} 22.1157 -} 22.1158 - \caption 22.1159 -{Pseudo-code of communication-handler for 22.1160 -\texttt{receive\_from\_to} request type. The \texttt{semEnv} is a pointer 22.1161 -to the shared parallel semantic state seen at the top of 22.1162 -Figure~\ref{figInternals}. 22.1163 -} 22.1164 -\label{figReqHdlr} 22.1165 -\end{figure} 22.1166 - 22.1167 -\paragraph*{Plugin view.} 22.1168 - 22.1169 -SSR's communication handler dispatches on the \texttt{reqType} field 22.1170 -of the request data, as set by the \texttt{SSR\_\_receive\_from\_to} 22.1171 -code. It calls the handler code in Figure \ref{figReqHdlr}. This 22.1172 -constructs a hash-key, by concatenating the from-VP's pointer with the 22.1173 -to-VP's pointer. Then it looks-up that key in the hash-table that SSR 22.1174 -uses to match sends with receives, which is in the shared semantic 22.1175 -state seen at the top of Figure \ref{figInternals} in 22.1176 -Section~\ref{secInternal}. 22.1177 - 22.1178 -The most important feature in Figure~\ref{figReqHdlr} is that both 22.1179 -send and receive will construct the same key, so will find the same 22.1180 -hash entry. Whichever request is handled first in Virtual time will 22.1181 -see the hash entry empty, and save itself in that entry. The second 22.1182 -to arrive sees the waiting request and then resumes both VPs, by 22.1183 -putting them into their \texttt{readyQ}s. 22.1184 - 22.1185 -Access to the shared hash table can be considered private, as in a 22.1186 -sequential algorithm. This is because our VMS-core implementation 22.1187 -ensures that only one handler on one core is executing at a time. 22.1188 - 22.1189 -\section{Results} 22.1190 -\label{secResults} 22.1191 - 22.1192 -We implemented blocked dense matrix multiplication with right 22.1193 -sub-matrices copied to transposed form, and ran it on a 4-core 22.1194 -Core2Quad 2.4Ghz processor. 22.1195 - 22.1196 -\paragraph*{Implementation-time.} 22.1197 - 22.1198 -As shown in Table~\ref{tabPersonDaysLang}, time to implement the three 22.1199 -parallel libraries averages 2 days each. As an example of 22.1200 -productivity, adding nested transactions, parallel singleton, and 22.1201 -atomic function-execution to SSR required a single afternoon, totaling 22.1202 -less than 100 lines of C code. 22.1203 - 22.1204 -\paragraph*{Execution Performance.} 22.1205 - 22.1206 -Performance of VMS is seen in Table~\ref{tabOverheadCycles}. The code 22.1207 -is not optimized, but rather written to be easy to understand and 22.1208 -modify. The majority of the plugin time is lost to cache misses 22.1209 -because the shared parallelism-semantic state moves between cores on a 22.1210 -majority of accesses. Acquisition of the master lock is slow due to 22.1211 -the hardware implementing the CAS instruction. 22.1212 - 22.1213 -Existing techniques will likely improve performance, such as 22.1214 -localizing semantic data to cores, splitting malloc across the cores, 22.1215 -pre-allocating slabs that are recycled, and pre-fetching. However, in 22.1216 -many cases, several hundred nano-seconds per task is as optimal as the 22.1217 -applications can benefit from. 22.1218 - 22.1219 -\begin{table}[h!tb] 22.1220 -\begin{minipage}{.35\textwidth} 22.1221 -\begin{tabular}{|l|l|l|l|} 22.1222 - \cline{2-4} 22.1223 - \multicolumn{1}{l|}{} & SSR & Vthread & VCilk\\ 22.1224 - \cline{2-4} 22.1225 - \noalign{\vskip2pt} 22.1226 - \hline 22.1227 - Design & 4 & 1 & 0.5\\ 22.1228 - Code & 2 & 0.5 & 0.5\\ 22.1229 - Test & 1 & 0.5 & 0.5\\ 22.1230 - L.O.C. & 470 & 290 & 310\\ 22.1231 - \hline 22.1232 -\end{tabular} 22.1233 -\caption 22.1234 -{Person-days to design, code, and 22.1235 - test each parallelism library. L.O.C. is lines of (original) C code, 22.1236 - excluding libraries and comments. 22.1237 -} 22.1238 -\label{tabPersonDaysLang} 22.1239 -\end{minipage} 22.1240 -\hspace{-.05\textwidth} 22.1241 -\begin{minipage}[t]{.7\textwidth} 22.1242 -\hfill 22.1243 -\begin{tabular}{|l|l|r|r|} 22.1244 -\cline{3-4} 22.1245 -\multicolumn{2}{l|}{} & comp only & comp + mem\\ 22.1246 -\cline{3-4} 22.1247 -\noalign{\vskip2pt} 22.1248 -\hline 22.1249 -VMS Only & \texttt{master\_loop} & 91 & 110\\ 22.1250 -& switch VPs & 77 & 130\\ 22.1251 -& (malloc) & 160 & 2300\\ 22.1252 -& (create VP) & 540 & 3800\\ 22.1253 -\hline 22.1254 -Language: & & & \\ 22.1255 -\quad SSR & plugin -- concur & 190 & 540\\ 22.1256 -& plugin -- all & 530 & 2200\\ 22.1257 -& lock & & 250\\ 22.1258 -\quad Vthread & plugin -- concur & 66 & 710\\ 22.1259 -& plugin -- all & 180 & 1500\\ 22.1260 -& lock & & 250\\ 22.1261 -\quad VCilk & plugin -- concur & 65 & 260\\ 22.1262 -& plugin -- all & 330 & 1800\\ 22.1263 -& lock & & 250\\ 22.1264 -\hline 22.1265 -\end{tabular} 22.1266 -\caption 22.1267 -{Cycles of overhead, per scheduled 22.1268 - slave. ``comp only'' is perfect memory, ``comp + mem'' is actual cycles. 22.1269 - ``Plugin-concur'' only concurrency requests, ``plugin-all'' includes 22.1270 - create and malloc requests. Two significant digits due to variability. 22.1271 -} 22.1272 -\label{tabOverheadCycles} 22.1273 -\end{minipage} 22.1274 - 22.1275 -\vskip-1.5cm 22.1276 -\begin{tabular}{|l|lr|} 22.1277 -\hline 22.1278 - Matrix size&Lang.&sec.\\ 22.1279 -[2pt]\hline 22.1280 - $81\times81$ & Cilk & 0.017\\ 22.1281 - & VCilk & 0.008\\ 22.1282 -\hline 22.1283 - $324\times324$ & Cilk & 0.13\\ 22.1284 - & VCilk & 0.13\\ 22.1285 -\hline 22.1286 - $648\times648$ & Cilk & 0.71\\ 22.1287 - & VCilk & 0.85\\ 22.1288 -\hline 22.1289 - $1296\times1296$ & Cilk & 4.8\\ 22.1290 - & VCilk & 6.2 \\ 22.1291 -[2pt]\hline 22.1292 -\end{tabular} 22.1293 -\hfill 22.1294 -\begin{tabular}{|l|r|r|r|r|} 22.1295 -\multicolumn{5}{l}{}\\ 22.1296 -\multicolumn{5}{l}{}\\ 22.1297 -\multicolumn{5}{l}{}\\ 22.1298 -\hline 22.1299 - operation & \multicolumn{2}{c|}{Vthread} & pthread & ratio\\ 22.1300 - & comp only & total & & \\ 22.1301 -[2pt]\hline 22.1302 - mutex\_lock & 85 & 1050 & 50,000 & 48:1\\ 22.1303 - mutex\_unlock & 85 & 610 & 45,000 & 74:1\\ 22.1304 - cond\_wait & 85 & 850 & 60,000 & 71:1\\ 22.1305 - cond\_signal & 90 & 650 & 60,000 & 92:1\\ 22.1306 -\hline 22.1307 -\end{tabular} 22.1308 -\caption 22.1309 -{On left, exe time in seconds for MM. To the right, overhead for 22.1310 - pthread vs. Vthread. First column is cycles 22.1311 - for perfect memory and second is total measured cycles. pthread cycles are 22.1312 - deduced from round-trip experiments. 22.1313 -} 22.1314 -\label{tabHeadToHead} 22.1315 -\end{table} 22.1316 - 22.1317 -\paragraph*{Head to head.} 22.1318 - 22.1319 -We compare our implementation of the \texttt{spawn} and \texttt{sync} 22.1320 -constructs against Cilk 5.4, on the top in Table~\ref{tabHeadToHead}, 22.1321 -which shows that the same application code has similar 22.1322 -performance. For large matrices, Cilk 5.4's better use of the memory 22.1323 -hierarchy (the workstealing algorithm) achieves 23\% better 22.1324 -performance. However, for small matrices, VCilk is better, with a 22.1325 -factor 2 lower overhead. Cilk 5.4 does not allow controlling the 22.1326 -number of spawn events it actually executes, and chooses to run 22.1327 -smaller matrices sequentially, limiting our comparison. 22.1328 - 22.1329 -When comparing to pthreads, our VMS based implementation has more than 22.1330 -an order of magnitude better overhead per invocation of mutex or 22.1331 -condition variable functionality, as seen on the bottom of Table 22.1332 -\ref{tabHeadToHead}. Applications that inherently have short trace 22.1333 -segments will synchronize often and benefit the most from Vthread. 22.1334 - 22.1335 -\section{Conclusion} 22.1336 -\label{secConclusion} 22.1337 - 22.1338 -We have shown an alternative to the thread model that enables 22.1339 -easier-to-use parallelism constructs by splitting the scheduler open, 22.1340 -to accept new parallelism constructs in the form of plugins. This 22.1341 -gives the language control over assigning virtual processors to 22.1342 -physical cores, for performance, debugging, and flexibility 22.1343 -benefits. Parallelism constructs of programming languages can be 22.1344 -implemented using sequential algorithms, within a matter of days, 22.1345 -while maintaining low run-time overhead. 22.1346 - 22.1347 -\bibliography{../helpers/bib_for_papers} 22.1348 - 22.1349 -\end{document}
23.1 Binary file 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.pdf has changed
24.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 24.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.tex Sat Jan 21 20:51:58 2012 -0800 24.3 @@ -0,0 +1,546 @@ 24.4 +% template-v1.tex: LaTeX2e template for Usenix papers. 24.5 +% Version: usetex-v1, 31-Oct-2002 24.6 +% Revision history at end. 24.7 + 24.8 +\documentclass[finalversion,endnotes]{usetex-v1} 24.9 +% Choose the appropriate option: 24.10 +% 24.11 +% 1. workingdraft: 24.12 +% 24.13 +% For initial submission and shepherding. Features prominent 24.14 +% date, notice of draft status, page numbers, and annotation 24.15 +% facilities. The three supported annotation macros are: 24.16 +% \edannote{text} -- anonymous annotation note 24.17 +% \begin{ednote}{who} -- annotation note attributed 24.18 +% text to ``who'' 24.19 +% \end{ednote} 24.20 +% \HERE -- a marker that can be left 24.21 +% in the text and easily 24.22 +% searched for later 24.23 +% 2. proof: 24.24 +% 24.25 +% A galley proof identical to the final copy except for page 24.26 +% numbering and proof date on the bottom. Annotations are 24.27 +% removed. 24.28 +% 24.29 +% 3. webversion: 24.30 +% 24.31 +% A web-publishable version, uses \docstatus{} to indicate 24.32 +% publication information (where and when paper was published), 24.33 +% and page numbers. 24.34 +% 24.35 +% 4. finalversion: 24.36 +% 24.37 +% The final camera-ready-copy (CRC) version of the paper. 24.38 +% Published in conference proceedings. This doesn't include 24.39 +% page numbers, annotations, or draft status (Usenix adds 24.40 +% headers, footers, and page numbers onto the CRC). 24.41 +% 24.42 +% If several are used, the last one in this list wins 24.43 +% 24.44 + 24.45 +% 24.46 +% In addition, the option "endnotes" permits the use of the 24.47 +% otherwise-disabled, Usenix-deprecated footnote{} command in 24.48 +% documents. In this case, be sure to include a 24.49 +% \makeendnotes command at the end of your document or 24.50 +% the endnotes will not actually appear. 24.51 +% 24.52 +% 24.53 +%%======================================================================= 24.54 + 24.55 +% These packages are optional, but useful 24.56 +\usepackage{epsfig} % postscript figures 24.57 +\usepackage{url} % \url{} command with good linebreaks 24.58 + 24.59 +%\usepackage{geometry} %chgs the margins and layout! 24.60 +\usepackage{graphicx,calc,ifthen,makeidx,amssymb,makeidx} 24.61 +\usepackage[tight,footnotesize]{subfigure} 24.62 + 24.63 +\graphicspath{{../figures/}} 24.64 + 24.65 +%======================================================================= 24.66 + 24.67 +\begin{document} 24.68 + 24.69 +\bibliographystyle{plain} 24.70 + 24.71 +\title{A Hardware Abstraction for a Portability Software Stack} 24.72 + 24.73 +\docstatus{Submitted to HotPar 2012} 24.74 + 24.75 +% authors. separate groupings with \and. 24.76 +\author{ 24.77 +\authname{{Sean Halle \ \ \ \ \ \ \ \ Merten Sach \ \ \ \ \ \ \ \ Ben Juurlink}} 24.78 +\authaddr{{Technical University Berlin, Germany \ \ \ }} 24.79 +\authemail{{first.last@tu-berlin.de}} 24.80 +} 24.81 + 24.82 +%\authurl{\url{http://www.aes.tu-berlin.de/menue/home/parameter/en/}} 24.83 + 24.84 + 24.85 +\maketitle 24.86 + 24.87 +%======================================================================= 24.88 + 24.89 +\begin{abstract} 24.90 +A recent proposal for a software stack that supports performant portability\cite{} relies on the assumption, among others, that a suitable hardware abstraction exists for the bottom layer. The abstraction must have certain properties: it must be invisible to upper layers; it must simplify language implementation, in part by hiding details of synchronization and details of network; and at the same time enable high performance, in part by giving the language control over task placement and exposing memory hierarchy, communication times, and other major performance-related aspects of the hardware. 24.91 + 24.92 +In this paper, we show that an abstraction called Virtualized Master-Slave, or VMS \cite{} 24.93 +satisfies these criteria, and provide recent measurements to support the case. 24.94 + 24.95 +\end{abstract} 24.96 + 24.97 +%======================================================================= 24.98 + 24.99 +\section{Motivation} 24.100 + 24.101 + 24.102 +As stated in the call for papers, wide uptake of high efficiency parallel architectures ``requires new parallel programming paradigms, new methods of application design, new structures for system software, and new models of interaction among applications, compilers, operating systems, and hardware." In short, a new software stack, and players in research and industry organized to supply the pieces of the stack. The goal of the stack is to make parallel programming the same order of productivity as sequential programming, and to give parallel code similar portability onto newer generations of hardware that sequential code enjoyed. 24.103 + 24.104 +A major benefit of such a stack is reduced cost of parallel software. This is achieved, in part, by performant portability, which means code is written once then run performantly across hardware targets, including unknown future architectures. 24.105 + 24.106 +A recent proposal for achieving this, named PStack\cite{}, calls for a software stack having a layer of languages (toolchains) at the top, a layer of language runtimes below that, and a hardware abstraction layer at the bottom\cite{}. 24.107 + 24.108 +The languages must be designed to capture all information required to specialize the code for high performance across hardware. A computation model, called The Holistic Model\cite{}, suggests that such a canonical set of information exists. PStack proposes to develop the constructs that gather the information, where some constructs are in the form of specialization helpers such as task-resizers and layout modifiers. The application implements the specialization helpers, thereby encoding information about data structures and how to manipulate them. The seeds of such an approach were laid with work on DKU\cite{}, which demonstrated the success of task-resizing constructs. 24.109 + 24.110 +The proposal also calls for the use of the BLIS\cite{} approach for managing multiple toolchains, where each one specializes to a different target. The management includes the install process, during which the correct toolchain output is paired to the installation target. Further specialization can thus be naturally added during installation, when exact hardware details are known. If required, runtime tuning and optimization also fits within the approach. 24.111 + 24.112 +The top layer of the software stack is thus the combination of constructs and managed toolchains. 24.113 +Below that, in the middle of the stack, a collection of runtime systems acts as a sort of cross-bar switch, connecting the languages above to a standard hardware abstraction below. 24.114 + 24.115 +Such a ``cross-bar'' switch made up of runtimes implies a large number of runtimes. To be practical, the number must be reduced, the effort of creating one must be reduced, and reuse of sophisticated runtime code must be encouraged. 24.116 + 24.117 +The purpose of the bottom abstraction is to minimize the effort to create those runtimes in the middle layer. It must hide hardware details, so a single runtime is efficient across similar hardware. It must also uniform-ize runtime implementation, making the code modular and providing a similar structure on all platforms. 24.118 + 24.119 + However, the abstraction must not hide performance-critical information from the runtime, which holds the scheduler that decides when tasks become free and where to execute them. Such scheduling choices need to know the communication paths and memory pools in the hardware, along with latency, bandwidth, capacity and computation rate. 24.120 + 24.121 +A single abstraction can't both hide details and expose those required by the runtimes to attain high performance. Instead, PStack calls for a family of abstractions, one for each major type of architecture, including a``hierarchy'' abstraction used to glue together heterogeneous hardware. In each, only the details critical to performance are exposed to the scheduler in the runtime, thus keeping the number of abstractions needed manageably small, on the order of tens in total. 24.122 + 24.123 +This paper's contribution is showing how the Virtualized Master-Slave abstraction\cite{} fits the criteria for the bottom of such a portability software stack. This includes recent performance results for VMS on a variety of hardware platforms over a selection of benchmarks. 24.124 + 24.125 + 24.126 +\section{Background on PStack and VMS} 24.127 + 24.128 +Describe details of bottom of software stack and details of how cross-bar works, tie to the need for low-work runtime impl, and the need for reuse of runtime code across languages. 24.129 + 24.130 +Describe how VMS fulfills those needs. Details of its interface, details of its impl on multi-core, details of differences on different machines. 24.131 +Leave as-is for 1x4 and 1x2 -- make entirely different impl for 2x4 and another for 4x10 24.132 + 24.133 +\section{Description of How VMS Fits PStack's Requirements} 24.134 + 24.135 +\section{Experimental Setup} 24.136 + 24.137 +\section{Results} 24.138 + 24.139 +\subsection{Performance Results} 24.140 +Figure X shows the execution time versus task-size curve for Vthread, while Figure X shows the same for pthread, both executed on the SandyBridge 1x4 machine. The 2x point occurs near X cycles for Vthread, nearly independently from the number of threads created. Meanwhile, it occurs near X for pthread, for a small number of threads, showing that pthreads has X times higher overhead in the best case. However, pthreads degrades rapidly as the number of threads is increased. The system crashes with more than X threads, at which point the overhead of pthreads is X times higher than Vthread (not shown on graph because it's too large). 24.141 + 24.142 + 24.143 + 24.144 +When moving to multi-socket machines, things change, as seen in figures X and X. The central master-lock in the VMS implementation creates a bottleneck for small task sizes. This causes Vthread to have only a X advantage over pthread for small task sizes. However, Vthread overhead remains independent of number of threads. 24.145 + 24.146 +Likewise, the benchmarks for ray tracking, matrix multiply, and kmeans clustering show that Vthread outperforms pthreads. They nearly match for large work sizes, but Vthread significantly outperforms for small work sizes, as seen in Figures X and X. 24.147 + 24.148 +%\mbox 24.149 +% {\subfigure{\includegraphics[width=2.3in, angle = -90] 24.150 +% {plots_exec_vs_task_size_v3/cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps} 24.151 +% }} 24.152 + 24.153 +\begin{figure}[ht] 24.154 + \includegraphics[width=2.3in, angle = -90]{plots_exec_vs_task_size_v3/cray1_pthread_8_32_128_512thds__o30000__perfCtrs.eps} 24.155 + \caption 24.156 + {$\frac{ExecutionTime} {WorkTime}$ vs $TaskTime$. The smaller the task, the smaller the time between scheduling events. When the ratio reaches 2, the scheduling overhead exactly equals the task time. This shows results for pthreads and for Vthreads on a 1 socket by 2 core PC. 24.157 + } 24.158 +\label{figCray1pthreadAndVthread} 24.159 +\end{figure} 24.160 + 24.161 +foo 24.162 + 24.163 +\begin{figure}[ht!] 24.164 + \includegraphics[width=2.2in, angle = -90]{plots_exec_vs_task_size_v3/xoanon_pthread_vthread_40core_80_160_320_640thds__o30000__perfCtrs.eps} 24.165 + \caption 24.166 + {$\frac{ExecutionTime} {WorkTime}$ vs $TaskTime$. The smaller the task, the smaller the time between scheduling events. When the ratio reaches 2, the scheduling overhead exactly equals the task time. This shows results for pthreads and for Vthreads on a 1 socket by 2 core PC. 24.167 + } 24.168 +\label{figCray1pthreadAndVthread} 24.169 +\end{figure} 24.170 + 24.171 + 24.172 + 24.173 +\begin{figure}[ht!] 24.174 + \includegraphics[width=2.2in, angle = -90] 24.175 + {plots_exec_vs_task_size_v3/vms_vthread_8_32_128_512thds__o30000__perfCtrs.eps} 24.176 + \caption 24.177 + {$\frac{ExecutionTime} {WorkTime}$ vs $TaskTime$. The smaller the task, the smaller the time between scheduling events. When the ratio reaches 2, the scheduling overhead exactly equals the task time. This shows results for pthreads and for Vthreads on a 1 socket by 2 core PC. 24.178 + } 24.179 +\label{figCray1pthreadAndVthread} 24.180 +\end{figure} 24.181 + 24.182 + 24.183 +\begin{figure}[ht!] 24.184 + \includegraphics[width=2.2in, angle = -90] 24.185 + {plots_exec_vs_task_size_v3/vms_pthread_8_32_128thds__o30000__perfCtrs.eps} 24.186 + \caption 24.187 + {$\frac{ExecutionTime} {WorkTime}$ vs $TaskTime$. The smaller the task, the smaller the time between scheduling events. When the ratio reaches 2, the scheduling overhead exactly equals the task time. This shows results for pthreads and for Vthreads on a 1 socket by 2 core PC. 24.188 + } 24.189 +\label{figCray1pthreadAndVthread} 24.190 +\end{figure} 24.191 + 24.192 + 24.193 +\subsection{Implementation Time Results} 24.194 +As seen in a previous paper on VMS\citation{}, VMS makes runtime implementation quick and easy. The results are re-printed here to support the claim that VMS meets the PStack requirement of reducing runtime implementation effort. These compare to weeks or months to learn code of a pre-existing multi-threaded runtime, modify it, and debug the multi-threaded implementation. 24.195 + 24.196 +Implementation time is reduced by the uniform natrue of VMS-based runtimes, freedom from details hidden by the VMS interface, the helper facilities VMS provides, VMS's debugging facilities, and freedom from multi-threading issues due to VMS's tie-point based ordering guarantee. When combined, they lead to the fast implementation times seen in Table X. 24.197 + 24.198 + 24.199 + 24.200 +\section{Future Work and Conclusion} 24.201 +A semester long 24.202 + 24.203 + 24.204 + 24.205 +\section{Planning} 24.206 + 24.207 + (6.5" x 9" 10pt 2 col) 24.208 + 24.209 +require new parallel programming paradigms, new methods of application design, new structures for system software, and new models of interaction among applications, compilers, operating systems, and hardware. 24.210 + 24.211 +what benefits performant portability will bring 24.212 + 24.213 +abstraction must have certain properties to fulfill its role in stack. Contribution of paper is new results confirming suitability of VMS to be that abstraction. 24.214 + 24.215 +The Need: background on portability stack -- the end-goal sought, the fundamentals involved in any solution to provide it, how proposed stack from last year is updated to accord with those fundamentals in achieving end-goal. The elements of the stack. What function/role each element serves. 24.216 + 24.217 +Describe details of bottom of software stack and details of how cross-bar works, and the need for low-work runtime impl, and the need for reuse of runtime code across languages. 24.218 + 24.219 +what need in bottom, to support eco-system\cite{} 24.220 + 24.221 + Many runtime systems are implemented -- for each language, one runtime for each variant of the abstraction. 24.222 + 24.223 +Expect domain-specific languages -- these embed new behaviors into base language. Different from library because cannot understand the behavior of the call based on the base language alone. The runtime system provides behavior beyond the base language. This approach makes for quick creation of languages specialized to narrow domains. 24.224 + 24.225 +This approach is likely to fail without performant portability for its user's benefit, and a low-cost way to implement it for the language provider. 24.226 + 24.227 +In effect, just about the only purpose and criteria for judgement of the base abstraction is its ability to reduce effort, and its ability to support the portability features of the upper layers. 24.228 + 24.229 +Effort has two aspects: in implementing a new language, and in porting existing languages to new hardware. 24.230 + 24.231 +Support for upper layers is 24.232 + 24.233 +Hence, the two primary aspects of the base hardware abstraction are its ability to reduce the effort of implementing the set of runtime systems for a given language, and its ability to reduce the number of such runtime systems. 24.234 + 24.235 +for abstraction in bottom layer, here's VMS, detailed in LCPC paper, with new results that show it can, indeed, fulfil the base abstraction role for the class of multi-core hardware. 24.236 + 24.237 + 24.238 + 24.239 + 24.240 + 24.241 + 24.242 + 24.243 + 24.244 + 24.245 + 24.246 + 24.247 + 24.248 + 24.249 + 24.250 + 24.251 + 24.252 + 24.253 + 24.254 +Describe details of bottom of software stack and details of how cross-bar works, tie to the need for low-work runtime impl, and the need for reuse of runtime code across languages. 24.255 + 24.256 +Describe how VMS fulfills those needs. Details of its interface, details of its impl on multi-core, details of differences on different machines. 24.257 +Leave as-is for 1x4 and 1x2 -- make entirely different impl for 2x4 and another for 4x10 24.258 + 24.259 +\section{example text} 24.260 + 24.261 +More fascinating text. Features galore, plethora of promises. 24.262 +\begin{ednote}{BCM} 24.263 + This ednote is marked as mine. 24.264 +\end{ednote} 24.265 + 24.266 +\section{This is Another Section} 24.267 + 24.268 +Some embedded literal typeset code is shown below. Note that line or 24.269 +page breaks can occur in the middle of code typeset this way. To 24.270 +avoid such line or page breaks, put the code inside a figure 24.271 +environment instead. 24.272 + 24.273 +\begin{small} 24.274 +\begin{verbatim} 24.275 +int wrap_fact(ClientData clientData, 24.276 + Tcl_Interp *interp, 24.277 + int argc, char *argv[]) { 24.278 + int result; 24.279 + int arg0; 24.280 + if (argc != 2) { 24.281 + interp->result = "wrong # args"; 24.282 + return TCL_ERROR; 24.283 + } 24.284 + arg0 = atoi(argv[1]); 24.285 + result = fact(arg0); 24.286 + sprintf(interp->result,"%d",result); 24.287 + return TCL_OK; 24.288 +} 24.289 +\end{verbatim} 24.290 +\end{small} 24.291 + 24.292 +Now we're going to cite somebody. Watch for the cite tag. Here it 24.293 +comes~\cite{heidrich,perl5,otcl}. And a bit later we will cite 24.294 +another one. Stay tuned~\cite{ousterhout}. 24.295 + 24.296 +\section{This Section has Sub-Sections} 24.297 +\label{sec:secs} 24.298 + 24.299 +This text is the introduction to Section~\ref{sec:secs}. 24.300 + 24.301 +\begin{figure}[htbp] 24.302 +\begin{centering} 24.303 +\epsfig{file=sample.eps, width=2.50in} 24.304 +\small\itshape 24.305 +\caption{\small\itshape This figure was created with \texttt{xfig}. If you 24.306 +want it to span two columns, use \texttt{figure*} in the LaTeX source file.} 24.307 +\label{fig-sample} 24.308 +\end{centering} 24.309 +\end{figure} 24.310 + 24.311 +\subsection{First Sub-Section} 24.312 + 24.313 +Here's a typical figure reference. Figure~\ref{fig:flowchart} is 24.314 +centered at the top of the column. It may be scaled. If so, you may 24.315 +have to tweak the numbers to get the size you want. It may be 24.316 + hard to do this. 24.317 + 24.318 + 24.319 +\begin{figure}[tb] 24.320 + \begin{center} 24.321 +% \psfig{file=figure.eps,scale=0.45} % PostScript figure 24.322 + \texttt{<insert figure here>} % remove this line 24.323 + \caption{Wonderful flowchart} 24.324 + \label{fig:flowchart} 24.325 + \end{center} 24.326 +\end{figure} 24.327 + 24.328 +This text came after the figure, so we'll casually refer to 24.329 +Figure~\ref{fig:flowchart} as we go on our merry way. 24.330 + 24.331 +% you need to work on the workingdraft document right here soon 24.332 +\HERE 24.333 + 24.334 +\subsection{Footnotes} 24.335 + 24.336 +For the Usenix style, footnotes are not allowed: endnotes 24.337 +are, although they are 24.338 +deprecated.\ifhasendnotes\footnote{Thus, this is not a 24.339 +footnote}\fi\ Try to avoid both footnotes and endnotes in 24.340 +technical writing. It is best to use parenthetical or 24.341 +subordinate clauses instead. If you want endnotes anyhow, 24.342 +use the "endnotes" documentstyle option and include a 24.343 +\verb+\makeendnotes+ command at the end of your document. 24.344 +You will still be whined at. 24.345 + 24.346 +\subsection{Tables and Code} 24.347 + 24.348 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 24.349 +\begin{table*}[htbp] 24.350 +\centering 24.351 +\begin{tabular}{|c||c|c|c|c||c|c|c|c|c|c|l|}\hline 24.352 + {\bf Cloak} 24.353 + & \multicolumn{4}{c||}{\textbf{User \texttt{ezk}}} 24.354 + & \multicolumn{6}{c|}{\textbf{User \texttt{joe}}} 24.355 + & \multicolumn{1}{c|}{\textbf{Meaning}} 24.356 +\\\cline{2-11} 24.357 + {\bf Mask} 24.358 + &{J1} 24.359 + &{J2} 24.360 + &{J3} 24.361 + &{J4} 24.362 + &{E5} 24.363 + &{E6} 24.364 + &{E7} 24.365 + &{E8} 24.366 + &{E9} 24.367 + &{E10} 24.368 + &\multicolumn{1}{c|}{\textbf{for files J1--E10}} 24.369 +\\\hline 24.370 + {+000} 24.371 + & 24.372 + & 24.373 + & 24.374 + & 24.375 + & 24.376 + & 24.377 + & 24.378 + & 24.379 + & 24.380 + & 24.381 + & Show files to owners only 24.382 +\\\hline 24.383 + {+007} 24.384 + & 24.385 + & 24.386 + &{A} 24.387 + & 24.388 + & 24.389 + & 24.390 + &{A} 24.391 + &{A} 24.392 + & 24.393 + & 24.394 + & Show files to owners and others 24.395 +\\\hline 24.396 + {+070} 24.397 + & 24.398 + &{A} 24.399 + &{A} 24.400 + & 24.401 + &{A} 24.402 + & 24.403 + &{A} 24.404 + &{A} 24.405 + & 24.406 + & 24.407 + & Show files to owners and group members 24.408 +\\\hline 24.409 +\end{tabular} 24.410 +\small\itshape 24.411 +\caption{\small\itshape Here is a complex table that spans two columns. It 24.412 + shows how also to straddle the table cells.} 24.413 +\label{tab-sample} 24.414 +\end{table*} 24.415 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 24.416 + 24.417 +It can get tricky typesetting Tcl and C code in LaTeX because they 24.418 +share a lot of mystical feelings about certain magic characters. You 24.419 +will have to do a lot of escaping to typeset curly braces and percent 24.420 +signs, for example, like this: ``The \verb@%module@ directive sets 24.421 +the name of the initialization function. This is optional, but is 24.422 +recommended if building a Tcl 7.5 module. Everything inside the 24.423 +\verb@%{@, \verb@%}@ block is copied directly into the 24.424 +output. allowing the inclusion of header files and additional C code.'' 24.425 + 24.426 +Sometimes you want to really call attention to a piece of text. You 24.427 +can center it in the column like this: 24.428 +\begin{center} 24.429 +\verb@_1008e614_Vector_p@ 24.430 +\end{center} 24.431 +and people will really notice it. 24.432 + 24.433 +Now this is an ingenious way to get a forced space. \texttt{Real~$*$} 24.434 +and \texttt{double~$*$} are equivalent. 24.435 + 24.436 + 24.437 +\subsection{Lists} 24.438 + 24.439 +You can make lists using LaTeX's listing environments 24.440 +(\texttt{itemize}, \texttt{enumerate}, and \texttt{description}). 24.441 +These environments can be nested (e.g. an itemized list can be an 24.442 +element of an enumerated list). 24.443 + 24.444 +An \texttt{itemize} list looks like this: 24.445 +\begin{itemize} 24.446 +\item The map structure defines an address space. 24.447 +\item The page structure manages a page of physical memory. 24.448 +\end{itemize} 24.449 + 24.450 +An \texttt{enumerate} list is like an itemized list, except that it is 24.451 +numbered: 24.452 +\begin{enumerate} 24.453 +\item The map structure defines an address space. 24.454 +\item The page structure manages a page of physical memory. 24.455 +\end{enumerate} 24.456 + 24.457 +A \texttt{description} list uses words rather bullets or numbers: 24.458 +\begin{description} 24.459 +\item[\textbf{map structure:}] defines an address space. 24.460 +\item[\textbf{page structure:}] manages a page of physical memory. 24.461 +\end{description} 24.462 + 24.463 +\subsection{Last Sub-Section} 24.464 + 24.465 +Well, it's getting boring isn't it. This is the last subsection 24.466 +before we wrap it up. 24.467 + 24.468 +\section{Acknowledgments} 24.469 + 24.470 +A polite author always includes acknowledgments. You 24.471 +should thank everyone, 24.472 +especially those who funded the work. 24.473 + 24.474 +\section{Availability} 24.475 + 24.476 +It is great news if this section can say that your 24.477 +app, WonderfulApp is free 24.478 +software, available via anonymous FTP from 24.479 +\url{ftp://ftp.dom/pub/myname/Wonderful}. Also, it's even better 24.480 +when you can write that information is also available on the Wonderful 24.481 +homepage at \url{http://www.dom/~myname/SWIG}. 24.482 + 24.483 +Now we get serious and fill in those references. Remember you will 24.484 +have to run latex twice on the document in order to resolve those 24.485 +cite tags you met earlier. This is where they get resolved. 24.486 +We've preserved some real ones in addition to the template-speak. 24.487 +After the bibliography you are DONE. 24.488 + 24.489 +% This is where the endnotes (see the ``footnote'' above) 24.490 +% are filled in. Use this only if you have endnotes. 24.491 +\ifhasendnotes\makeendnotes\fi 24.492 + 24.493 +\begin{thebibliography}{99} 24.494 + 24.495 +\bibitem{beazley} D.~M.~Beazley and P.~S.~Lomdahl, 24.496 +\emph{Message-Passing Multi-Cell Molecular Dynamics on the Connection 24.497 +Machine 5}, Parall.~Comp.~ 20 (1994) p. 173-195. 24.498 + 24.499 +\bibitem{CitePetName} A.~N.~Author and A.~N.~Other, 24.500 +\emph{Title of Riveting Article}, JournalName VolNum (Year) p. Start-End 24.501 + 24.502 +\bibitem{embed} Embedded Tk, \url{ftp://ftp.vnet.net/pub/users/drh/ET.html} 24.503 + 24.504 +\bibitem{expect} Don Libes, \emph{Exploring Expect}, O'Reilly \& Associates, Inc. (1995). 24.505 + 24.506 +\bibitem{heidrich} Wolfgang Heidrich and Philipp Slusallek, \emph{ 24.507 +Automatic Generation of Tcl Bindings for C and C++ Libraries.}, 24.508 +USENIX 3rd Annual Tcl/Tk Workshop (1995). 24.509 + 24.510 +\bibitem{ousterhout} John K. Ousterhout, \emph{Tcl and the Tk Toolkit}, Addison-Wesley Publishers (1994). 24.511 + 24.512 +\bibitem{perl5} Perl5 Programmers reference, 24.513 +\url{http://www.metronet.com/perlinfo/doc}, (1996). 24.514 + 24.515 +\bibitem{otcl} D. Wetherall, C. J. Lindblad, ``Extending Tcl for 24.516 +Dynamic Object-Oriented Programming'', Proceedings of the USENIX 3rd Annual Tcl/Tk Workshop (1995). 24.517 + 24.518 +\end{thebibliography} 24.519 + 24.520 +\end{document} 24.521 + 24.522 +% Revision History: 24.523 +% designed specifically to meet requirements of 24.524 +% TCL97 committee. 24.525 +% originally a template for producing IEEE-format articles using LaTeX. 24.526 +% written by Matthew Ward, CS Department, Worcester Polytechnic Institute. 24.527 +% adapted by David Beazley for his excellent SWIG paper in Proceedings, 24.528 +% Tcl 96 24.529 +% turned into a smartass generic template by De Clarke, with thanks to 24.530 +% both the above pioneers 24.531 +% use at your own risk. Complaints to /dev/null. 24.532 +% make it two column with no page numbering, default is 10 point 24.533 + 24.534 +% Munged by Fred Douglis <douglis@research.att.com> 10/97 to separate 24.535 +% the .sty file from the LaTeX source template, so that people can 24.536 +% more easily include the .sty file into an existing document. Also 24.537 +% changed to more closely follow the style guidelines as represented 24.538 +% by the Word sample file. 24.539 +% This version uses the latex2e styles, not the very ancient 2.09 stuff. 24.540 +% 24.541 + 24.542 +% Revised July--October 2002 by Bart Massey, Chuck Cranor, Erez 24.543 +% Zadok and the FREENIX Track folks to ``be easier to use and work 24.544 +% better''. Hah. Major changes include transformation into a 24.545 +% latex2e class file, better support for drafts, and some 24.546 +% layout improvements. 24.547 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 24.548 +% for Ispell: 24.549 +% LocalWords: workingdraft BCM ednote SubSections xfig SubSection joe
25.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 25.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/url.sty Sat Jan 21 20:51:58 2012 -0800 25.3 @@ -0,0 +1,325 @@ 25.4 +% url.sty ver 1.4 02-Mar-1999 Donald Arseneau asnd@triumf.ca 25.5 +% Copyright 1996-1999 Donald Arseneau, Vancouver, Canada. 25.6 +% This program can be used, distributed, and modified under the terms 25.7 +% of the LaTeX Project Public License. 25.8 +% 25.9 +% A form of \verb that allows linebreaks at certain characters or 25.10 +% combinations of characters, accepts reconfiguration, and can usually 25.11 +% be used in the argument to another command. It is intended for email 25.12 +% addresses, hypertext links, directories/paths, etc., which normally 25.13 +% have no spaces. The font may be selected using the \urlstyle command, 25.14 +% and new url-like commands can be defined using \urldef. 25.15 +% 25.16 +% Usage: Conditions: 25.17 +% \url{ } If the argument contains any "%", "#", or "^^", or ends with 25.18 +% "\", it can't be used in the argument to another command. 25.19 +% The argument must not contain unbalanced braces. 25.20 +% \url| | ...where "|" is any character not used in the argument and not 25.21 +% "{" or a space. The same restrictions as above except that the 25.22 +% argument may contain unbalanced braces. 25.23 +% \xyz for "\xyz" a defined-url; this can be used anywhere, no matter 25.24 +% what characters it contains. 25.25 +% 25.26 +% See further instructions after "\endinput" 25.27 +% 25.28 +\def\Url@ttdo{% style assignments for tt fonts or T1 encoding 25.29 +\def\UrlBreaks{\do\.\do\@\do\\\do\/\do\!\do\_\do\|\do\%\do\;\do\>\do\]% 25.30 + \do\)\do\,\do\?\do\'\do\+\do\=}% 25.31 +\def\UrlBigBreaks{\do\:\do@url@hyp}% 25.32 +\def\UrlNoBreaks{\do\(\do\[\do\{\do\<}% (unnecessary) 25.33 +\def\UrlSpecials{\do\ {\ }}% 25.34 +\def\UrlOrds{\do\*\do\-\do\~}% any ordinary characters that aren't usually 25.35 +} 25.36 +\def\Url@do{% style assignments for OT1 fonts except tt 25.37 +\def\UrlBreaks{\do\.\do\@\do\/\do\!\do\%\do\;\do\]\do\)\do\,\do\?\do\+\do\=}% 25.38 +\def\UrlBigBreaks{\do\:\do@url@hyp}% 25.39 +\def\UrlNoBreaks{\do\(\do\[\do\{}% prevents breaks after *next* character 25.40 +\def\UrlSpecials{\do\<{\langle}\do\>{\mathbin{\rangle}}\do\_{\_% 25.41 + \penalty\@m}\do\|{\mid}\do\{{\lbrace}\do\}{\mathbin{\rbrace}}\do 25.42 + \\{\mathbin{\backslash}}\do\~{\raise.6ex\hbox{\m@th$\scriptstyle\sim$}}\do 25.43 + \ {\ }}% 25.44 +\def\UrlOrds{\do\'\do\"\do\-}% 25.45 +} 25.46 +\def\url@ttstyle{% 25.47 +\@ifundefined{selectfont}{\def\UrlFont{\tt}}{\def\UrlFont{\ttfamily}}\Url@ttdo 25.48 +} 25.49 +\def\url@rmstyle{% 25.50 +\@ifundefined{selectfont}{\def\UrlFont{\rm}}{\def\UrlFont{\rmfamily}}\Url@do 25.51 +} 25.52 +\def\url@sfstyle{% 25.53 +\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\sffamily}}\Url@do 25.54 +} 25.55 +\def\url@samestyle{\ifdim\fontdimen\thr@@\font=\z@ \url@ttstyle \else 25.56 + \url@rmstyle \fi \def\UrlFont{}} 25.57 + 25.58 +\@ifundefined{strip@prefix}{\def\strip@prefix#1>{}}{} 25.59 +\@ifundefined{verbatim@nolig@list}{\def\verbatim@nolig@list{\do\`}}{} 25.60 + 25.61 +\def\Url{% 25.62 + \begingroup \let\url@moving\relax\relax \endgroup 25.63 + \ifmmode\@nomatherr$\fi 25.64 + \UrlFont $\fam\z@ \textfont\z@\font 25.65 + \let\do\@makeother \dospecials % verbatim catcodes 25.66 + \catcode`{\@ne \catcode`}\tw@ \catcode`\ 10 % except braces and spaces 25.67 + \medmuskip0mu \thickmuskip\medmuskip \thinmuskip\medmuskip 25.68 + \@tempcnta\fam\multiply\@tempcnta\@cclvi 25.69 + \let\do\set@mathcode \UrlOrds % ordinary characters that were special 25.70 + \advance\@tempcnta 8192 \UrlBreaks % bin 25.71 + \advance\@tempcnta 4096 \UrlBigBreaks % rel 25.72 + \advance\@tempcnta 4096 \UrlNoBreaks % open 25.73 + \let\do\set@mathact \UrlSpecials % active 25.74 + \let\do\set@mathnolig \verbatim@nolig@list % prevent ligatures 25.75 + \@ifnextchar\bgroup\Url@z\Url@y} 25.76 + 25.77 +\def\Url@y#1{\catcode`{11 \catcode`}11 25.78 + \def\@tempa##1#1{\Url@z{##1}}\@tempa} 25.79 +\def\Url@z#1{\def\@tempa{#1}\expandafter\expandafter\expandafter\Url@Hook 25.80 + \expandafter\strip@prefix\meaning\@tempa\UrlRight\m@th$\endgroup} 25.81 +\def\Url@Hook{\UrlLeft} 25.82 +\let\UrlRight\@empty 25.83 +\let\UrlLeft\@empty 25.84 + 25.85 +\def\set@mathcode#1{\count@`#1\advance\count@\@tempcnta\mathcode`#1\count@} 25.86 +\def\set@mathact#1#2{\mathcode`#132768 \lccode`\~`#1\lowercase{\def~{#2}}} 25.87 +\def\set@mathnolig#1{\ifnum\mathcode`#1<32768 25.88 + \lccode`\~`#1\lowercase{\edef~{\mathchar\number\mathcode`#1_{\/}}}% 25.89 + \mathcode`#132768 \fi} 25.90 + 25.91 +\def\urldef#1#2{\begingroup \setbox\z@\hbox\bgroup 25.92 + \def\Url@z{\Url@def{#1}{#2}}#2} 25.93 +\expandafter\ifx\csname DeclareRobustCommand\endcsname\relax 25.94 + \def\Url@def#1#2#3{\m@th$\endgroup\egroup\endgroup 25.95 + \def#1{#2{#3}}} 25.96 +\else 25.97 + \def\Url@def#1#2#3{\m@th$\endgroup\egroup\endgroup 25.98 + \DeclareRobustCommand{#1}{#2{#3}}} 25.99 +\fi 25.100 + 25.101 +\def\urlstyle#1{\csname url@#1style\endcsname} 25.102 + 25.103 +% Sample (and default) configuration: 25.104 +% 25.105 +\newcommand\url{\begingroup \Url} 25.106 +% 25.107 +% picTeX defines \path, so declare it optionally: 25.108 +\@ifundefined{path}{\newcommand\path{\begingroup \urlstyle{tt}\Url}}{} 25.109 +% 25.110 +% too many styles define \email like \address, so I will not define it. 25.111 +% \newcommand\email{\begingroup \urlstyle{rm}\Url} 25.112 + 25.113 +% Process LaTeX \package options 25.114 +% 25.115 +\urlstyle{tt} 25.116 +\let\Url@sppen\@M 25.117 +\def\do@url@hyp{}% by default, no breaks after hyphens 25.118 + 25.119 +\@ifundefined{ProvidesPackage}{}{ 25.120 + \ProvidesPackage{url}[1999/03/02 \space ver 1.4 \space 25.121 + Verb mode for urls, email addresses, and file names] 25.122 + \DeclareOption{hyphens}{\def\do@url@hyp{\do\-}}% allow breaks after hyphens 25.123 + \DeclareOption{obeyspaces}{\let\Url@Hook\relax}% a flag for later 25.124 + \DeclareOption{spaces}{\let\Url@sppen\relpenalty} 25.125 + \DeclareOption{T1}{\let\Url@do\Url@ttdo} 25.126 + \ProcessOptions 25.127 +\ifx\Url@Hook\relax % [obeyspaces] was declared 25.128 + \def\Url@Hook#1\UrlRight\m@th{\edef\@tempa{\noexpand\UrlLeft 25.129 + \Url@retain#1\Url@nosp\, }\@tempa\UrlRight\m@th} 25.130 + \def\Url@retain#1 {#1\penalty\Url@sppen\ \Url@retain} 25.131 + \def\Url@nosp\,#1\Url@retain{} 25.132 +\fi 25.133 +} 25.134 + 25.135 +\edef\url@moving{\csname Url Error\endcsname} 25.136 +\expandafter\edef\url@moving 25.137 + {\csname url used in a moving argument.\endcsname} 25.138 +\expandafter\expandafter\expandafter \let \url@moving\undefined 25.139 + 25.140 +\endinput 25.141 +% 25.142 +% url.sty ver 1.4 02-Mar-1999 Donald Arseneau asnd@reg.triumf.ca 25.143 +% 25.144 +% This package defines "\url", a form of "\verb" that allows linebreaks, 25.145 +% and can often be used in the argument to another command. It can be 25.146 +% configured to print in different formats, and is particularly useful for 25.147 +% hypertext links, email addresses, directories/paths, etc. The font may 25.148 +% be selected using the "\urlstyle" command and pre-defined text can be 25.149 +% stored with the "\urldef" command. New url-like commands can be defined, 25.150 +% and a "\path" command is provided this way. 25.151 +% 25.152 +% Usage: Conditions: 25.153 +% \url{ } If the argument contains any "%", "#", or "^^", or ends with 25.154 +% "\", it can't be used in the argument to another command. 25.155 +% The argument must not contain unbalanced braces. 25.156 +% \url| | ...where "|" is any character not used in the argument and not 25.157 +% "{" or a space. The same restrictions as above except that the 25.158 +% argument may contain unbalanced braces. 25.159 +% \xyz for "\xyz" a defined-url; this can be used anywhere, no matter 25.160 +% what characters it contains. 25.161 +% 25.162 +% The "\url" command is fragile, and its argument is likely to be very 25.163 +% fragile, but a defined-url is robust. 25.164 +% 25.165 +% Package Option: obeyspaces 25.166 +% Ordinarily, all spaces are ignored in the url-text. The "[obeyspaces]" 25.167 +% option allows spaces, but may introduce spurious spaces when a url 25.168 +% containing "\" characters is given in the argument to another command. 25.169 +% So if you need to obey spaces you can say "\usepackage[obeyspaces]{url}", 25.170 +% and if you need both spaces and backslashes, use a `defined-url' for 25.171 +% anything with "\". 25.172 +% 25.173 +% Package Option: hyphens 25.174 +% Ordinarily, breaks are not allowed after "-" characters because this 25.175 +% leads to confusion. (Is the "-" part of the address or just a hyphen?) 25.176 +% The package option "[hyphens]" allows breaks after explicit hyphen 25.177 +% characters. The "\url" command will *never ever* hyphenate words. 25.178 +% 25.179 +% Package Option: spaces 25.180 +% Likewise, breaks are not usually allowed after spaces under the 25.181 +% "[obeyspaces]" option, but giving the options "[obeyspaces,spaces]" 25.182 +% will allow breaks at those spaces. 25.183 +% 25.184 +% Package Option: T1 25.185 +% This signifies that you will be using T1-encoded fonts which contain 25.186 +% some characters missing from most older (OT1) encoded TeX fonts. This 25.187 +% changes the default definition for "\urlstyle{rm}". 25.188 +% 25.189 +% Defining a defined-url: 25.190 +% Take for example the email address "myself%node@gateway.net" which could 25.191 +% not be given (using "\url" or "\verb") in a caption or parbox due to the 25.192 +% percent sign. This address can be predefined with 25.193 +% \urldef{\myself}\url{myself%node@gateway.net} or 25.194 +% \urldef{\myself}\url|myself%node@gateway.net| 25.195 +% and then you may use "\myself" instead of "\url{myself%node@gateway.net}" 25.196 +% in an argument, and even in a moving argument like a caption because a 25.197 +% defined-url is robust. 25.198 +% 25.199 +% Style: 25.200 +% You can switch the style of printing using "\urlstyle{tt}", where "tt" 25.201 +% can be any defined style. The pre-defined styles are "tt", "rm", "sf", 25.202 +% and "same" which all allow the same linebreaks but different fonts -- 25.203 +% the first three select a specific font and the "same" style uses the 25.204 +% current text font. You can define your own styles with different fonts 25.205 +% and/or line-breaking by following the explanations below. The "\url" 25.206 +% command follows whatever the currently-set style dictates. 25.207 +% 25.208 +% Alternate commands: 25.209 +% It may be desireable to have different things treated differently, each 25.210 +% in a predefined style; e.g., if you want directory paths to always be 25.211 +% in tt and email addresses to be rm, then you would define new url-like 25.212 +% commands as follows: 25.213 +% 25.214 +% \newcommand\email{\begingroup \urlstyle{rm}\Url} 25.215 +% \newcommand\directory{\begingroup \urlstyle{tt}\Url} 25.216 +% 25.217 +% You must follow this format closely, and NOTE that the final command is 25.218 +% "\Url", not "\url". In fact, the "\directory" example is exactly the 25.219 +% "\path" definition which is pre-defined in the package. If you look 25.220 +% above, you will see that "\url" is defined with 25.221 +% \newcommand\url{\begingroup \Url} 25.222 +% I.e., using whatever url-style has been selected. 25.223 +% 25.224 +% You can make a defined-url for these other styles, using the usual 25.225 +% "\urldef" command as in this example: 25.226 +% 25.227 +% \urldef{\myself}{\email}{myself%node.domain@gateway.net} 25.228 +% 25.229 +% which makes "\myself" act like "\email{myself%node.domain@gateway.net}", 25.230 +% if the "\email" command is defined as above. The "\myself" command 25.231 +% would then be robust. 25.232 +% 25.233 +% Defining styles: 25.234 +% Before describing how to customize the printing style, it is best to 25.235 +% mention something about the unusual implementation of "\url". Although 25.236 +% the material is textual in nature, and the font specification required 25.237 +% is a text-font command, the text is actually typeset in *math* mode. 25.238 +% This allows the context-sensitive linebreaking, but also accounts for 25.239 +% the default behavior of ignoring spaces. Now on to defining styles. 25.240 +% 25.241 +% To change the font or the list of characters that allow linebreaks, you 25.242 +% could redefine the commands "\UrlFont", "\UrlBreaks", "\UrlSpecials" etc. 25.243 +% directly in the document, but it is better to define a new `url-style' 25.244 +% (following the example of "\url@ttstyle" and "\url@rmstyle") which defines 25.245 +% all of "\UrlBigbreaks", "\UrlNoBreaks", "\UrlBreaks", "\UrlSpecials", and 25.246 +% "\UrlFont". 25.247 +% 25.248 +% Changing font: 25.249 +% The "\UrlFont" command selects the font. The definition of "\UrlFont" 25.250 +% done by the pre-defined styles varies to cope with a variety of LaTeX 25.251 +% font selection schemes, but it could be as simple as "\def\UrlFont{\tt}". 25.252 +% Depending on the font selected, some characters may need to be defined 25.253 +% in the "\UrlSpecials" list because many fonts don't contain all the 25.254 +% standard input characters. 25.255 +% 25.256 +% Changing linebreaks: 25.257 +% The list of characters that allow line-breaks is given by "\UrlBreaks" 25.258 +% and "\UrlBigBreaks", which have the format "\do\c" for character "c". 25.259 +% The differences are that `BigBreaks' have a lower penalty and have 25.260 +% different breakpoints when in sequence (as in "http://"): `BigBreaks' 25.261 +% are treated as mathrels while `Breaks' are mathbins (see The TeXbook, 25.262 +% p.170). In particular, a series of `BigBreak' characters will break at 25.263 +% the end and only at the end; a series of `Break' characters will break 25.264 +% after the first and after every following *pair*; there will be no 25.265 +% break after a `Break' character if a `BigBreak' follows. In the case 25.266 +% of "http://" it doesn't matter whether ":" is a `Break' or `BigBreak' -- 25.267 +% the breaks are the same in either case; but for DECnet nodes with "::" 25.268 +% it is important to prevent breaks *between* the colons, and that is why 25.269 +% colons are `BigBreaks'. 25.270 +% 25.271 +% It is possible for characters to prevent breaks after the next following 25.272 +% character (I use this for parentheses). Specify these in "\UrlNoBreaks". 25.273 +% 25.274 +% You can do arbitrarily complex things with characters by making them 25.275 +% active in math mode (mathcode hex-8000) and specifying the definition(s) 25.276 +% in "\UrlSpecials". This is used in the rm and sf styles for OT1 font 25.277 +% encoding to handle several characters that are not present in those 25.278 +% computer-modern style fonts. See the definition of "\Url@do", which 25.279 +% is used by both "\url@rmstyle" and "\url@sfstyle"; it handles missing 25.280 +% characters via "\UrlSpecials". The nominal format for setting each 25.281 +% special character "c" is: "\do\c{<definition>}", but you can include 25.282 +% other definitions too. 25.283 +% 25.284 +% 25.285 +% If all this sounds confusing ... well, it is! But I hope you won't need 25.286 +% to redefine breakpoints -- the default assignments seem to work well for 25.287 +% a wide variety of applications. If you do need to make changes, you can 25.288 +% test for breakpoints using regular math mode and the characters "+=(a". 25.289 +% 25.290 +% Yet more flexibility: 25.291 +% You can also customize the verbatim text by defining "\UrlRight" and/or 25.292 +% "\UrlLeft", e.g., for ISO formatting of urls surrounded by "< >", define 25.293 +% 25.294 +% \renewcommand\url{\begingroup \def\UrlLeft{<url: }\def\UrlRight{>}% 25.295 +% \urlstyle{tt}\Url} 25.296 +% 25.297 +% The meanings of "\UrlLeft" and "\UrlRight" are *not* reproduced verbatim. 25.298 +% This lets you use formatting commands there, but you must be careful not 25.299 +% to use TeX's special characters ("\^_%~#$&{}" etc.) improperly. 25.300 +% You can also define "\UrlLeft" to reprocess the verbatim text, but the 25.301 +% format of the definition is special: 25.302 +% 25.303 +% \def\UrlLeft#1\UrlRight{ ... do things with #1 ... } 25.304 +% 25.305 +% Yes, that is "#1" followed by "\UrlRight" then the definition. For 25.306 +% example, to put a hyperTeX hypertext link in the DVI file: 25.307 +% 25.308 +% \def\UrlLeft#1\UrlRight{\special{html:<a href="#1">}#1\special{html:</a>}} 25.309 +% 25.310 +% Using this technique, url.sty can provide a convenient interface for 25.311 +% performing various operations on verbatim text. You don't even need 25.312 +% to print out the argument! For greatest efficiency in such obscure 25.313 +% applications, you can define a null url-style where all the lists like 25.314 +% "\UrlBreaks" are empty. 25.315 +% 25.316 +% Revision History: 25.317 +% ver 1.1 6-Feb-1996: 25.318 +% Fix hyphens that wouldn't break and ligatures that weren't suppressed. 25.319 +% ver 1.2 19-Oct-1996: 25.320 +% Package option for T1 encoding; Hooks: "\UrlLeft" and "\UrlRight". 25.321 +% ver 1.3 21-Jul-1997: 25.322 +% Prohibit spaces as delimiter characters; change ascii tilde in OT1. 25.323 +% ver 1.4 02-Mar-1999 25.324 +% LaTeX license; moving-argument-error 25.325 +% The End 25.326 + 25.327 +Test file integrity: ASCII 32-57, 58-126: !"#$%&'()*+,-./0123456789 25.328 +:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
26.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 26.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/usetex-v1-anon.cls Sat Jan 21 20:51:58 2012 -0800 26.3 @@ -0,0 +1,363 @@ 26.4 +\NeedsTeXFormat{LaTeX2e} 26.5 +\ProvidesClass{usetex-v1-anon}[2002/10/31 v1.2 usetex Usenix article class] 26.6 + 26.7 +% usetex-v1.cls - to be used with LaTeX2e for Usenix articles 26.8 +% 26.9 +% To use this style file, do this: 26.10 +% 26.11 +% \documentclass{usetex-v1} 26.12 +% 26.13 +% The following definitions are modifications of standard article.cls 26.14 +% definitions, arranged to do a better job of matching the Usenix 26.15 +% guidelines. and make for convenient Usenix paper writing 26.16 +% 26.17 +% Choose the appropriate option: 26.18 +% 26.19 +% 1. workingdraft: 26.20 +% 26.21 +% For initial submission and shepherding. Features prominent 26.22 +% date, notice of draft status, page numbers, and annotation 26.23 +% facilities. 26.24 +% 26.25 +% 2. proof: 26.26 +% 26.27 +% A galley proof identical to the final copy except for page 26.28 +% numbering and proof date on the bottom. Annotations are 26.29 +% removed. 26.30 +% 26.31 +% 3. webversion: 26.32 +% 26.33 +% A web-publishable version, uses \docstatus{} to indicate 26.34 +% publication information (where and when paper was published), 26.35 +% and page numbers. 26.36 +% 26.37 +% 4. finalversion: 26.38 +% 26.39 +% The final camera-ready-copy (CRC) version of the paper. 26.40 +% Published in conference proceedings. This doesn't include 26.41 +% page numbers, annotations, or draft status (Usenix adds 26.42 +% headers, footers, and page numbers onto the CRC). 26.43 +% 26.44 +% If several are used, the last one in this list wins 26.45 +% 26.46 + 26.47 +% 26.48 +% In addition, the option "endnotes" permits the use of the 26.49 +% otherwise-disabled, Usenix-deprecated footnote{} command in 26.50 +% documents. In this case, be sure to include a 26.51 +% \makeendnotes command at the end of your document or 26.52 +% the endnotes will not actually appear. 26.53 +% 26.54 + 26.55 +\newif\if@draftcopy \newif\ifworkingdraft 26.56 +\DeclareOption{workingdraft}{\workingdrafttrue\@draftcopytrue} 26.57 +\newif\ifproof \DeclareOption{proof}{\prooftrue\@draftcopytrue} 26.58 +\newif\ifwebversion 26.59 +\DeclareOption{webversion}{\prooftrue\webversiontrue\@draftcopytrue} 26.60 +\DeclareOption{finalversion}{} 26.61 +\newif\ifhasendnotes 26.62 +\DeclareOption{endnotes}{\hasendnotestrue} 26.63 + 26.64 +% pass all other options to the article class 26.65 +\DeclareOption*{% 26.66 + \PassOptionsToClass{\CurrentOption}{article}% 26.67 +} 26.68 + 26.69 +% actually process the options 26.70 +\ProcessOptions 26.71 + 26.72 +% usetex is based on article 26.73 +\LoadClass[twocolumn]{article} 26.74 + 26.75 +% Footnotes are not currently allowed, but 26.76 +% endnotes (while a bad idea) are. 26.77 +\ifhasendnotes 26.78 + \RequirePackage{endnotes} 26.79 +\fi 26.80 + 26.81 +% save any provided document status information 26.82 +\def\@docstatus{} 26.83 +\def\docstatus#1{\gdef\@docstatus{#1}} 26.84 + 26.85 +\ifworkingdraft 26.86 + 26.87 + % formatting helper for draft notes 26.88 + \newcommand{\@noteleader[1]}{% 26.89 + {\marginpar{\framebox{\scriptsize\textbf{#1}}}}% 26.90 + \bfseries\itshape 26.91 + } 26.92 + 26.93 + % put a small anonymous editing note in the draft copy 26.94 + \newcommand{\edannote}[1]{{\@noteleader[note] (#1)}} 26.95 + 26.96 + % put a small attributed editing note in the draft copy 26.97 + \newcommand{\edatnote}[2]{{\@noteleader[#1] #2}} 26.98 + 26.99 + % put an attributed editing note paragraph in the draft copy 26.100 + \newenvironment{ednote}[1] 26.101 + {\newcommand{\who}{#1}\@noteleader[\who]} 26.102 + 26.103 + % mark a spot where work has been left off for later 26.104 + \newcommand{\HERE}{% 26.105 + {\mbox{}\marginpar{\framebox{\textbf{here}}}}{\bf\ldots}} 26.106 + 26.107 +\else 26.108 + 26.109 + % dummy versions of editing commands to produce warnings 26.110 + 26.111 + \newcommand{\edannote}[1]{\@latex@warning 26.112 + {Leftover edannote command in final version ignored}} 26.113 + 26.114 + \newcommand{\edatnote}[1]{\@latex@warning 26.115 + {Leftover edatnote command in final version ignored}} 26.116 + 26.117 + \newsavebox{\@discard} 26.118 + \newenvironment{ednote}[1]{\@latex@warning 26.119 + {Leftover ednote environment in final version ignored}% 26.120 + \begin{lrbox}{\@discard}}{\end{lrbox}} 26.121 + 26.122 + \newcommand{\HERE}{\@latex@warning 26.123 + {Leftover HERE command in final version ignored}} 26.124 + 26.125 +\fi 26.126 + 26.127 +% set up the footers appropriately 26.128 +\def\@setfoot{% 26.129 + \ifwebversion 26.130 + % webversions get whatever status the author says 26.131 + \gdef\@evenfoot{\@docstatus \hfil \thepage}% 26.132 + \else 26.133 + % all other drafts get the standard draft footer 26.134 + \gdef\@evenfoot{\textbf{Draft:} \@draftdate\hfil \textbf{Page:} \thepage}% 26.135 + \fi 26.136 + \gdef\@oddfoot{\@evenfoot}% 26.137 +} 26.138 + 26.139 +% 26.140 +% Usenix wants no page numbers for submitted papers, so that 26.141 +% they can number them themselves. Drafts should have 26.142 +% numbered pages, so they can be edited. 26.143 +% 26.144 +\if@draftcopy 26.145 + % Compute a date and time for the draft for use 26.146 + % either in \@setfoot (proof) or in \maketitle (workingdraft) 26.147 + % 26.148 + % Time code adapted from custom-bib/makebst.tex 26.149 + % Copyright 1993-1999 Patrick W Daly 26.150 + % Max-Planck-Institut f\"ur Aeronomie 26.151 + % E-mail: daly@linmp.mpg.de 26.152 + \newcount\hour 26.153 + \hour=\time 26.154 + \divide\hour by 60 26.155 + \newcount\minute 26.156 + \minute=\hour 26.157 + \multiply\minute by 60 26.158 + \advance\minute by -\time 26.159 + \multiply\minute by -1 26.160 + \newcommand{\@draftdate} 26.161 + {{\the\year/\/\two@digits{\the\month}/\/\two@digits{\the\day}% 26.162 + ~\two@digits{\the\hour}:\two@digits{\the\minute}}} 26.163 + \pagestyle{plain} 26.164 + \@setfoot 26.165 +\else 26.166 + \pagestyle{empty} 26.167 +\fi 26.168 + 26.169 +% Times-Roman font is nice if you can get it (requires NFSS, 26.170 +% which is in latex2e). 26.171 +\usepackage{times} 26.172 + 26.173 +% endnote support, as described at 26.174 +% http://www.lyx.org/help/footnotes.php 26.175 +\ifhasendnotes 26.176 + \typeout 26.177 + {Warning: endnotes support is deprecated (see documentation for details)} 26.178 + \let\footnote=\endnote 26.179 + \def\enoteformat{\rightskip\z@ \leftskip\z@ 26.180 + \parindent=0pt\parskip=\baselineskip 26.181 + \@theenmark. } 26.182 + \newcommand{\makeendnotes}{ 26.183 + \begingroup 26.184 + \def\enotesize{\normalsize} 26.185 + \theendnotes 26.186 + \endgroup 26.187 + } 26.188 +\else 26.189 + \long\gdef\footnote{\@latex@error 26.190 + {Deprecated footnote command (see documentation for details)}} 26.191 + \long\gdef\endnote{\@latex@error 26.192 + {Deprecated endnote command (see documentation for details)}} 26.193 +\fi 26.194 + 26.195 +% 26.196 +% Usenix margins 26.197 +% Gives active areas of 6.45" x 9.0" 26.198 +% 26.199 +\setlength{\textheight}{9.0in} 26.200 +\setlength{\columnsep}{0.25in} 26.201 +\setlength{\textwidth}{6.45in} 26.202 +%\setlength{\footskip}{0.0in} 26.203 +%\setlength{\footheight}{0.0in} 26.204 +\setlength{\topmargin}{0.0in} 26.205 +\setlength{\headheight}{0.0in} 26.206 +\setlength{\headsep}{0.0in} 26.207 +\setlength{\evensidemargin}{0.0in} 26.208 +\setlength{\oddsidemargin}{0.0in} 26.209 +\setlength{\marginparsep}{1.5em} 26.210 +\setlength{\marginparwidth}{0.35in} 26.211 + 26.212 +% The standard maketitle insists on 26.213 +% messing with the style of the first page. 26.214 +% Thus, we will wrap maketitle with code to put 26.215 +% things right again. 26.216 +\let \save@maketitle=\maketitle 26.217 +\def\maketitle{ 26.218 + \save@maketitle 26.219 + \if@draftcopy 26.220 + \@specialpagefalse 26.221 + \else 26.222 + \thispagestyle{empty} 26.223 + \fi 26.224 +} 26.225 + 26.226 +% 26.227 +% Usenix titles are in 14-point bold type, with no date, and with no 26.228 +% change in the empty page headers. The author section is 26.229 +% 12 point roman and italic: see below. 26.230 +% 26.231 +\def\@maketitle{% 26.232 + \newpage 26.233 + \null 26.234 +% \vskip 3ex% 26.235 + \begin{center}% 26.236 +% \let \footnote \thanks 26.237 + {\Large \bf \@title \par}% % use 14 pt bold 26.238 +% \vskip 2ex% 26.239 + {\large 26.240 +% \lineskip .5ex% 26.241 +% \begin{tabular}[t]{c}% 26.242 +% \@author 26.243 +% \end{tabular}\par 26.244 + }% 26.245 + \ifworkingdraft 26.246 + \vskip 0.5ex 26.247 + \textbf{Draft of \@draftdate} 26.248 + \vskip 0.5ex 26.249 + \fi 26.250 + \ifwebversion 26.251 + \vskip 0.5ex 26.252 + \textit{Authors and affiliation elided for review.} 26.253 + \vskip 0.5ex 26.254 + \fi 26.255 + \end{center}% 26.256 + \par 26.257 +% \vskip 2ex 26.258 +} 26.259 + 26.260 +% 26.261 +% The author section 26.262 +% should have names in Roman, address in 26.263 +% italic, e-mail/http in typewriter. 26.264 +% This is enforced by use of these macros 26.265 +% 26.266 +\def\authname#1{{#1}\\} 26.267 +\def\authaddr#1{\itshape{#1}\\} 26.268 +\def\authurl#1{{\normalsize #1}\\} 26.269 + 26.270 +% 26.271 +% The abstract is preceded by a 12-pt bold centered heading 26.272 +% 26.273 +\def\abstract{\begin{center}% 26.274 + {\large\bf \abstractname\vspace{-.5ex}\vspace{\z@}}% 26.275 + \end{center}} 26.276 +\def\endabstract{} 26.277 + 26.278 +% 26.279 +% Main section titles are 12-pt bold. Lower divisions can 26.280 +% be same size or smaller: we choose same. 26.281 +% Main section leading is tight. Subsection leading is even 26.282 +% slightly tighter. All lower divisions are formatted like subsections. 26.283 +% 26.284 +\newcommand\@sectionfont{\reset@font\large\bf} 26.285 +\newlength\@sectionaboveskip 26.286 +\setlength\@sectionaboveskip{-0.7\baselineskip 26.287 + plus -0.1\baselineskip 26.288 + minus -0.1\baselineskip} 26.289 +\newlength\@sectionbelowskip 26.290 +\setlength\@sectionbelowskip{0.3\baselineskip 26.291 + plus 0.1\baselineskip} 26.292 +\newlength\@subsectionaboveskip 26.293 +\setlength\@subsectionaboveskip{-0.5\baselineskip 26.294 + plus -0.1\baselineskip} 26.295 +\renewcommand\section{\@startsection {section}{1}{\z@}% 26.296 + {\@sectionaboveskip}{\@sectionbelowskip}{\@sectionfont}} 26.297 +\newcommand\@gensubsection[2]{\@startsection {#1}{#2}{\z@}% 26.298 + {\@subsectionaboveskip}{\@sectionbelowskip}{\@sectionfont}} 26.299 +\renewcommand\subsection{\@gensubsection{subsection}{2}} 26.300 +\renewcommand\subsubsection{\@gensubsection{subsubsection}{3}} 26.301 +%\renewcommand\paragraph{\@gensubsection{paragraph}{4}} 26.302 +%\renewcommand\subparagraph{\@gensubsection{subparagaph}{5}} 26.303 +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% 26.304 + {1.25ex \@plus 0.2ex \@minus 0.2ex}% 26.305 + {-1.0em}% 26.306 + {\normalfont\normalsize\bfseries}} 26.307 +\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% 26.308 + {1.25ex \@plus 0.2ex \@minus 0.2ex}% 26.309 + {-1.0em}% 26.310 + {\normalfont\normalsize\bfseries}} 26.311 + 26.312 +% List items need to be tightened up. 26.313 +% There must be a better way than copying 26.314 +% the definitions to modify the list environment... 26.315 +\def\@itemspacings{\listparindent=\parindent 26.316 + \parsep=0pt\topsep=0.3\baselineskip\partopsep=0pt\itemsep=0pt} 26.317 +% now make envs use itemspacings 26.318 +\def\itemize{% 26.319 + \ifnum \@itemdepth >\thr@@\@toodeep\else 26.320 + \advance\@itemdepth\@ne 26.321 + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% 26.322 + \expandafter 26.323 + \list 26.324 + \csname\@itemitem\endcsname 26.325 + {\@itemspacings\def\makelabel##1{\hss\llap{##1}}}% 26.326 + \fi} 26.327 +\def\enumerate{% 26.328 + \ifnum \@enumdepth >\thr@@\@toodeep\else 26.329 + \advance\@enumdepth\@ne 26.330 + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% 26.331 + \expandafter 26.332 + \list 26.333 + \csname label\@enumctr\endcsname 26.334 + {\@itemspacings\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}% 26.335 + \fi} 26.336 +\def\description{% 26.337 + \list{}{\labelwidth\z@ \itemindent-\leftmargin 26.338 + \@itemspacings\let\makelabel\descriptionlabel}} 26.339 + 26.340 +% Bibliography items need to be tightened up. 26.341 +% Again, there must be a better way than copying 26.342 +% the definitions to modify the list environment... 26.343 +\def\thebibliography#1% 26.344 + {\section*{\refname}% 26.345 + \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}% 26.346 + \list{\@biblabel{\@arabic\c@enumiv}}% 26.347 + {\settowidth\labelwidth{\@biblabel{#1}}% 26.348 + \leftmargin\labelwidth 26.349 + \advance\leftmargin\labelsep 26.350 + \@openbib@code 26.351 + \usecounter{enumiv}% 26.352 + \let\p@enumiv\@empty 26.353 + \renewcommand\theenumiv{\@arabic\c@enumiv}% 26.354 + \parsep=0pt}% pack entries 26.355 + \sloppy 26.356 + \hbadness=8000% mostly don't whine about bibliography fmt 26.357 + \clubpenalty=4000% 26.358 + \@clubpenalty=\clubpenalty 26.359 + \widowpenalty=4000% 26.360 + \sfcode`\.\@m} 26.361 + 26.362 +% Floating bodies need to be tightened up. 26.363 +\setlength\textfloatsep{14pt plus 2pt} 26.364 +\setlength\dbltextfloatsep{\textfloatsep} 26.365 +\setlength\intextsep{0.8\textfloatsep} 26.366 +\setlength\abovecaptionskip{8pt minus 2pt}
27.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 27.2 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/usetex-v1.cls Sat Jan 21 20:51:58 2012 -0800 27.3 @@ -0,0 +1,357 @@ 27.4 +\NeedsTeXFormat{LaTeX2e} 27.5 +\ProvidesClass{usetex-v1}[2002/10/31 v1.2 usetex Usenix article class] 27.6 + 27.7 +% usetex-v1.cls - to be used with LaTeX2e for Usenix articles 27.8 +% 27.9 +% To use this style file, do this: 27.10 +% 27.11 +% \documentclass{usetex-v1} 27.12 +% 27.13 +% The following definitions are modifications of standard article.cls 27.14 +% definitions, arranged to do a better job of matching the Usenix 27.15 +% guidelines. and make for convenient Usenix paper writing 27.16 +% 27.17 +% Choose the appropriate option: 27.18 +% 27.19 +% 1. workingdraft: 27.20 +% 27.21 +% For initial submission and shepherding. Features prominent 27.22 +% date, notice of draft status, page numbers, and annotation 27.23 +% facilities. 27.24 +% 27.25 +% 2. proof: 27.26 +% 27.27 +% A galley proof identical to the final copy except for page 27.28 +% numbering and proof date on the bottom. Annotations are 27.29 +% removed. 27.30 +% 27.31 +% 3. webversion: 27.32 +% 27.33 +% A web-publishable version, uses \docstatus{} to indicate 27.34 +% publication information (where and when paper was published), 27.35 +% and page numbers. 27.36 +% 27.37 +% 4. finalversion: 27.38 +% 27.39 +% The final camera-ready-copy (CRC) version of the paper. 27.40 +% Published in conference proceedings. This doesn't include 27.41 +% page numbers, annotations, or draft status (Usenix adds 27.42 +% headers, footers, and page numbers onto the CRC). 27.43 +% 27.44 +% If several are used, the last one in this list wins 27.45 +% 27.46 + 27.47 +% 27.48 +% In addition, the option "endnotes" permits the use of the 27.49 +% otherwise-disabled, Usenix-deprecated footnote{} command in 27.50 +% documents. In this case, be sure to include a 27.51 +% \makeendnotes command at the end of your document or 27.52 +% the endnotes will not actually appear. 27.53 +% 27.54 + 27.55 +\newif\if@draftcopy \newif\ifworkingdraft 27.56 +\DeclareOption{workingdraft}{\workingdrafttrue\@draftcopytrue} 27.57 +\newif\ifproof \DeclareOption{proof}{\prooftrue\@draftcopytrue} 27.58 +\newif\ifwebversion 27.59 +\DeclareOption{webversion}{\prooftrue\webversiontrue\@draftcopytrue} 27.60 +\DeclareOption{finalversion}{} 27.61 +\newif\ifhasendnotes 27.62 +\DeclareOption{endnotes}{\hasendnotestrue} 27.63 + 27.64 +% pass all other options to the article class 27.65 +\DeclareOption*{% 27.66 + \PassOptionsToClass{\CurrentOption}{article}% 27.67 +} 27.68 + 27.69 +% actually process the options 27.70 +\ProcessOptions 27.71 + 27.72 +% usetex is based on article 27.73 +\LoadClass[twocolumn]{article} 27.74 + 27.75 +% Footnotes are not currently allowed, but 27.76 +% endnotes (while a bad idea) are. 27.77 +\ifhasendnotes 27.78 + \RequirePackage{endnotes} 27.79 +\fi 27.80 + 27.81 +% save any provided document status information 27.82 +\def\@docstatus{} 27.83 +\def\docstatus#1{\gdef\@docstatus{#1}} 27.84 + 27.85 +\ifworkingdraft 27.86 + 27.87 + % formatting helper for draft notes 27.88 + \newcommand{\@noteleader[1]}{% 27.89 + {\marginpar{\framebox{\scriptsize\textbf{#1}}}}% 27.90 + \bfseries\itshape 27.91 + } 27.92 + 27.93 + % put a small anonymous editing note in the draft copy 27.94 + \newcommand{\edannote}[1]{{\@noteleader[note] (#1)}} 27.95 + 27.96 + % put a small attributed editing note in the draft copy 27.97 + \newcommand{\edatnote}[2]{{\@noteleader[#1] #2}} 27.98 + 27.99 + % put an attributed editing note paragraph in the draft copy 27.100 + \newenvironment{ednote}[1] 27.101 + {\newcommand{\who}{#1}\@noteleader[\who]} 27.102 + 27.103 + % mark a spot where work has been left off for later 27.104 + \newcommand{\HERE}{% 27.105 + {\mbox{}\marginpar{\framebox{\textbf{here}}}}{\bf\ldots}} 27.106 + 27.107 +\else 27.108 + 27.109 + % dummy versions of editing commands to produce warnings 27.110 + 27.111 + \newcommand{\edannote}[1]{\@latex@warning 27.112 + {Leftover edannote command in final version ignored}} 27.113 + 27.114 + \newcommand{\edatnote}[1]{\@latex@warning 27.115 + {Leftover edatnote command in final version ignored}} 27.116 + 27.117 + \newsavebox{\@discard} 27.118 + \newenvironment{ednote}[1]{\@latex@warning 27.119 + {Leftover ednote environment in final version ignored}% 27.120 + \begin{lrbox}{\@discard}}{\end{lrbox}} 27.121 + 27.122 + \newcommand{\HERE}{\@latex@warning 27.123 + {Leftover HERE command in final version ignored}} 27.124 + 27.125 +\fi 27.126 + 27.127 +% set up the footers appropriately 27.128 +\def\@setfoot{% 27.129 + \ifwebversion 27.130 + % webversions get whatever status the author says 27.131 + \gdef\@evenfoot{\@docstatus \hfil \thepage}% 27.132 + \else 27.133 + % all other drafts get the standard draft footer 27.134 + \gdef\@evenfoot{\textbf{Draft:} \@draftdate\hfil \textbf{Page:} \thepage}% 27.135 + \fi 27.136 + \gdef\@oddfoot{\@evenfoot}% 27.137 +} 27.138 + 27.139 +% 27.140 +% Usenix wants no page numbers for submitted papers, so that 27.141 +% they can number them themselves. Drafts should have 27.142 +% numbered pages, so they can be edited. 27.143 +% 27.144 +\if@draftcopy 27.145 + % Compute a date and time for the draft for use 27.146 + % either in \@setfoot (proof) or in \maketitle (workingdraft) 27.147 + % 27.148 + % Time code adapted from custom-bib/makebst.tex 27.149 + % Copyright 1993-1999 Patrick W Daly 27.150 + % Max-Planck-Institut f\"ur Aeronomie 27.151 + % E-mail: daly@linmp.mpg.de 27.152 + \newcount\hour 27.153 + \hour=\time 27.154 + \divide\hour by 60 27.155 + \newcount\minute 27.156 + \minute=\hour 27.157 + \multiply\minute by 60 27.158 + \advance\minute by -\time 27.159 + \multiply\minute by -1 27.160 + \newcommand{\@draftdate} 27.161 + {{\the\year/\/\two@digits{\the\month}/\/\two@digits{\the\day}% 27.162 + ~\two@digits{\the\hour}:\two@digits{\the\minute}}} 27.163 + \pagestyle{plain} 27.164 + \@setfoot 27.165 +\else 27.166 + \pagestyle{empty} 27.167 +\fi 27.168 + 27.169 +% Times-Roman font is nice if you can get it (requires NFSS, 27.170 +% which is in latex2e). 27.171 +\usepackage{times} 27.172 + 27.173 +% endnote support, as described at 27.174 +% http://www.lyx.org/help/footnotes.php 27.175 +\ifhasendnotes 27.176 + \typeout 27.177 + {Warning: endnotes support is deprecated (see documentation for details)} 27.178 + \let\footnote=\endnote 27.179 + \def\enoteformat{\rightskip\z@ \leftskip\z@ 27.180 + \parindent=0pt\parskip=\baselineskip 27.181 + \@theenmark. } 27.182 + \newcommand{\makeendnotes}{ 27.183 + \begingroup 27.184 + \def\enotesize{\normalsize} 27.185 + \theendnotes 27.186 + \endgroup 27.187 + } 27.188 +\else 27.189 + \long\gdef\footnote{\@latex@error 27.190 + {Deprecated footnote command (see documentation for details)}} 27.191 + \long\gdef\endnote{\@latex@error 27.192 + {Deprecated endnote command (see documentation for details)}} 27.193 +\fi 27.194 + 27.195 +% 27.196 +% Usenix margins 27.197 +% Gives active areas of 6.45" x 9.0" 27.198 +% 27.199 +\setlength{\textheight}{9.0in} 27.200 +\setlength{\columnsep}{0.25in} 27.201 +\setlength{\textwidth}{6.45in} 27.202 +%\setlength{\footskip}{0.0in} 27.203 +%\setlength{\footheight}{0.0in} 27.204 +\setlength{\topmargin}{0.0in} 27.205 +\setlength{\headheight}{0.0in} 27.206 +\setlength{\headsep}{0.0in} 27.207 +\setlength{\evensidemargin}{0.0in} 27.208 +\setlength{\oddsidemargin}{0.0in} 27.209 +\setlength{\marginparsep}{1.5em} 27.210 +\setlength{\marginparwidth}{0.35in} 27.211 + 27.212 +% The standard maketitle insists on 27.213 +% messing with the style of the first page. 27.214 +% Thus, we will wrap maketitle with code to put 27.215 +% things right again. 27.216 +\let \save@maketitle=\maketitle 27.217 +\def\maketitle{ 27.218 + \save@maketitle 27.219 + \if@draftcopy 27.220 + \@specialpagefalse 27.221 + \else 27.222 + \thispagestyle{empty} 27.223 + \fi 27.224 +} 27.225 + 27.226 +% 27.227 +% Usenix titles are in 14-point bold type, with no date, and with no 27.228 +% change in the empty page headers. The author section is 27.229 +% 12 point roman and italic: see below. 27.230 +% 27.231 +\def\@maketitle{% 27.232 + \newpage 27.233 + \null 27.234 + \vskip 3ex% 27.235 + \begin{center}% 27.236 + \let \footnote \thanks 27.237 + {\Large \bf \@title \par}% % use 14 pt bold 27.238 + \vskip 2ex% 27.239 + {\large 27.240 + \lineskip .5ex% 27.241 + \begin{tabular}[t]{c}% 27.242 + \@author 27.243 + \end{tabular}\par}% 27.244 + \ifworkingdraft 27.245 + \vskip 3ex \textbf{Draft of \@draftdate} \vskip 3ex 27.246 + \fi 27.247 + \ifwebversion 27.248 + \vskip 3ex \textbf{\@docstatus} \vskip 3ex 27.249 + \fi 27.250 + \end{center}% 27.251 + \par 27.252 + \vskip 2ex} 27.253 + 27.254 +% 27.255 +% The author section 27.256 +% should have names in Roman, address in 27.257 +% italic, e-mail/http in typewriter. 27.258 +% This is enforced by use of these macros 27.259 +% 27.260 +\def\authname#1{{#1}\\} 27.261 +\def\authaddr#1{\itshape{#1}\\} 27.262 +\def\authurl#1{{\normalsize #1}\\} 27.263 + 27.264 +% 27.265 +% The abstract is preceded by a 12-pt bold centered heading 27.266 +% 27.267 +\def\abstract{\begin{center}% 27.268 + {\large\bf \abstractname\vspace{-.5ex}\vspace{\z@}}% 27.269 + \end{center}} 27.270 +\def\endabstract{} 27.271 + 27.272 +% 27.273 +% Main section titles are 12-pt bold. Lower divisions can 27.274 +% be same size or smaller: we choose same. 27.275 +% Main section leading is tight. Subsection leading is even 27.276 +% slightly tighter. All lower divisions are formatted like subsections. 27.277 +% 27.278 +\newcommand\@sectionfont{\reset@font\large\bf} 27.279 +\newlength\@sectionaboveskip 27.280 +\setlength\@sectionaboveskip{-0.7\baselineskip 27.281 + plus -0.1\baselineskip 27.282 + minus -0.1\baselineskip} 27.283 +\newlength\@sectionbelowskip 27.284 +\setlength\@sectionbelowskip{0.3\baselineskip 27.285 + plus 0.1\baselineskip} 27.286 +\newlength\@subsectionaboveskip 27.287 +\setlength\@subsectionaboveskip{-0.5\baselineskip 27.288 + plus -0.1\baselineskip} 27.289 +\renewcommand\section{\@startsection {section}{1}{\z@}% 27.290 + {\@sectionaboveskip}{\@sectionbelowskip}{\@sectionfont}} 27.291 +\newcommand\@gensubsection[2]{\@startsection {#1}{#2}{\z@}% 27.292 + {\@subsectionaboveskip}{\@sectionbelowskip}{\@sectionfont}} 27.293 +\renewcommand\subsection{\@gensubsection{subsection}{2}} 27.294 +\renewcommand\subsubsection{\@gensubsection{subsubsection}{3}} 27.295 +%\renewcommand\paragraph{\@gensubsection{paragraph}{4}} 27.296 +%\renewcommand\subparagraph{\@gensubsection{subparagaph}{5}} 27.297 +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% 27.298 + {1.25ex \@plus 0.2ex \@minus 0.2ex}% 27.299 + {-1.0em}% 27.300 + {\normalfont\normalsize\bfseries}} 27.301 +\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% 27.302 + {1.25ex \@plus 0.2ex \@minus 0.2ex}% 27.303 + {-1.0em}% 27.304 + {\normalfont\normalsize\bfseries}} 27.305 + 27.306 +% List items need to be tightened up. 27.307 +% There must be a better way than copying 27.308 +% the definitions to modify the list environment... 27.309 +\def\@itemspacings{\listparindent=\parindent 27.310 + \parsep=0pt\topsep=0.3\baselineskip\partopsep=0pt\itemsep=0pt} 27.311 +% now make envs use itemspacings 27.312 +\def\itemize{% 27.313 + \ifnum \@itemdepth >\thr@@\@toodeep\else 27.314 + \advance\@itemdepth\@ne 27.315 + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% 27.316 + \expandafter 27.317 + \list 27.318 + \csname\@itemitem\endcsname 27.319 + {\@itemspacings\def\makelabel##1{\hss\llap{##1}}}% 27.320 + \fi} 27.321 +\def\enumerate{% 27.322 + \ifnum \@enumdepth >\thr@@\@toodeep\else 27.323 + \advance\@enumdepth\@ne 27.324 + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% 27.325 + \expandafter 27.326 + \list 27.327 + \csname label\@enumctr\endcsname 27.328 + {\@itemspacings\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}% 27.329 + \fi} 27.330 +\def\description{% 27.331 + \list{}{\labelwidth\z@ \itemindent-\leftmargin 27.332 + \@itemspacings\let\makelabel\descriptionlabel}} 27.333 + 27.334 +% Bibliography items need to be tightened up. 27.335 +% Again, there must be a better way than copying 27.336 +% the definitions to modify the list environment... 27.337 +\def\thebibliography#1% 27.338 + {\section*{\refname}% 27.339 + \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}% 27.340 + \list{\@biblabel{\@arabic\c@enumiv}}% 27.341 + {\settowidth\labelwidth{\@biblabel{#1}}% 27.342 + \leftmargin\labelwidth 27.343 + \advance\leftmargin\labelsep 27.344 + \@openbib@code 27.345 + \usecounter{enumiv}% 27.346 + \let\p@enumiv\@empty 27.347 + \renewcommand\theenumiv{\@arabic\c@enumiv}% 27.348 + \parsep=0pt}% pack entries 27.349 + \sloppy 27.350 + \hbadness=8000% mostly don't whine about bibliography fmt 27.351 + \clubpenalty=4000% 27.352 + \@clubpenalty=\clubpenalty 27.353 + \widowpenalty=4000% 27.354 + \sfcode`\.\@m} 27.355 + 27.356 +% Floating bodies need to be tightened up. 27.357 +\setlength\textfloatsep{14pt plus 2pt} 27.358 +\setlength\dbltextfloatsep{\textfloatsep} 27.359 +\setlength\intextsep{0.8\textfloatsep} 27.360 +\setlength\abovecaptionskip{8pt minus 2pt}
28.1 Binary file 1__Presentations/11__Class_on_Parall_langs/paper_ompss.pdf has changed
29.1 Binary file 1__Presentations/12__LPGPU_HiPEAC_Poster/LPGPU_poster_slides_from_TUB.odp has changed