changeset 4:01aefc2be990

HotPar 2012 with figs -- for Merten to fix up visuals of figs
author Me@portablequad
date Sat, 21 Jan 2012 20:51:58 -0800
parents dae06344c175
children 530af15e03d1
files 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Scheduling_states_2.png 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Scheduling_states_2.png.bb 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Time_in_VMS_1.png 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Time_in_VMS_1.png.bb 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__internal_workings.png 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__internal_workings.png.bb 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__plugins.png 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__plugins.png.bb 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/cray1_pthread_8_32_128_512thds__o30000__perfCtrs.eps 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/cray1_vthread_8_32_128_512thds__o30000__perfCtrs.eps 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/vms_pthread_8_32_128thds__o30000__perfCtrs.eps 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/vms_vthread_8_32_128_512thds__o30000__perfCtrs.eps 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 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 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 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 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.aux 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.bbl 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.blg 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.ddf 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.tex 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.tex.Backup-20111227-163852 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.pdf 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.tex 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/url.sty 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/usetex-v1-anon.cls 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/usetex-v1.cls 1__Presentations/11__Class_on_Parall_langs/paper_ompss.pdf 1__Presentations/12__LPGPU_HiPEAC_Poster/LPGPU_poster_slides_from_TUB.odp
diffstat 29 files changed, 8919 insertions(+), 1582 deletions(-) [+]
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