# HG changeset patch # User Me@portablequad # Date 1327207918 28800 # Node ID 01aefc2be9907c3fc4e2a5e0e4cfe9ddbdd89116 # Parent dae06344c175b77f4eed52319d7bbc538568d97b HotPar 2012 with figs -- for Merten to fix up visuals of figs diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Scheduling_states_2.png Binary file 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Scheduling_states_2.png has changed diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Scheduling_states_2.png.bb --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Scheduling_states_2.png.bb Tue Jan 03 17:02:34 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -%%BoundingBox: 0 0 785.04 307.92 diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Time_in_VMS_1.png Binary file 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Time_in_VMS_1.png has changed diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Time_in_VMS_1.png.bb --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Time_in_VMS_1.png.bb Tue Jan 03 17:02:34 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -%%BoundingBox: 0 0 660.96 253.92 diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__internal_workings.png Binary file 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__internal_workings.png has changed diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__internal_workings.png.bb --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__internal_workings.png.bb Tue Jan 03 17:02:34 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -%%BoundingBox: 0 0 1465.44 623.76 diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__plugins.png Binary file 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__plugins.png has changed diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__plugins.png.bb --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/VMS-core__plugins.png.bb Tue Jan 03 17:02:34 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -%%BoundingBox: 0 0 465.36 265.2 diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/cray1_pthread_8_32_128_512thds__o30000__perfCtrs.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ 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 @@ -0,0 +1,869 @@ +%!PS-Adobe-2.0 +%%Title: 8_32_128_512thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Fri Jan 20 12:05:32 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 554 770 +%%Orientation: Landscape +%%Pages: (atend) +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape true def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (8_32_128_512thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Fri Jan 20 12:05:32 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.100 0.100 scale +90 rotate +0 -5040 translate +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +1.000 UL +LTb +518 448 M +63 0 V +6366 0 R +-63 0 V +stroke +434 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +518 1044 M +63 0 V +6366 0 R +-63 0 V +stroke +434 1044 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +518 1640 M +63 0 V +6366 0 R +-63 0 V +stroke +434 1640 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +518 2236 M +63 0 V +6366 0 R +-63 0 V +stroke +434 2236 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +518 2831 M +63 0 V +6366 0 R +-63 0 V +stroke +434 2831 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +518 3427 M +63 0 V +6366 0 R +-63 0 V +stroke +434 3427 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +518 4023 M +63 0 V +6366 0 R +-63 0 V +stroke +434 4023 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +518 4619 M +63 0 V +6366 0 R +-63 0 V +stroke +434 4619 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +518 448 M +0 63 V +0 4108 R +0 -63 V +stroke +518 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1322 448 M +0 63 V +0 4108 R +0 -63 V +stroke +1322 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +2125 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2125 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +2929 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2929 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +3733 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3733 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +4536 448 M +0 63 V +0 4108 R +0 -63 V +stroke +4536 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +5340 448 M +0 63 V +0 4108 R +0 -63 V +stroke +5340 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +6143 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6143 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +6947 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6947 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +518 4619 N +518 448 L +6429 0 V +0 4171 V +-6429 0 V +Z stroke +LCb setrgbcolor +112 2533 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] +] -46.7 MCshow +grestore +LTb +LCb setrgbcolor +3732 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +3732 4829 M +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads on 1 socket by 2 core Conroe 3GHz)] +] -46.7 MCshow +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +5372 3996 N +0 560 V +1491 0 V +0 -560 V +-1491 0 V +Z stroke +5372 4556 M +1491 0 V +% Begin plot #1 +stroke +LT1 +LCa setrgbcolor +518 1044 M +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +% End plot #1 +% Begin plot #2 +stroke +2.000 UL +LT1 +LCb setrgbcolor +6296 4486 M +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] +] -46.7 MRshow +LT1 +6380 4486 M +399 0 V +931 4619 M +1115 3257 L +1578 2025 L +900 -734 V +4278 883 L +6947 724 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +6296 4346 M +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] +] -46.7 MRshow +LT2 +6380 4346 M +399 0 V +1553 4619 M +27 -185 V +2487 2594 L +4283 1564 L +6947 1159 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +6296 4206 M +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] +] -46.7 MRshow +LT3 +6380 4206 M +399 0 V +4123 4619 M +175 -334 V +6947 2919 L +% End plot #4 +% Begin plot #5 +stroke +LT4 +LCb setrgbcolor +6296 4066 M +[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] +] -46.7 MRshow +LT4 +6380 4066 M +399 0 V +% End plot #5 +stroke +1.000 UL +LTb +518 4619 N +518 448 L +6429 0 V +0 4171 V +-6429 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/cray1_vthread_8_32_128_512thds__o30000__perfCtrs.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ 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 @@ -0,0 +1,891 @@ +%!PS-Adobe-2.0 +%%Title: 8_32_128_512thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Fri Jan 20 12:07:01 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 554 770 +%%Orientation: Landscape +%%Pages: (atend) +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape true def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (8_32_128_512thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Fri Jan 20 12:07:01 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.100 0.100 scale +90 rotate +0 -5040 translate +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +1.000 UL +LTb +518 448 M +63 0 V +6366 0 R +-63 0 V +stroke +434 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +518 1044 M +63 0 V +6366 0 R +-63 0 V +stroke +434 1044 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +518 1640 M +63 0 V +6366 0 R +-63 0 V +stroke +434 1640 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +518 2236 M +63 0 V +6366 0 R +-63 0 V +stroke +434 2236 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +518 2831 M +63 0 V +6366 0 R +-63 0 V +stroke +434 2831 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +518 3427 M +63 0 V +6366 0 R +-63 0 V +stroke +434 3427 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +518 4023 M +63 0 V +6366 0 R +-63 0 V +stroke +434 4023 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +518 4619 M +63 0 V +6366 0 R +-63 0 V +stroke +434 4619 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +518 448 M +0 63 V +0 4108 R +0 -63 V +stroke +518 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1322 448 M +0 63 V +0 4108 R +0 -63 V +stroke +1322 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +2125 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2125 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +2929 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2929 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +3733 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3733 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +4536 448 M +0 63 V +0 4108 R +0 -63 V +stroke +4536 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +5340 448 M +0 63 V +0 4108 R +0 -63 V +stroke +5340 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +6143 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6143 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +6947 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6947 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +518 4619 N +518 448 L +6429 0 V +0 4171 V +-6429 0 V +Z stroke +LCb setrgbcolor +112 2533 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] +] -46.7 MCshow +grestore +LTb +LCb setrgbcolor +3732 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +3732 4829 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread on 1 socket by 2 core Conroe 3GHz)] +] -46.7 MCshow +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +5372 3996 N +0 560 V +1491 0 V +0 -560 V +-1491 0 V +Z stroke +5372 4556 M +1491 0 V +% Begin plot #1 +stroke +LT1 +LCa setrgbcolor +518 1044 M +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +% End plot #1 +% Begin plot #2 +stroke +2.000 UL +LT1 +LCb setrgbcolor +6296 4486 M +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] +] -46.7 MRshow +LT1 +6380 4486 M +399 0 V +685 2359 M +34 -248 V +56 -330 V +887 1326 L +225 -323 V +1576 762 L +2476 617 L +4277 535 L +6947 504 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +6296 4346 M +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] +] -46.7 MRshow +LT2 +6380 4346 M +399 0 V +686 2388 M +32 -299 V +57 -392 V +887 1332 L +1112 987 L +1577 748 L +2476 613 L +4278 532 L +6947 502 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +6296 4206 M +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] +] -46.7 MRshow +LT3 +6380 4206 M +399 0 V +686 2537 M +34 -371 V +55 -359 V +888 1377 L +226 -343 V +1577 774 L +2477 626 L +4277 540 L +6947 507 L +% End plot #4 +% Begin plot #5 +stroke +LT4 +LCb setrgbcolor +6296 4066 M +[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] +] -46.7 MRshow +LT4 +6380 4066 M +399 0 V +686 2624 M +34 -351 V +55 -399 V +889 1437 L +224 -372 V +1577 790 L +2477 635 L +4278 545 L +6947 510 L +% End plot #5 +stroke +1.000 UL +LTb +518 4619 N +518 448 L +6429 0 V +0 4171 V +-6429 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/vms_pthread_8_32_128thds__o30000__perfCtrs.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ 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 @@ -0,0 +1,858 @@ +%!PS-Adobe-2.0 +%%Title: 8_32_128thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Fri Jan 20 13:41:22 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 554 770 +%%Orientation: Landscape +%%Pages: (atend) +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape true def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (8_32_128thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Fri Jan 20 13:41:22 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.100 0.100 scale +90 rotate +0 -5040 translate +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +1.000 UL +LTb +518 448 M +63 0 V +6366 0 R +-63 0 V +stroke +434 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +518 1044 M +63 0 V +6366 0 R +-63 0 V +stroke +434 1044 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +518 1640 M +63 0 V +6366 0 R +-63 0 V +stroke +434 1640 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +518 2236 M +63 0 V +6366 0 R +-63 0 V +stroke +434 2236 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +518 2831 M +63 0 V +6366 0 R +-63 0 V +stroke +434 2831 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +518 3427 M +63 0 V +6366 0 R +-63 0 V +stroke +434 3427 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +518 4023 M +63 0 V +6366 0 R +-63 0 V +stroke +434 4023 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +518 4619 M +63 0 V +6366 0 R +-63 0 V +stroke +434 4619 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +518 448 M +0 63 V +0 4108 R +0 -63 V +stroke +518 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1322 448 M +0 63 V +0 4108 R +0 -63 V +stroke +1322 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +2125 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2125 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +2929 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2929 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +3733 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3733 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +4536 448 M +0 63 V +0 4108 R +0 -63 V +stroke +4536 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +5340 448 M +0 63 V +0 4108 R +0 -63 V +stroke +5340 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +6143 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6143 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +6947 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6947 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +518 4619 N +518 448 L +6429 0 V +0 4171 V +-6429 0 V +Z stroke +LCb setrgbcolor +112 2533 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] +] -46.7 MCshow +grestore +LTb +LCb setrgbcolor +3732 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +3732 4829 M +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads on 1 socket by 4 core Sandy Bridge 3.3GHz)] +] -46.7 MCshow +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +5372 4136 N +0 420 V +1491 0 V +0 -420 V +-1491 0 V +Z stroke +5372 4556 M +1491 0 V +% Begin plot #1 +stroke +LT1 +LCa setrgbcolor +518 1044 M +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +% End plot #1 +% Begin plot #2 +stroke +2.000 UL +LT1 +LCb setrgbcolor +6296 4486 M +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] +] -46.7 MRshow +LT1 +6380 4486 M +399 0 V +875 4619 M +981 3434 L +1363 2118 L +772 -806 V +3679 885 L +6762 665 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +6296 4346 M +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] +] -46.7 MRshow +LT2 +6380 4346 M +399 0 V +1295 4619 M +68 -586 V +2138 2337 L +3676 1458 L +6769 967 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +6296 4206 M +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] +] -46.7 MRshow +LT3 +6380 4206 M +399 0 V +3329 4619 M +357 -751 V +6770 2178 L +% End plot #4 +stroke +1.000 UL +LTb +518 4619 N +518 448 L +6429 0 V +0 4171 V +-6429 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size_v3/vms_vthread_8_32_128_512thds__o30000__perfCtrs.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ 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 @@ -0,0 +1,891 @@ +%!PS-Adobe-2.0 +%%Title: 8_32_128_512thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Fri Jan 20 13:44:01 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 554 770 +%%Orientation: Landscape +%%Pages: (atend) +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape true def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (8_32_128_512thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Fri Jan 20 13:44:01 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.100 0.100 scale +90 rotate +0 -5040 translate +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +1.000 UL +LTb +518 448 M +63 0 V +6366 0 R +-63 0 V +stroke +434 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +518 1044 M +63 0 V +6366 0 R +-63 0 V +stroke +434 1044 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +518 1640 M +63 0 V +6366 0 R +-63 0 V +stroke +434 1640 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +518 2236 M +63 0 V +6366 0 R +-63 0 V +stroke +434 2236 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +518 2831 M +63 0 V +6366 0 R +-63 0 V +stroke +434 2831 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +518 3427 M +63 0 V +6366 0 R +-63 0 V +stroke +434 3427 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +518 4023 M +63 0 V +6366 0 R +-63 0 V +stroke +434 4023 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +518 4619 M +63 0 V +6366 0 R +-63 0 V +stroke +434 4619 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +518 448 M +0 63 V +0 4108 R +0 -63 V +stroke +518 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1322 448 M +0 63 V +0 4108 R +0 -63 V +stroke +1322 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +2125 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2125 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +2929 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2929 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +3733 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3733 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +4536 448 M +0 63 V +0 4108 R +0 -63 V +stroke +4536 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +5340 448 M +0 63 V +0 4108 R +0 -63 V +stroke +5340 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +6143 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6143 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +6947 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6947 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +518 4619 N +518 448 L +6429 0 V +0 4171 V +-6429 0 V +Z stroke +LCb setrgbcolor +112 2533 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] +] -46.7 MCshow +grestore +LTb +LCb setrgbcolor +3732 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +3732 4829 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread on 1 socket by 4 core Sandy Bridge 3.3GHz)] +] -46.7 MCshow +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +5372 3996 N +0 560 V +1491 0 V +0 -560 V +-1491 0 V +Z stroke +5372 4556 M +1491 0 V +% Begin plot #1 +stroke +LT1 +LCa setrgbcolor +518 1044 M +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +% End plot #1 +% Begin plot #2 +stroke +2.000 UL +LT1 +LCb setrgbcolor +6296 4486 M +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] +] -46.7 MRshow +LT1 +6380 4486 M +399 0 V +615 4310 M +29 -744 V +45 -967 V +789 1813 L +981 1267 L +1367 894 L +2136 647 L +3680 554 L +6765 499 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +6296 4346 M +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] +] -46.7 MRshow +LT2 +6380 4346 M +399 0 V +614 3429 M +31 -756 V +44 -376 V +99 -805 V +982 1060 L +1367 799 L +2138 624 L +3681 527 L +6765 490 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +6296 4206 M +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] +] -46.7 MRshow +LT3 +6380 4206 M +399 0 V +615 3542 M +29 -659 V +48 -723 V +96 -550 V +979 1098 L +1367 808 L +2137 629 L +3681 542 L +6767 489 L +% End plot #4 +% Begin plot #5 +stroke +LT4 +LCb setrgbcolor +6296 4066 M +[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] +] -46.7 MRshow +LT4 +6380 4066 M +399 0 V +615 3811 M +26 -771 V +48 -778 V +99 -663 V +979 1123 L +1364 813 L +2135 629 L +3681 538 L +6767 491 L +% End plot #5 +stroke +1.000 UL +LTb +518 4619 N +518 448 L +6429 0 V +0 4171 V +-6429 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dae06344c175 -r 01aefc2be990 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 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ 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 @@ -0,0 +1,1080 @@ +%!PS-Adobe-2.0 +%%Title: pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Sat Jan 21 18:10:26 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 554 770 +%%Orientation: Landscape +%%Pages: (atend) +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape true def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Sat Jan 21 18:10:26 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.100 0.100 scale +90 rotate +0 -5040 translate +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +1.000 UL +LTb +686 960 M +63 0 V +6198 0 R +-63 0 V +stroke +602 960 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] +] -46.7 MRshow +1.000 UL +LTb +686 1483 M +63 0 V +6198 0 R +-63 0 V +stroke +602 1483 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 2006 M +63 0 V +6198 0 R +-63 0 V +stroke +602 2006 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] +] -46.7 MRshow +1.000 UL +LTb +686 2528 M +63 0 V +6198 0 R +-63 0 V +stroke +602 2528 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 3051 M +63 0 V +6198 0 R +-63 0 V +stroke +602 3051 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] +] -46.7 MRshow +1.000 UL +LTb +686 3574 M +63 0 V +6198 0 R +-63 0 V +stroke +602 3574 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 300)] +] -46.7 MRshow +1.000 UL +LTb +686 4096 M +63 0 V +6198 0 R +-63 0 V +stroke +602 4096 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 350)] +] -46.7 MRshow +1.000 UL +LTb +686 4619 M +63 0 V +6198 0 R +-63 0 V +stroke +602 4619 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 400)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +0 4108 R +0 -63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1469 448 M +0 63 V +0 4108 R +0 -63 V +stroke +1469 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +2251 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2251 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +3034 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3034 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +3817 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3817 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +4599 448 M +0 63 V +0 4108 R +0 -63 V +stroke +4599 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +5382 448 M +0 63 V +0 4108 R +0 -63 V +stroke +5382 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +6164 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6164 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +6947 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6947 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 4619 N +686 448 L +6261 0 V +0 4171 V +-6261 0 V +Z stroke +LCb setrgbcolor +112 2533 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] +] -46.7 MCshow +grestore +LTb +LCb setrgbcolor +3816 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +3816 4829 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread and pthreads on 4 socket by 10 core Westmere EX 2.4GHz)] +] -46.7 MCshow +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +6044 4340 M +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] +] -46.7 MCshow +LTb +1.000 UL +LTb +5299 3710 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +5299 4270 M +1491 0 V +% Begin plot #1 +stroke +2.000 UL +LT0 +LCb setrgbcolor +6223 4200 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT0 +6307 4200 M +399 0 V +792 640 M +41 -66 V +71 -38 V +139 -41 V +286 -18 V +560 -14 V +1128 -7 V +2256 -3 V +1674 -1 V +% End plot #1 +% Begin plot #2 +stroke +LT2 +LCb setrgbcolor +6223 4060 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT2 +6307 4060 M +399 0 V +791 585 M +45 5 V +66 -89 V +141 -21 V +283 -7 V +563 -13 V +1127 -5 V +2254 -4 V +1677 -1 V +% End plot #2 +% Begin plot #3 +stroke +LT3 +LCb setrgbcolor +6223 3920 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT3 +6307 3920 M +399 0 V +790 592 M +43 -41 V +73 -10 V +141 -45 V +280 -20 V +563 -11 V +1128 -9 V +2253 -5 V +1676 -1 V +% End plot #3 +% Begin plot #4 +stroke +LT4 +LCb setrgbcolor +6223 3780 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT4 +6307 3780 M +399 0 V +791 600 M +43 -44 V +71 -31 V +143 -22 V +279 -30 V +561 -14 V +1130 -4 V +2253 -3 V +1676 -1 V +% End plot #4 +stroke +1.000 UL +LTb +686 4619 N +686 448 L +6261 0 V +0 4171 V +-6261 0 V +Z stroke +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +686 960 M +63 0 V +6198 0 R +-63 0 V +stroke +602 960 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] +] -46.7 MRshow +1.000 UL +LTb +686 1483 M +63 0 V +6198 0 R +-63 0 V +stroke +602 1483 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 2006 M +63 0 V +6198 0 R +-63 0 V +stroke +602 2006 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] +] -46.7 MRshow +1.000 UL +LTb +686 2528 M +63 0 V +6198 0 R +-63 0 V +stroke +602 2528 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 3051 M +63 0 V +6198 0 R +-63 0 V +stroke +602 3051 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] +] -46.7 MRshow +1.000 UL +LTb +686 3574 M +63 0 V +6198 0 R +-63 0 V +stroke +602 3574 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 300)] +] -46.7 MRshow +1.000 UL +LTb +686 4096 M +63 0 V +6198 0 R +-63 0 V +stroke +602 4096 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 350)] +] -46.7 MRshow +1.000 UL +LTb +686 4619 M +63 0 V +6198 0 R +-63 0 V +stroke +602 4619 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 400)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +0 4108 R +0 -63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1469 448 M +0 63 V +0 4108 R +0 -63 V +stroke +1469 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +2251 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2251 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +3034 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3034 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +3817 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3817 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +4599 448 M +0 63 V +0 4108 R +0 -63 V +stroke +4599 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +5382 448 M +0 63 V +0 4108 R +0 -63 V +stroke +5382 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +6164 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6164 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +6947 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6947 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 4619 N +686 448 L +6261 0 V +0 4171 V +-6261 0 V +Z stroke +LCb setrgbcolor +112 2533 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] +] -46.7 MCshow +grestore +LTb +LCb setrgbcolor +3816 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +3816 4829 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread and pthreads on 4 socket by 10 core Westmere EX 2.4GHz)] +] -46.7 MCshow +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +6044 3608 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] +] -46.7 MCshow +LTb +1.000 UL +LTb +5299 2978 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +5299 3538 M +1491 0 V +% Begin plot #1 +stroke +2.000 UL +LT5 +LC7 setrgbcolor +LCb setrgbcolor +6223 3468 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT5 +LC7 setrgbcolor +6307 3468 M +399 0 V +1930 4619 M +2375 3255 L +3855 2057 L +6947 1302 L +% End plot #1 +% Begin plot #2 +stroke +LT6 +LCb setrgbcolor +6223 3328 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT6 +6307 3328 M +399 0 V +1884 4619 M +2277 3359 L +4146 1826 L +6947 1115 L +% End plot #2 +% Begin plot #3 +stroke +LT7 +LCb setrgbcolor +6223 3188 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT7 +6307 3188 M +399 0 V +1469 4619 M +81 -643 V +2359 2465 L +3813 1527 L +6797 905 L +% End plot #3 +% Begin plot #4 +stroke +LT8 +LCb setrgbcolor +6223 3048 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT8 +6307 3048 M +399 0 V +2033 4619 M +2288 3323 L +3813 2431 L +6837 1268 L +% End plot #4 +stroke +1.000 UL +LTb +686 4619 N +686 448 L +6261 0 V +0 4171 V +-6261 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dae06344c175 -r 01aefc2be990 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 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ 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 @@ -0,0 +1,886 @@ +%!PS-Adobe-2.0 +%%Title: 80_160_320_640thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Fri Jan 20 14:54:02 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 554 770 +%%Orientation: Landscape +%%Pages: (atend) +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape true def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (80_160_320_640thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Fri Jan 20 14:54:02 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.100 0.100 scale +90 rotate +0 -5040 translate +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +1.000 UL +LTb +686 443 M +63 0 V +6198 0 R +-63 0 V +stroke +602 443 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MRshow +1.000 UL +LTb +686 965 M +63 0 V +6198 0 R +-63 0 V +stroke +602 965 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 1487 M +63 0 V +6198 0 R +-63 0 V +stroke +602 1487 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 2009 M +63 0 V +6198 0 R +-63 0 V +stroke +602 2009 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 300)] +] -46.7 MRshow +1.000 UL +LTb +686 2531 M +63 0 V +6198 0 R +-63 0 V +stroke +602 2531 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 400)] +] -46.7 MRshow +1.000 UL +LTb +686 3053 M +63 0 V +6198 0 R +-63 0 V +stroke +602 3053 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 500)] +] -46.7 MRshow +1.000 UL +LTb +686 3575 M +63 0 V +6198 0 R +-63 0 V +stroke +602 3575 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 600)] +] -46.7 MRshow +1.000 UL +LTb +686 4097 M +63 0 V +6198 0 R +-63 0 V +stroke +602 4097 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 700)] +] -46.7 MRshow +1.000 UL +LTb +686 4619 M +63 0 V +6198 0 R +-63 0 V +stroke +602 4619 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 800)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +0 4108 R +0 -63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1469 448 M +0 63 V +0 4108 R +0 -63 V +stroke +1469 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +2251 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2251 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +3034 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3034 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +3817 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3817 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +4599 448 M +0 63 V +0 4108 R +0 -63 V +stroke +4599 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +5382 448 M +0 63 V +0 4108 R +0 -63 V +stroke +5382 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +6164 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6164 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +6947 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6947 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 4619 N +686 448 L +6261 0 V +0 4171 V +-6261 0 V +Z stroke +LCb setrgbcolor +112 2533 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] +] -46.7 MCshow +grestore +LTb +LCb setrgbcolor +3816 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +3816 4829 M +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads on 2 socket by 20 core Westmere EX 2.4GHz)] +] -46.7 MCshow +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +5372 3996 N +0 560 V +1491 0 V +0 -560 V +-1491 0 V +Z stroke +5372 4556 M +1491 0 V +% Begin plot #1 +stroke +LT1 +LCa setrgbcolor +686 453 M +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +63 0 V +64 0 V +63 0 V +63 0 V +% End plot #1 +% Begin plot #2 +stroke +2.000 UL +LT1 +LCb setrgbcolor +6296 4486 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT1 +6380 4486 M +399 0 V +1403 4619 M +1598 3039 L +2375 1850 L +3855 1252 L +6947 875 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +6296 4346 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT2 +6380 4346 M +399 0 V +1258 4619 M +1552 3062 L +2277 1902 L +4146 1136 L +6947 781 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +6296 4206 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT3 +6380 4206 M +399 0 V +1084 4619 M +91 -917 V +1550 2210 L +809 -755 V +3813 987 L +6797 676 L +% End plot #4 +% Begin plot #5 +stroke +LT4 +LCb setrgbcolor +6296 4066 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT4 +6380 4066 M +399 0 V +1407 4619 M +159 -900 V +2288 1884 L +3813 1438 L +6837 858 L +% End plot #5 +stroke +1.000 UL +LTb +686 4619 N +686 448 L +6261 0 V +0 4171 V +-6261 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dae06344c175 -r 01aefc2be990 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 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ 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 @@ -0,0 +1,884 @@ +%!PS-Adobe-2.0 +%%Title: 80_160_320_640thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Fri Jan 20 12:20:14 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 554 770 +%%Orientation: Landscape +%%Pages: (atend) +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape true def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (80_160_320_640thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Fri Jan 20 12:20:14 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.100 0.100 scale +90 rotate +0 -5040 translate +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +1.000 UL +LTb +518 448 M +63 0 V +6366 0 R +-63 0 V +stroke +434 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +518 1044 M +63 0 V +6366 0 R +-63 0 V +stroke +434 1044 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +518 1640 M +63 0 V +6366 0 R +-63 0 V +stroke +434 1640 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +518 2236 M +63 0 V +6366 0 R +-63 0 V +stroke +434 2236 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +518 2831 M +63 0 V +6366 0 R +-63 0 V +stroke +434 2831 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +518 3427 M +63 0 V +6366 0 R +-63 0 V +stroke +434 3427 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +518 4023 M +63 0 V +6366 0 R +-63 0 V +stroke +434 4023 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +518 4619 M +63 0 V +6366 0 R +-63 0 V +stroke +434 4619 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +518 448 M +0 63 V +0 4108 R +0 -63 V +stroke +518 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1322 448 M +0 63 V +0 4108 R +0 -63 V +stroke +1322 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +2125 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2125 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +2929 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2929 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +3733 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3733 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +4536 448 M +0 63 V +0 4108 R +0 -63 V +stroke +4536 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +5340 448 M +0 63 V +0 4108 R +0 -63 V +stroke +5340 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +6143 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6143 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +6947 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6947 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +518 4619 N +518 448 L +6429 0 V +0 4171 V +-6429 0 V +Z stroke +LCb setrgbcolor +112 2533 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] +] -46.7 MCshow +grestore +LTb +LCb setrgbcolor +3732 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +3732 4829 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread on 2 socket by 20 core Westmere EX 2.4GHz)] +] -46.7 MCshow +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +5372 3996 N +0 560 V +1491 0 V +0 -560 V +-1491 0 V +Z stroke +5372 4556 M +1491 0 V +% Begin plot #1 +stroke +LT1 +LCa setrgbcolor +518 1044 M +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +% End plot #1 +% Begin plot #2 +stroke +2.000 UL +LT1 +LCb setrgbcolor +6296 4486 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT1 +6380 4486 M +399 0 V +794 4619 M +885 3143 L +1178 2107 L +575 -824 V +2911 893 L +5228 755 L +6947 687 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +6296 4346 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT2 +6380 4346 M +399 0 V +724 4619 M +740 3491 L +885 2254 L +290 -364 V +578 -735 V +2911 854 L +5225 614 L +6947 582 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +6296 4206 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT3 +6380 4206 M +399 0 V +808 4619 M +889 3194 L +1177 2053 L +577 -653 V +2913 912 L +5226 615 L +6947 587 L +% End plot #4 +% Begin plot #5 +stroke +LT4 +LCb setrgbcolor +6296 4066 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT4 +6380 4066 M +399 0 V +768 4619 M +890 3567 L +1176 1855 L +577 -758 V +2912 862 L +5226 649 L +6947 612 L +% End plot #5 +stroke +1.000 UL +LTb +518 4619 N +518 448 L +6429 0 V +0 4171 V +-6429 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dae06344c175 -r 01aefc2be990 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 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ 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 @@ -0,0 +1,872 @@ +%!PS-Adobe-2.0 +%%Title: 80_160_320_640thds__o30000__perfCtrs.meas.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Fri Jan 20 13:38:10 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 554 770 +%%Orientation: Landscape +%%Pages: (atend) +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape true def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (80_160_320_640thds__o30000__perfCtrs.meas.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Fri Jan 20 13:38:10 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.100 0.100 scale +90 rotate +0 -5040 translate +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +1.000 UL +LTb +518 448 M +63 0 V +6366 0 R +-63 0 V +stroke +434 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +518 1044 M +63 0 V +6366 0 R +-63 0 V +stroke +434 1044 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +518 1640 M +63 0 V +6366 0 R +-63 0 V +stroke +434 1640 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +518 2236 M +63 0 V +6366 0 R +-63 0 V +stroke +434 2236 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +518 2831 M +63 0 V +6366 0 R +-63 0 V +stroke +434 2831 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +518 3427 M +63 0 V +6366 0 R +-63 0 V +stroke +434 3427 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +518 4023 M +63 0 V +6366 0 R +-63 0 V +stroke +434 4023 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +518 4619 M +63 0 V +6366 0 R +-63 0 V +stroke +434 4619 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +518 448 M +0 63 V +0 4108 R +0 -63 V +stroke +518 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1322 448 M +0 63 V +0 4108 R +0 -63 V +stroke +1322 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +2125 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2125 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +2929 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2929 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +3733 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3733 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +4536 448 M +0 63 V +0 4108 R +0 -63 V +stroke +4536 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +5340 448 M +0 63 V +0 4108 R +0 -63 V +stroke +5340 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +6143 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6143 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +6947 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6947 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +518 4619 N +518 448 L +6429 0 V +0 4171 V +-6429 0 V +Z stroke +LCb setrgbcolor +112 2533 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 140.0 0.0 true true 0 (Ratio of Total Execution to Total Work)] +] -46.7 MCshow +grestore +LTb +LCb setrgbcolor +3732 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +3732 4829 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread on 4 socket by 20 core Westmere EX 2.4GHz)] +] -46.7 MCshow +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +5372 3996 N +0 560 V +1491 0 V +0 -560 V +-1491 0 V +Z stroke +5372 4556 M +1491 0 V +% Begin plot #1 +stroke +LT1 +LCa setrgbcolor +518 1044 M +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +64 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +65 0 V +% End plot #1 +% Begin plot #2 +stroke +2.000 UL +LT1 +LCb setrgbcolor +6296 4486 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT1 +6380 4486 M +399 0 V +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +6296 4346 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT2 +6380 4346 M +399 0 V +1650 4619 M +216 -617 V +2992 2086 L +5327 1379 L +6947 1188 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +6296 4206 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT3 +6380 4206 M +399 0 V +1278 4619 M +20 -267 V +1839 3295 L +3036 2054 L +5385 1253 L +6947 1117 L +% End plot #4 +% Begin plot #5 +stroke +LT4 +LCb setrgbcolor +6296 4066 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT4 +6380 4066 M +399 0 V +1271 4619 M +11 -184 V +572 -924 V +3013 1939 L +5345 1252 L +6947 1123 L +% End plot #5 +stroke +1.000 UL +LTb +518 4619 N +518 448 L +6429 0 V +0 4171 V +-6429 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.aux --- 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 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -\relax -\bibstyle{plain} -\citation{} -\citation{} -\citation{} -\citation{} -\citation{} -\citation{} -\@writefile{toc}{\contentsline {title}{A HW Abstraction Suitable for Use as the Base of a Portability Software Stack}{1}} -\@writefile{toc}{\authcount {3}} -\@writefile{toc}{\contentsline {author}{Sean Halle\unskip {} \and Merten Sach\unskip {} \and BJ\unskip {}}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {1}Planning}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {2}Motivation}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {3}old stuff}{2}} -\citation{Fri98,CILKHome} -\citation{SchedActivations} -\citation{BOMinManticore} -\citation{Fri98,CILKHome} -\citation{OpenMPHome} -\@writefile{toc}{\contentsline {section}{\numberline {4}Background and Related Work}{4}} -\citation{Gelernter85Linda,CnCInHotPar,CnCHome} -\citation{Kah74,hoare78,milner99,Hewitt10,Actors97} -\citation{Car10,OpenCLHome} -\@writefile{toc}{\contentsline {section}{\numberline {5}Abstract Definition of VMS}{5}} -\newlabel{secAbsModel}{{5}{5}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}The Elements of a VMS Computation System}{6}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Time in VMS}{6}} -\newlabel{secTime}{{5.2}{6}} -\@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}} -\newlabel{figTimeMapping}{{1}{7}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Scheduling State}{8}} -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Scheduling states of a slave VP in the VMS model.}}{8}} -\newlabel{figStates}{{2}{8}} -\@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}} -\newlabel{figMasterSplit}{{3}{8}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Plugins}{9}} -\@writefile{toc}{\contentsline {section}{\numberline {6}Internal Workings of Our Implementation}{9}} -\newlabel{secInternal}{{6}{9}} -\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Internal elements of our example VMS implementation }}{10}} -\newlabel{figInternals}{{4}{10}} -\citation{VMSHome} -\citation{VMSHome} -\@writefile{toc}{\contentsline {section}{\numberline {7}Code Level View}{11}} -\newlabel{secApp}{{7}{11}} -\@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}} -\newlabel{figAnimVP}{{5}{12}} -\@writefile{toc}{\contentsline {section}{\numberline {8}Results}{13}} -\newlabel{secResults}{{8}{13}} -\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Implementation of SSR's receive\_from\_to library function.}}{14}} -\newlabel{figImplLib}{{6}{14}} -\@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}} -\newlabel{figAssembly}{{7}{14}} -\@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}} -\newlabel{figReqHdlr}{{8}{14}} -\bibdata{../helpers/bib_for_papers} -\@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}} -\newlabel{tabPersonDaysLang}{{1}{15}} -\@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}} -\newlabel{tabOverheadCycles}{{2}{15}} -\@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}} -\newlabel{tabHeadToHead}{{3}{15}} -\@writefile{toc}{\contentsline {section}{\numberline {9}Conclusion}{15}} -\newlabel{secConclusion}{{9}{15}} - diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.bbl --- 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 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -\begin{thebibliography}{10} - -\bibitem{} - - -\bibitem{Actors97} -G.~Agha, I.~Mason, S.~Smith, and C.~Talcott. -\newblock A foundation for actor computation. -\newblock {\em Journal of Functional Programming}, 7(01):1--72, 1997. - -\bibitem{SchedActivations} -Thomas~E. Anderson, Brian~N. Bershad, Edward~D. Lazowska, and Henry~M. Levy. -\newblock Scheduler activations: effective kernel support for the user-level - management of parallelism. -\newblock {\em ACM Trans. Comput. Syst.}, 10:53--79, February 1992. - -\bibitem{Car10} -Patrick Carribault, Marc P{\'e}rache, and Herv{\'e} Jourdren. -\newblock Enabling low-overhead hybrid {MPI/OpenMP} parallelism with {MPC}. -\newblock In {\em IWOMP'10}, pages 1--14, 2010. - -\bibitem{CnCHome} -Intel Corp. -\newblock {CnC} homepage. -\newblock - http://software.intel.com/en-us/articles/intel-concurrent-collections-for-cc% -/. - -\bibitem{BOMinManticore} -Matthew Fluet, Mike Rainey, John Reppy, Adam Shaw, and Yingqi Xiao. -\newblock Manticore: a heterogeneous parallel language. -\newblock In {\em Proceedings of the 2007 workshop on Declarative aspects of - multicore programming}, DAMP '07, pages 37--44, 2007. - -\bibitem{Fri98} -M.~Frigo, C.~E. Leiserson, and K.~H. Randall. -\newblock The implementation of the cilk-5 multithreaded language. -\newblock In {\em PLDI '98: Proceedings of the 1998 ACM SIGPLAN conference on - Programming language design and implementation}, pages 212--223, Montreal, - Quebec, June 1998. - -\bibitem{Gelernter85Linda} -D.~Gelernter. -\newblock {Generative communication in Linda}. -\newblock {\em ACM Transactions on Programming Languages and Systems (TOPLAS)}, - 7(1):80--112, 1985. - -\bibitem{OpenCLHome} -Kronos Group. -\newblock {Open Compute Language} homepage. -\newblock http://www.khronos.org/opencl. - -\bibitem{CILKHome} -Cilk group~at MIT. -\newblock {CILK} homepage. -\newblock http://supertech.csail.mit.edu/cilk/. - -\bibitem{VMSHome} -Sean Halle. -\newblock {VMS} home page. -\newblock http://vmsexemodel.sourceforge.net. - -\bibitem{Hewitt10} -Carl Hewitt. -\newblock Actor model of computation, 2010. -\newblock http://arxiv.org/abs/1008.1459. - -\bibitem{hoare78} -C.~A.~R. Hoare. -\newblock Communicating sequential processes. -\newblock {\em Communications of the ACM}, 21(8):666--677, 1978. - -\bibitem{Kah74} -G.~Kahn. -\newblock The semantics of a simple language for parallel programming. -\newblock In J.~L. Rosenfeld, editor, {\em Information processing}, pages - 471--475, Stockholm, Sweden, August 1974. North Holland, Amsterdam. - -\bibitem{CnCInHotPar} -Kathleen Knobe. -\newblock Ease of use with concurrent collections {(CnC)}. -\newblock In {\em HOTPAR '09: USENIX Workshop on Hot Topics in Parallelism}, - March 2009. - -\bibitem{milner99} -Robin Milner. -\newblock {\em Communicating and Mobile Systems: The pi-Calculus}. -\newblock Cambridge University Press, 1999. - -\bibitem{OpenMPHome} -{OpenMP} organization. -\newblock {OpenMP} home page. -\newblock http://www.openmp.org. - -\end{thebibliography} diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.blg --- 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 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -This is 8-bit Big BibTeX version 0.99c -Implementation: WIN32 Console, BaKoMa TNS bound. -Release version: 3.71 (18 Aug 1996) - -The top-level auxiliary file: 11_Dc_27__HW_abstr_for_port_stack.aux -The style file: plain.bst -Database file #1: ../helpers/bib_for_papers.bib -Repeated entry---line 18 of file ../helpers/bib_for_papers.bib - : @book{ - : , -I'm skipping whatever remains of this entry -Repeated entry---line 29 of file ../helpers/bib_for_papers.bib - : @misc{ - : , -I'm skipping whatever remains of this entry -Warning--to sort, need author or key in -Warning--empty author in -Warning--empty title in -Warning--empty journal in -Warning--empty year in - -Here's how much of BibTeX's memory you used: - Cites: 17 out of 7500 - Fields: 125 out of 125000 - Hash table: 34843 out of 35000 - Strings: 600 out of 30000 - String pool: 6240 out of 750000 - Wizard functions: 2118 out of 10000 -(There were 2 error messages) diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.ddf --- 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 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -[MakeIndex] -.idx=.ind diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.tex --- 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 +++ 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 @@ -3,7 +3,9 @@ \documentclass[conference]{../helpers/llncs} % -\usepackage{makeidx,geometry,amssymb,graphicx,calc,ifthen} + +%\usepackage{geometry} %chgs the margins and layout! +\usepackage{makeidx,amssymb,graphicx,calc,ifthen} % % *** CITATION PACKAGES *** @@ -258,7 +260,7 @@ \bibliographystyle{plain} % -\title{A HW Abstraction Suitable for Use as the Base of a Portability Software Stack} +\title{A Hardware Abstraction Suitable for Use at the Base of a Portability Software Stack} \author{Sean Halle \and Merten Sach \and BJ} \institute{Technical University Berlin, Germany} @@ -267,36 +269,94 @@ % \begin{abstract} -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. +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. In this paper, we show that an abstraction called Virtualized Master-Slave, or VMS \cite{} -satisfies all these criteria, and provide recent measurements to support the case. +satisfies these criteria, and we provide recent measurements to support the case. \end{abstract} -\section{Motivation and Background} +\section{Motivation} -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. -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{}. +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. -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. +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. -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. +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{}. + +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. + +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. The top layer of the software stack is thus the combination of constructs and managed toolchains. 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. -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. +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. -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. +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. -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. +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. -\section{Description} -The bottom two layers of the software stack are the subject of this paper. The - - here, need to support eco-system\cite{} +\section{Background on PStack and VMS} + +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. + +Describe how VMS fulfills those needs. Details of its interface, details of its impl on multi-core, details of differences on different machines. +Leave as-is for 1x4 and 1x2 -- make entirely different impl for 2x4 and another for 4x10 + +\section{Description of How VMS Fits PStack's Requirements} + +\section{Experimental Setup} + +\section{Results} + +\subsection{Performance Results} +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). + +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. + +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. + + +\begin{figure}[ht] +\mbox{\subfigure{\includegraphics[width=3in]{fig1.pdf}}\quad +\subfigure{\includegraphics[width=2.3in, angle = -90]{../figures/plots_exec_vs_task_size_v3/cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps}} + + \caption + {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. + } +\label{figCray1Vthread} +\end{figure} + + \includegraphics[width=2.3in, angle = -90]{../figures/plots_exec_vs_task_size_v3/cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps} +\subsection{Implementation Time Results} +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. + +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. + + + +\section{Future Work and Conclusion} +A semester long + + + +\section{Planning} + + (6.5" x 9" 10pt 2 col) + +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. + +what benefits performant portability will bring + +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. + +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. + +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. + +what need in bottom, to support eco-system\cite{} Many runtime systems are implemented -- for each language, one runtime for each variant of the abstraction. @@ -312,34 +372,29 @@ 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. -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. +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. + + + + + + + + + + + + + + + + + + +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. + Describe how VMS fulfills those needs. Details of its interface, details of its impl on multi-core, details of differences on different machines. Leave as-is for 1x4 and 1x2 -- make entirely different impl for 2x4 and another for 4x10 - - - -\section{Planning} - - what benefits performant portability will bring - -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. - -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. - -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. - - - - - - - - -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. -Describe how VMS fulfills those needs. Details of its interface, details of its impl on multi-core, details of differences on different machines. -Leave as-is for 1x4 and 1x2 -- make entirely different impl for 2x4 and another for 4x10 - - ? \section{old stuff} diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.tex.Backup-20111227-163852 --- 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 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1346 +0,0 @@ -%&latex - - -\documentclass[conference]{../helpers/llncs} -% -\usepackage{makeidx,geometry,amssymb,graphicx,calc,ifthen} -% - -% *** CITATION PACKAGES *** -% -%\usepackage{cite} -% cite.sty was written by Donald Arseneau -% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package -% \cite{} output to follow that of IEEE. Loading the cite package will -% result in citation numbers being automatically sorted and properly -% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using -% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's -% \cite will automatically add leading space, if needed. Use cite.sty's -% noadjust option (cite.sty V3.8 and later) if you want to turn this off. -% cite.sty is already installed on most LaTeX systems. Be sure and use -% version 4.0 (2003-05-27) and later if using hyperref.sty. cite.sty does -% not currently provide for hyperlinked citations. -% The latest version can be obtained at: -% http://www.ctan.org/tex-archive/macros/latex/contrib/cite/ -% The documentation is contained in the cite.sty file itself. - - - - - - -% *** GRAPHICS RELATED PACKAGES *** -% -%\ifCLASSINFOpdf - % \usepackage[pdftex]{graphicx} - % declare the path(s) where your graphic files are - % \graphicspath{{../pdf/}{../jpeg/}} - % and their extensions so you won't have to specify these with - % every instance of \includegraphics - % \DeclareGraphicsExtensions{.pdf,.jpeg,.png} -%\else - % or other class option (dvipsone, dvipdf, if not using dvips). graphicx - % will default to the driver specified in the system graphics.cfg if no - % driver is specified. - % \usepackage[dvips]{graphicx} - % declare the path(s) where your graphic files are - % \graphicspath{{../eps/}} - % and their extensions so you won't have to specify these with - % every instance of \includegraphics - % \DeclareGraphicsExtensions{.eps} -%\fi -% graphicx was written by David Carlisle and Sebastian Rahtz. It is -% required if you want graphics, photos, etc. graphicx.sty is already -% installed on most LaTeX systems. The latest version and documentation can -% be obtained at: -% http://www.ctan.org/tex-archive/macros/latex/required/graphics/ -% Another good source of documentation is "Using Imported Graphics in -% LaTeX2e" by Keith Reckdahl which can be found as epslatex.ps or -% epslatex.pdf at: http://www.ctan.org/tex-archive/info/ -% -% latex, and pdflatex in dvi mode, support graphics in encapsulated -% postscript (.eps) format. pdflatex in pdf mode supports graphics -% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure -% that all non-photo figures use a vector format (.eps, .pdf, .mps) and -% not a bitmapped formats (.jpeg, .png). IEEE frowns on bitmapped formats -% which can result in "jaggedy"/blurry rendering of lines and letters as -% well as large increases in file sizes. -% -% You can find documentation about the pdfTeX application at: -% http://www.tug.org/applications/pdftex - - - - - -% *** MATH PACKAGES *** -% -%\usepackage[cmex10]{amsmath} -% A popular package from the American Mathematical Society that provides -% many useful and powerful commands for dealing with mathematics. If using -% it, be sure to load this package with the cmex10 option to ensure that -% only type 1 fonts will utilized at all point sizes. Without this option, -% it is possible that some math symbols, particularly those within -% footnotes, will be rendered in bitmap form which will result in a -% document that can not be IEEE Xplore compliant! -% -% Also, note that the amsmath package sets \interdisplaylinepenalty to 10000 -% thus preventing page breaks from occurring within multiline equations. Use: -%\interdisplaylinepenalty=2500 -% after loading amsmath to restore such page breaks as IEEEtran.cls normally -% does. amsmath.sty is already installed on most LaTeX systems. The latest -% version and documentation can be obtained at: -% http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/ - - - - - -% *** SPECIALIZED LIST PACKAGES *** -% -%\usepackage{algorithmic} -% algorithmic.sty was written by Peter Williams and Rogerio Brito. -% This package provides an algorithmic environment fo describing algorithms. -% You can use the algorithmic environment in-text or within a figure -% environment to provide for a floating algorithm. Do NOT use the algorithm -% floating environment provided by algorithm.sty (by the same authors) or -% algorithm2e.sty (by Christophe Fiorio) as IEEE does not use dedicated -% algorithm float types and packages that provide these will not provide -% correct IEEE style captions. The latest version and documentation of -% algorithmic.sty can be obtained at: -% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithms/ -% There is also a support site at: -% http://algorithms.berlios.de/index.html -% Also of interest may be the (relatively newer and more customizable) -% algorithmicx.sty package by Szasz Janos: -% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithmicx/ - - - - -% *** ALIGNMENT PACKAGES *** -% -%\usepackage{array} -% Frank Mittelbach's and David Carlisle's array.sty patches and improves -% the standard LaTeX2e array and tabular environments to provide better -% appearance and additional user controls. As the default LaTeX2e table -% generation code is lacking to the point of almost being broken with -% respect to the quality of the end results, all users are strongly -% advised to use an enhanced (at the very least that provided by array.sty) -% set of table tools. array.sty is already installed on most systems. The -% latest version and documentation can be obtained at: -% http://www.ctan.org/tex-archive/macros/latex/required/tools/ - - -%\usepackage{mdwmath} -%\usepackage{mdwtab} -% Also highly recommended is Mark Wooding's extremely powerful MDW tools, -% especially mdwmath.sty and mdwtab.sty which are used to format equations -% and tables, respectively. The MDWtools set is already installed on most -% LaTeX systems. The lastest version and documentation is available at: -% http://www.ctan.org/tex-archive/macros/latex/contrib/mdwtools/ - - -% IEEEtran contains the IEEEeqnarray family of commands that can be used to -% generate multiline equations as well as matrices, tables, etc., of high -% quality. - - -%\usepackage{eqparbox} -% Also of notable interest is Scott Pakin's eqparbox package for creating -% (automatically sized) equal width boxes - aka "natural width parboxes". -% Available at: -% http://www.ctan.org/tex-archive/macros/latex/contrib/eqparbox/ - - - - - -% *** SUBFIGURE PACKAGES *** -%\usepackage[tight,footnotesize]{subfigure} -% subfigure.sty was written by Steven Douglas Cochran. This package makes it -% easy to put subfigures in your figures. e.g., "Figure 1a and 1b". For IEEE -% work, it is a good idea to load it with the tight package option to reduce -% the amount of white space around the subfigures. subfigure.sty is already -% installed on most LaTeX systems. The latest version and documentation can -% be obtained at: -% http://www.ctan.org/tex-archive/obsolete/macros/latex/contrib/subfigure/ -% subfigure.sty has been superceeded by subfig.sty. - - - -%\usepackage[caption=false]{caption} -%\usepackage[font=footnotesize]{subfig} -% subfig.sty, also written by Steven Douglas Cochran, is the modern -% replacement for subfigure.sty. However, subfig.sty requires and -% automatically loads Axel Sommerfeldt's caption.sty which will override -% IEEEtran.cls handling of captions and this will result in nonIEEE style -% figure/table captions. To prevent this problem, be sure and preload -% caption.sty with its "caption=false" package option. This is will preserve -% IEEEtran.cls handing of captions. Version 1.3 (2005/06/28) and later -% (recommended due to many improvements over 1.2) of subfig.sty supports -% the caption=false option directly: -%\usepackage[caption=false,font=footnotesize]{subfig} -% -% The latest version and documentation can be obtained at: -% http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/ -% The latest version and documentation of caption.sty can be obtained at: -% http://www.ctan.org/tex-archive/macros/latex/contrib/caption/ - - - - -% *** FLOAT PACKAGES *** -% -%\usepackage{fixltx2e} -% fixltx2e, the successor to the earlier fix2col.sty, was written by -% Frank Mittelbach and David Carlisle. This package corrects a few problems -% in the LaTeX2e kernel, the most notable of which is that in current -% LaTeX2e releases, the ordering of single and double column floats is not -% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a -% single column figure to be placed prior to an earlier double column -% figure. The latest version and documentation can be found at: -% http://www.ctan.org/tex-archive/macros/latex/base/ - - - -%\usepackage{stfloats} -% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e -% the ability to do double column floats at the bottom of the page as well -% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in -% LaTeX2e). It also provides a command: -%\fnbelowfloat -% to enable the placement of footnotes below bottom floats (the standard -% LaTeX2e kernel puts them above bottom floats). This is an invasive package -% which rewrites many portions of the LaTeX2e float routines. It may not work -% with other packages that modify the LaTeX2e float routines. The latest -% version and documentation can be obtained at: -% http://www.ctan.org/tex-archive/macros/latex/contrib/sttools/ -% Documentation is contained in the stfloats.sty comments as well as in the -% presfull.pdf file. Do not use the stfloats baselinefloat ability as IEEE -% does not allow \baselineskip to stretch. Authors submitting work to the -% IEEE should note that IEEE rarely uses double column equations and -% that authors should try to avoid such use. Do not be tempted to use the -% cuted.sty or midfloat.sty packages (also by Sigitas Tolusis) as IEEE does -% not format its papers in such ways. - - - - - -% *** PDF, URL AND HYPERLINK PACKAGES *** -% -%\usepackage{url} -% url.sty was written by Donald Arseneau. It provides better support for -% handling and breaking URLs. url.sty is already installed on most LaTeX -% systems. The latest version can be obtained at: -% http://www.ctan.org/tex-archive/macros/latex/contrib/misc/ -% Read the url.sty source comments for usage information. Basically, -% \url{my_url_here}. - - - - - -% *** Do not adjust lengths that control margins, column widths, etc. *** -% *** Do not use packages that alter fonts (such as pslatex). *** -% There should be no need to do such things with IEEEtran.cls V1.6 and later. -% (Unless specifically asked to do so by the journal or conference you plan -% to submit to, of course. ) - - -% correct bad hyphenation here -\hyphenation{op-tical net-works semi-conduc-tor} - - -\begin{document} - -\bibliographystyle{plain} -% - -\title{VMS: Separating Synchronization Semantics from Order-Establishment} - -\author{Sean Halle\inst{1,2} \and Albert Cohen\inst{1}} -\institute{INRIA and \'Ecole Normale Sup\'erieure, France - \and - University of California at Santa Cruz, USA} - -\maketitle -% - -\begin{abstract} -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. - -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. -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. - -In this paper, we introduce the approach with a user-level implementation, deferring Linux integration and hardware support to future papers. -We focus on the formal model of tie-points, details of our proof-of-concept implementation, -and connecting these to application code. - - - - We demonstrate - the low overhead of the interface and quickness to implement a runtime on three sets - of parallelism constructs: rendez-vous style \texttt{send} and - \texttt{receive}; Cilk style \texttt{spawn} and \texttt{sync}, which - have similar performance to Cilk 5.4; and \texttt{mutex} and - \texttt{condition variable} constructs from pthreads, which have 80x - lower overhead than Linux thread operations. Development time - averaged just over one day per set as opposed to weeks for equivalent lock-based implementations. -\end{abstract} - -\section{Motivation} - -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. - - 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[]. - -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. - -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. - -Such a separation is what this paper proposes, and presents an implementation in user-space for multi-core shared memory processors, - - - -? - -a rich interface between scheduling and hardware that enables adaptation to target hardware characteristics for higher performance, and integration into a cross-language framework - - ? - - This abstraction is not directly usable by application - programmers. Instead, application-visible behavior is implemented -in a semantical plugin, and then invoked via a language or library - that uses the plugin. The main benefit is that parallel language - runtimes become simpler to implement, because they use sequential - algorithms for the parallel semantics. This is possible because the - abstraction makes available a virtual time in which events in - different program time-lines are sequentialized. The parallel - semantics relate events in different time-lines via relating the - sequentialized versions within the virtual time-line. - -? - -Thread parallelism constructs have been well documented to be -difficult to program with. They directly expose low-level concurrency -to the programmer. Arbitrary non-deterministic behavior and deadlocks -can arise from improperly synchronized code. Efficient execution -requires non-blocking algorithms whose correctness requires deep -understanding of weakly consistent memory models. In addition, the -operating system abstraction for threads comes with a very high -context-switching and synchronization overhead. - -%% AC. The following is wrong. -%\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. - -%\paragraph{\bf Partial solution: } To deal with this, in practice, a language's runtime turns off - -\paragraph*{A partial solution.} - -To deal with the last problem, a parallel language's runtime turns off -operating system threads by pinning one to each physical core. This -way, the custom runtime is assured that the software thread is -one-to-one with a physical core. It then implements a user-level -thread package that lets it control which OS thread a computational -task is assigned to. Finally, the runtime then implements the -language's parallel semantics in terms of those user threads. - -The user-level threading approach addresses the system overhead issue, -but it still hides important events such as input-output or -node-to-node communications in a cluster. -%% AC. Irrelevant for a parallelism-centric paper -%software faults, and other hardware events -Hence, the more scalable runtimes need to coordinate task assignment -to cores with application access of input and output, memory -allocation over non-uniform cache and memory hierarchies, offloading -to hardware accelerators, power management, and inter-node -communication in a cluster. The user-level threading approach also -makes the parallel runtime implementation cumbersome, error-prone and -complex, because it is still written in terms of threads. - -Overall, parallel language implementations must deal with a number of -challenges normally deferred to the operating system, and they still -suffer from the complexity of non-blocking shared memory -concurrency. - -Ideally, the OS would provide a mutable hardware abstraction, -along with a selection of customizations or mutations that provide convenient -parallelism constructs for applications to use. It should allow -languages to provide their own parallel semantics. The language -runtime would then provide a secure way for the runtime to access -kernel-only hardware mechanisms. It could interact directly with the -kernel to manage physical resources, in a low-overhead way. -One benefit of this arrangement is the chance to implement a -language's runtime directly as a plugin, which gives it the ability to -control which task is assigned to which processing element at which -time. This enables high performance and low-energy data affinity -techniques. For example, the runtime could track data within the -memory hierarchy and assign tasks to locations close to their consumed -data. - -% \paragraph{\bf Support for portability: } This separation between -% application executable and language runtime also supports -% portability. It packages the language-specific scheduler into a -% separate machine-specific module that is separately installed. The -% scheduler is thus optimized for the combination of language with -% hardware. This isn't a full solution to portability but it is a needed -% precursor. - -% An interesting portability technique enabled by a separate -% language-plus-hardware specific runtime is tracking which cores are -% likely to already have data in the cache which a new task requires as -% input. It could place tasks where the input data is likely to reside, -% reducing communication to increase performance and power efficiency. - -\paragraph*{Contribution.} - -We show in this paper the definition and implementation of such a -mutable hardware abstraction, albeit at user-level rather than in -the kernel. It lets a language runtime be implemented as -a plugin, which includes parallelism constructs and assignment of -tasks to cores. - -We focus in this introductory paper on the definition of the -abstraction and its support for parallelism constructs, postponing -exploration of assignment of tasks onto cores and other performance -optimizations to following papers. This paper establishes a definition -of multiple time-lines in a program, and a virtual time that -sequentializes events within those. It demonstrates three sets of -parallelism constructs: synchronous \texttt{send}-\texttt{receive} -motivated by process calculi; \texttt{spawn} and \texttt{sync} from -Cilk {\cite{Fri98,CILKHome}}; and \texttt{mutex} and \texttt{condition - variable} from pthreads. The assignment policy we implemented with -them is simply first-come first-served. - -We call the abstraction Virtualized Master-Slave, or VMS. It is -essentially a definition of virtualized time on parallel hardware. It -exports facilities, to a plugin, to create virtual processors and -control how their timelines relate to each other, and relate to -physical time. It also exports facilities, for a library to use, to -suspend a virtual processor and interact with the plugin. The plugin -embodies most of a language's runtime, while the library is the -application's gateway to that runtime. - -\paragraph*{Organization of paper.} - -Section~\ref{secAbsModel} provide the original concepts and -definitions of VMS. Section~\ref{secInternal} focuses on the -implementation, describing the elements and how they interact, then -relating them back to the theoretical definition. -Section~\ref{secApp} takes the point of view of the application code, -studying the usage and implementation of parallel language constructs -as a VMS plugin. To wrap up, measurements of effectiveness appear in -Section~\ref{secResults} and conclusions in -Section~\ref{secConclusion}. - -\section{Background and Related Work} - -User-level thread packages and most parallel language runtimes have to -side-step OS threads, by pinning one to each core, which effectively -gives the user-level package control over the core. Our VMS -implementation also does this. We are not claiming in this paper to -have the OS level implementation of VMS that is possible -- but just -the user-space version. - -\paragraph*{Related work.} - -The most closely related work is Scheduler Activations -\cite{SchedActivations}, which also allows modifying concurrency -constructs and controlling assignment of virtual processors onto -cores. However it has no virtual time to guarantee globally consistent -sequentialization, and no interface for plugins. - -BOM \cite{BOMinManticore}, which is used in Manticore to express -scheduling policies and synchronization, also bears resemblances to -VMS, but at a higher level of abstraction. BOM is a functional -language, rather than a primitive abstraction meant to sit at the -hardware-software boundary as VMS is. - -Coroutines is a high-performance means of switching between -tasks. Coroutine scheduling and stack handling techniques were well -suited to the user-space implementation of VMS. - -Other related work either provides an abstraction of the thread model, -or is a full language with specific parallelism constructs. As a -protypic example of user-level threads, Cilk {\cite{Fri98,CILKHome}} -provides a simplified abstraction with an efficient scheduling and -load balancing algorithm, but limited to fork-join concurrency. OpenMP -{\cite{OpenMPHome}} is a typical example of a parallel extension of -sequential languages; it allows creating tasks and controlling their -execution order. We claim that both Cilk and OpenMP, as well as most -thread abstractions or parallel languages may be implemented via -plugins to VMS, with similar performance. - -In contrast to thread abstractions and parallel programming languages, -VMS doesn't impose its own low-level concurrency semantics as a -programming model, but rather takes preferred ones as plugins. This -makes it not a language itself, but a \emph{support} mechanism to -implement language runtimes. Parallelism constructs may be implemented -as VMS plugins, easily, quickly, and with high performance as -indicated in Section~\ref{secResults}. - -This work presents a first incarnation and evaluation of VMS. We plan -to explore the embedding into VMS of a variety of parallel languages, -with a special interest for coordination languages -\cite{Gelernter85Linda,CnCInHotPar,CnCHome}. We will also explore -VMS's compatibility with different concurrent semantics -\cite{Kah74,hoare78,milner99,Hewitt10,Actors97}. One particularly -important application would be to use VMS to facilitate the design and -implementation of the emerging hybrid programming models, such as -MPI+OpenMP, or OpenMP+OpenCL \cite{Car10,OpenCLHome}. - -\paragraph*{Virtual Processor (VP).} - -We want to avoid the confusion associated with the various -interpretation for the the terms ``thread'' and ``task'' so will use -the term \emph{Virtual Processor} (VP), which we define as state in -combination with the ability to animate code or an additional level of -virtual processors. The state consists of a program counter, a stack -with its contents, a pointer to top of stack, and a pointer to the -current stack frame. - -\section{Abstract Definition of VMS} -\label{secAbsModel} - -We start with an intuitive overview, then precise the definitions and -properties in the following sub-sections. - -\paragraph*{Intuitive Overview.} - -VMS is concerned primarily with time and guarantees about it. This is -because parallelism constructs control how the time-lines of different -virtual processors intersect. They also guarantee relations of time -lines to hardware events. - -As an example, consider a program that writes into a data structure in -one time-line, then calls a \texttt{send} construct, meanwhile in a -different time-line it calls the \texttt{receive} construct then reads -the data structure. The constructs should guarantee that all data -written before the \texttt{send} is readable in the other time-line -after the \texttt{receive}. - -%% AC. Too early. -% VMS provides a primitive guarantee that -% plugin code builds upon to provide such higher-level guarantees. The -% primitive guarantee is defined in Section~\ref{scTime}, after the -% necessary vocabulary is established. - -To support parallelism constructs, VMS provides: primitive operations -to create and suspend VPs; a way for plugged-in code to control when -each VP is (re)started; and time-related guarantees. These are -enforced on all hardware, be it shared memory or distributed, with -strong memory consistency or weak. - -\paragraph*{Definition in three parts.} - -The definition we give is for VMS \emph{with plugins present}. Hence, -the definition includes the behavior of any parallelism construct -implementable with VMS. We give the abstract definition in three -parts: a definition of the elements of a VMS computation system; a -definition of time and the key VMS guarantee; and a definition of -virtual processor scheduling states and transitions between them. - -%% AC. Too early, Master has not been defined. I renamed VMS-core into -%% VMS afterwards, finding no ambiguity. -% The Master mentioned in the definition is an abstract entity, with a -% plugin present. In practice, this Master entity is implemented as part -% of a core VMS, and plugins later added. This VMS-core is the hardware -% abstraction. It hides the physical hardware behind an interface that -% creates virtual processors and enforces well-defined time-behavior. - -\subsection{The Elements of a VMS Computation System} - -\begin{itemize} -\item A VMS program has multiple VPs, which are Slaves, each with an - independent time-line. -\item A schedule of Slaves is generated by a Master entity, from - within separate time-line(s). -\item A schedule is defined as the set of points at which VPs are - (re)animated. -\item All semantic parallelism behavior is invoked via communication - with the Master. -\item Communication with the Master happens by using a VMS primitive, - which causes \emph{voluntary} suspension of the program's VP. -\end{itemize} - -What is important here is that the choice of which VP is animated, at -which point, happens in a separate time-line; and that the VPs suspend -voluntarily for each parallelism construct. This means that -\emph{scheduling is separated from the program code}, the key point. - -The Master entity appears to be a single entity to the slaves, but may -be implemented by multiple Master VPs hidden inside the VMS -implementation. - -VPs use the Master as an intermediary to: semantically communicate -with each other; cause creation of new program VPs; and to influence -re-animation of VPs. As a subtlety, notice that hardware mechanisms, -such as coherent shared memory, allow communication to take place that -is not visible to the parallelism constructs. This is not allowed with -VMS: parallelism constructs of the language, and through them VMS -primitives, must be separately called in order to make use of shared -variable communication safe. - -%% AC. Calling memory a processing element only adds confusion. -% {\bf Definitions:\ }VMS is intended only for hardware systems that -% consist of processing elements connected by communication. We define -% a memory-space to be a processing element, albeit without the ability -% to transform data. - -We define a \emph{physical core} to be a processing element executing -a sequential stream of instructions. - -We define a program-time as the sequence of instructions animated by a -Slave VP, which is eventually animated by a physical core. A Slave VP -has associated \emph{scheduling state} that, among other things, -relates to how its program-time progresses relative to physical time -on the cores. - -\subsection{Time in VMS} -\label{secTime} - -VMS has three levels of time: \emph{Program time}, \emph{Master time}, -and \emph{Virtual time}. - -\begin{itemize} -\item Program time is local to a Slave VP, measured in instruction - executions. -\item Master time is hidden from the program and is independent from - all Program times. -\item Virtual time is the ordered set of changes in scheduling state - of Slave VPs. -\end{itemize} - -What is most important here is that Virtual time defines a global -sequential ordering. This ordering is consistent with the key VMS -guarantee (given below), and each point in it is computed within -Master time. - -Also, the independence between program times and master time has -subtle advantages. It enables elegant enforcement of the VMS -guarantee, and implementation simplifications that become clear after -gaining deep implementation knowledge. - -In VMS, each event relevant to parallel semantics is tied to a -transition of the state of a Slave VP. This means that implementing -the behavior of parallel semantics is equivalent to controlling the -order of transitions of state of virtual processors. - -\paragraph*{Definition.} - -The stream of instructions in a given program-time is broken into a -number of \emph{trace-segments}, separated by suspension points. Each -trace-segment is animated by a single physical core, but not -necessarily the same core as animated the other trace segments. A -suspend point is created by a Slave VP executing the ``suspend'' -primitive provided by VMS. A suspend point has no duration in program -time, but has distinct start and end points in virtual time. The -end-suspension points of two different program times can be tied -together within virtual time, which is called a \emph{tie point} and -has special significance to parallel constructs. The physical time of -a core has no relationship to any program time, except for the various -time-guarantees in this definition of VMS. - -\begin{figure}[ht] - \includegraphics[width=5in]{../figures/Time_in_VMS_1.eps} - \caption - {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. - } -\label{figTimeMapping} -\end{figure} - -\paragraph*{Relating time-lines to each other.} - -Figure \ref{figTimeMapping} illustrates how trace-segments relate to -suspend points, and map onto virtual time. A trace segment starts in -virtual time where suspend is ended, as seen. In fact, the two trace -segments shown have a common start-point within virtual time. This is -because the parallelism semantics chose to start them at the same -point -- this is what a tie point is. A key note is that the lengths -in virtual time have no relation to the lengths in program-time. The -only defined feature is that those two trace-segments have a common -start-point in virtual time. This means that the two suspend points -are considered to be tied together. - -\paragraph*{The key VMS guarantee.} - -Being tied together means that all physical events that can be -observed by both program-times are covered by the key VMS guarantee: -any events triggered before the common suspend point in one program -time are guaranteed visible in the other program time after the common -suspend point. They {\em{might}} be visible before, but it's not -guaranteed. In addition, events triggered after the common suspend -point in one are guaranteed not visible before the common suspend -point in the other. This two-part guarantee is a fundamental design -property of VMS. - -Intuitively, a tie-point separates before it from after such that tied -program times agree (illustrated with code in Section \ref{secApp} -Figure \ref{figAnimVP}). But the subtlety is that events triggered -before the tie-point, {\em{might}} be visible to the other before, and -ones triggered after {\em{might not}} be visible to the other after -- -physical events triggered before are only guaranteed visible -{\em{after}} the tie point, and events after are only guaranteed -{\em{not}} visible {\em{before}} the tie point. - -This is a form of bounded non-determinism. The pattern of suspension -end-points determines which trace-segments overlap in Virtual time, -and events triggered in one might be visible in overlapped ones. But -no guarantees cover these. If one segment tries to observe, it will -see events triggered by overlapped segments in non-deterministic -order. - -The VMS implementation defines which physical events are covered by -the key VMS guarantee (reads/writes, network communication, DMA, I/O). - -\paragraph*{Globally consistent sequential order.} - -VMS maps suspend-start, suspend-end, and hence tie-points, to a -globally-consistent sequential order in Virtual time. This enables one -of VMS's key benefits: sequential algorithms for parallel constructs. - -Tie points define parallel behavior, so an implementation of how to -choose tie points equals an implementation of parallel constructs. The -Master chooses tie-points, so plugging code to choose tie-points into -the Master equals plugging in parallel constructs. - -\subsection{Scheduling State} - -Scheduling state is used in VMS to organize internal activity, for -enforcing the guarantees. - -\begin{itemize} -\item VPs have three scheduling states: {\em{Animated}}, - {\em{Blocked}}, {\em{Ready}}; see Figure~\ref{figStates}. -\item VPs in Animated are {\em{allowed}} to advance Program time with - (core-local) physical time. -\item VPs in Blocked and Ready do not advance their Program time. -\item Animated has two physical states: {\em{Progressing}} and - {\em{Stalled}}. -\item VPs in Progressing advance Program time with (core-local) - physical time, those in Stalled do not (allowing non-semantic - suspend). -\item Scheduling states are defined in Virtual time only. -\item Progressing and Stalled are defined in (core-local) physical - time only; the distinction is invisible in Virtual time. -\end{itemize} - -\begin{figure}[h!tb] -\begin{minipage}{.55\textwidth} - \includegraphics[width=\textwidth]{../figures/Scheduling_states_2.eps} - \caption{Scheduling states of a slave VP in the VMS model.} - \label{figStates} -\end{minipage} -\hfill -\begin{minipage}{.43\textwidth} - \includegraphics[width=\textwidth]{../figures/VMS-core__plugins.eps} - \caption - { - 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. - } - \label{figMasterSplit} -\end{minipage} -\end{figure} - - -Some important points: (1) only VPs Animated can trigger physical -events that are seen in other program time-lines; (2) the distinction -between Blocked vs Stalled is that a VP has to explicitly execute a -VMS primitive operation to enter Blocked, making it part of the -semantics of parallelism constructs. In contrast, Stalled happens -invisibly, with no effect on semantic behavior. It is due to hardware -events hidden inside VMS, such as interrupts. - -The Ready state is used to separate the parallelism-construct behavior -from the scheduling behavior. It acts as a ``staging area'' for -scheduling. VPs placed into this state are {\em{allowed}} to be -animated, then the scheduler decides when and where. - -An essential and illustrative point is that actions {\em{outside}} a -given Program time cause the VP to transition -Blocked$\rightarrow$Ready, which contrasts to lock algorithms where -the concurrency-related behavior takes place {\em{inside}} program -time. - -\paragraph*{Transition Between Slave Scheduling States.} - -\begin{itemize} -\item VPs transition states as shown in Figure \ref{figStates}. -\item Animated$\rightarrow$Blocked is caused by a Slave VP - executing the Suspend VMS primitive. -\item Blocked$\rightarrow$Ready is determined by the semantics - implemented in the plugin. -\item Ready$\rightarrow$Animated is determined by the scheduler in the - plugin. -\item Transitions in scheduling state have a globally consistent order - in Virtual time. -\end{itemize} - -The parallelism primitives executed by a program do not control change -in scheduling states. They merely communicate messages to the Master, -via a VMS supplied primitive. Inside the Master, the plugin's -parallelism construct implementation processes the message. Based on -that, it performs changes in state from Blocked$\rightarrow$Ready, -creates new VPs, and dissipates existing VPs. Most communication from -Slave to Master requires the VP to suspend when it sends the -message. A few messages, like creating new Slave may be sent without -suspending. - -The suspend primitive decouples local physical time from Virtual time. -Execution causes immediate transition to Stalled in physical time, -then the Master performs Animated$\rightarrow$Blocked, fixing that -transition in Virtual time. The only relationship is causality. This -weak relation is what allows suspension-points to be serialized in -Virtual time, which in turn is what allows using sequential algorithms -to implement parallelism constructs. - -\subsection{Plugins} - -The Master entity has two parts, a generic core part and a plugin -(Figure \ref{figMasterSplit}). The core part of the Master is -implemented as part of VMS itself. The plugin supplies two functions: -the communication-handler and the scheduler, both having a standard -prototype. The communication-handler implements the parallelism -constructs, while scheduler assigns VPs to cores. - -An \emph{instance} of a plugin is created as part of initializing an -application, and the instance holds the semantic and scheduling state -for that run of the application. This state, combined with the virtual -processor states of the slaves created during that application run, -represents progress of the work of the application. For example, -multi-tasking is performed simply by the Master switching among -plugin instances when it has a resource to offer to a scheduler. The -parallelism-semantic state holds all information needed to resume -(hardware state, such as TLB and cache-tags is inside VMS). - -\section{Internal Workings of Our Implementation} -\label{secInternal} - -We name the elements of our example implementation and describe their -logical function, then relate them to the abstract model. We then step -through the operation of the elements. - -\paragraph*{Elements and their logical function.} - -As illustrated in Figure~\ref{figInternals}, our VMS implementation is -organized around physical cores. Each core has its own {\em{master - virtual-processor}}, \texttt{masterVP}, and a {\em{physical-core - controller}}, which communicate via a set of scheduling slots, -\texttt{schedSlot}. The Master in the abstract definition is -implemented by the multiple \texttt{masterVP}s plus a particular -plugin instance with its shared parallelism-semantic state (seen at -the top). - -On a given core, only one of: the core-controller, \texttt{masterVP}, -or a slave VP, is animated at any point in local physical time. Each -\texttt{masterVP} animates the same function, called -\texttt{master\_loop}, and each slave VP animates a function from the -application, starting with the top-level function the slave is created -with, and following its call sequence. The core controller is -implemented here as a Linux pthread that runs the \texttt{core\_loop} -function. - -Switching between VPs is done by executing a VMS primitive that -suspends the VP. This switches the physical core over to the -controller, by jumping to the start of the \texttt{core\_loop} -function, which chooses the next VP and switches to that (switching is -detailed in Section \ref{secApp} Figure \ref{figAssembly}). - -\paragraph*{Relation to abstract model.} - -We chose to implement the Master entity of the model by a set of -\texttt{masterVP}s, plus plugin functions and shared -parallelism-semantic state. VMS consists of this implementation of the -Master, plus the core-controllers, plus the VMS primitive libraries, -for creating new VPs and dissipating existing VPs, suspending VPs, and -communicating from slave VP to Master. In Figure~\ref{figInternals}, -everything in green is part of VMS, while the plugin is in red, and -application code appears as blue, inside the slave VP. - -Virtual time in the model is implemented via a combination of four -things: a \texttt{masterLock} (not shown) that guarantees non-overlap -of \texttt{masterVP} trace-segments; the \texttt{master\_loop} which -performs transition Animated$\rightarrow$Blocked; the -\texttt{comm\_handler\_fn} which performs Blocked$\rightarrow$Ready -and the \texttt{scheduler\_fn} which performs -Ready$\rightarrow$Animated. \ Each state transition is one step of -Virtual time; is guaranteed sequential by the non-overlap of -\texttt{masterVP} trace segments; and is global due to being in -parallelism-semantic state that is shared (top of -Figure~\ref{figInternals}). - -Transitions Progressing$\rightleftarrows$Stalled within the Animated -state are invisible to the parallelism semantics, the Master, and -Virtual time, and so have no effect on the elements seen. - -\begin{figure*}[h!tb] - \centerline{\includegraphics[width=5in]{../figures/VMS-core__internal_workings.eps}} - \caption - { Internal elements of our example VMS implementation - } - \label{figInternals} -\end{figure*} - -\paragraph*{Steps of operation.} - -The steps of operation are numbered, in Figure \ref{figInternals}. -Taking them in order: - -\begin{enumerate} -\item \texttt{master\_loop} scans the scheduling slots to see which - ones' slaves have suspended since the previous scan. -\item It hands these to the \texttt{comm\_handler\_fn} plugged in -(which equals transition Animated$\rightarrow$Blocked). -\item The VP has a request attached, and data in it causes the - \texttt{comm\_handler\_fn} to manipulate data structures in the - shared parallelism-semantic state. These structures hold all the - slaves in the blocked state (code-level detail and example will - come in Figure~\ref{figReqHdlr}, Section~\ref{secApp}). -\item Some requests cause slaves to be moved to a \texttt{readyQ} on - one of the cores (Blocked$\rightarrow$Ready). Which core's - \texttt{readyQ} receives the slave is under plugin control, - determined by a combination of request contents, semantic state and - physical machine state. -\item During the scan, the \texttt{master\_loop} also looks for empty - slots, and for each calls the \texttt{scheduler\_fn} plugged in. It - chooses a slave from the \texttt{readyQ} on the core animating - \texttt{master\_loop}. -\item The \texttt{master\_loop} then places the slave VP's pointer - into the scheduling slot (Ready$\rightarrow$Animated), making it - available to the \texttt{core\_loop}. -\item When done with the scan, \texttt{masterVP} suspends, switching - animation back to the \texttt{core\_loop}. -\item \texttt{core\_loop} takes slave VPs out of the slots. -\item Then \texttt{core\_loop} switches animation to these slave VPs. -\item When a slave self-suspends, animation returns to the - \texttt{core\_loop} (detail in code in Figure 9), which picks - another. -\item Until all slots are empty and the \texttt{core\_loop} switches - animation to the \texttt{masterVP}. -\end{enumerate} - -\paragraph*{Enabling sequential implementation of parallelism semantics.} - -All these steps happen on each core separately, but -%% AC. Cannot be both an essential property of VMS and "un this particular..." -% in this particular implementation -we use a central \texttt{masterLock} to ensure that -only one core's \texttt{masterVP} can be active at any time. This -guarantees non-overlap of trace-segments from different -\texttt{masterVP}s, allowing the plugins to use sequential algorithms, -without a performance penalty, as verified in -Section~\ref{secResults}. - -Relating this to the abstract model: the parallelism-semantic behavior -of the Master is implemented by the communication handler, in the -plugin. It thus runs in the Master time referred to, in the model, in -Section \ref{secAbsModel}. Requests are sent to the Master by -self-suspension of the slaves, but sit idle until the other slaves in -the scheduling slots have also run. This is the passive behavior of -requests that was noted in Section~\ref{secAbsModel}, which allows the -\texttt{masterVP}s to remain suspended until needed. This in turn -enables the \texttt{masterVP}s from different cores to be -non-overlapped. It is the non-overlap that enables the algorithms for -the parallelism semantics to be sequential. - -\section{Code Level View} -\label{secApp} - -To relate the abstract model and the internal elements to application -code and parallelism-library code, we give code snippets that -illustrate key features. We start with the application then work down -through the sequence of calls, to the plugin, using our SSR -{\cite{VMSHome}} parallelism-library as an example. - -In general, applications are either written in terms of a parallel -language that has its own syntax, or a base language with a -parallelism library, which is often called an {\em{embedded - language}}. Our demonstrators, VCilk {\cite{VMSHome}}, Vthread, -and SSR, are all parallelism libraries. A parallel language would -follow the standard practice of performing source-to-source transform, -from custom syntax into C plus parallelism-library calls. - -\paragraph*{SSR.} - -SSR stands for Synchronous Send-Receive, and details of its calls and -internal implementation will be given throughout this section. It has -two types of construct. The first, called {\em{from-to}} has two -calls: \texttt{SSR\_send\_from\_to} and -\texttt{SSR\_receive\_from\_to}, both of which specify the sending VP -as well as the receiving VP. \ The other, called {\em{of-type}} also -has two calls: \texttt{SSR\_\_send\_of\_type\_to} and -\texttt{SSR\_\_receive\_of\_type}, which allow a receiver to accept -from anonymous senders, but select according to type of message. - -% An example of a double column floating figure using two subfigures. -% (The subfig.sty package must be loaded for this to work.) -% The subfigure \label commands are set within each subfloat command, the -% \label for the overall figure must come after \caption. -% \hfil must be used as a separator to get equal spacing. -% The subfigure.sty package works much the same way, except \subfigure is -% used instead of \subfloat. -% -%\begin{figure*}[!t] -%\centerline{\subfloat[Case I]\includegraphics[width=2.5in]{subfigcase1}% -%\label{fig_first_case}} -%\hfil -%\subfloat[Case II]{\includegraphics[width=2.5in]{subfigcase2}% -%\label{fig_second_case}}} -%\caption{Simulation results} -%\label{fig_sim} -%\end{figure*} -% -% Note that often IEEE papers with subfigures do not employ subfigure -% captions (using the optional argument to \subfloat), but instead will -% reference/describe all of them (a), (b), etc., within the main caption. - -\paragraph*{Application view.} - -Figure~\ref{figAnimVP} shows snippets of application code, which use -the SSR parallelism library. The most important feature is that all -calls take a pointer to the VP that is animating the call. This is -seen at the top of the figure where slave VP creation takes a pointer -to the VP asking for creation. Below that is the standard prototype -for top level functions, showing that the function receives a pointer -to the VP it is the top level function for. - -The pointer is placed on the stack by VMS when it creates the VP, and -is the means by which the application comes into possession of the -pointer. This animating VP is passed to all library calls made from -there. For example, the bottom shows a pointer to the animating VP -placed in the position of sender in the \texttt{send} construct call. -Correspondingly, for the \texttt{receive} construct, the position of -receiving VP is filled by the VP animating the call. - -\begin{figure}[h!tb] -{\noindent -{\footnotesize -{\small Creating a new processor:} -\begin{verbatim} -newProcessor = SSR__create_procr( &top_VP_fn, paramsPtr, animatingVP ); -\end{verbatim} - -{\small prototype for the top level function:} -\begin{verbatim} -top_VP_fn( void *parameterStrucPtr, VirtProcr *animatingVP ); -\end{verbatim} - -{\small handing animating VP to parallelism constructs:} -\begin{verbatim} -SSR__send_from_to( messagePtr, animatingVP, receivingVP ); -messagePtr = SSR__receive_from_to( sendingVP, animatingVP ); -\end{verbatim} -} -} -\caption -{Application code snippets showing that all calls to the parallelism library -take the VP animating that call as a parameter. -} -\label{figAnimVP} -\end{figure} - -Relating these to the internal elements of our implementation, the -\texttt{animatingVP} suspends inside each of these calls, passing a -request (generated in the library) to one of the \texttt{masterVP}s. -The \texttt{masterVP} then calls the \texttt{comm-handler} plugin, and -so on, as described in Section \ref{secInternal}. - -For the \texttt{SSR\_\_create\_processor} call, the comm-handler in -turn calls a VMS primitive to perform the creation. The primitive -places a pointer to the newly created VP onto its stack, so that when -\texttt{top\_VP\_fn} is later animated, it sees the VP-pointer as a -parameter passed to it. \ All application code is either such a -top-level function, or has one at the root of the call-stack. - -The send and receive calls both suspend their animating VP. When both -have been called, the communication handler pairs them up and resumes -both. This ties time-lines together, invoking the VMS guarantee. Both -application-functions know, because of the VMS guarantee -(Section~\ref{secAbsModel}), that writes to shared variables made -before the send call by the sender are visible to the receiver after -the receive call. This is the programmer's view of tying together the -local time-lines of two different VPs, as defined in -Section~\ref{secAbsModel}. - -\paragraph*{Concurrency-library view.} - -A parallelism library function, in general, only creates a request, -sends it, and returns, as seen below. To send a request, it uses the -combined request-and-suspend VMS primitive that attaches the request -then suspends the VP. The primitive requires the pointer to the VP, -to attach the request and to suspend it. - -In Figure~\ref{figImplLib}, notice that the request's data is on the -stack of the virtual processor that's animating the call, which is the -\texttt{receiveVP}. The \texttt{VMS\_\_send\_sem\_request} suspends -this VP, which changes the physical core's stack pointer to a -different stack. So the request data is guaranteed to remain -undisturbed while the VP is suspended. - -Figure~\ref{figAssembly} shows the implementation of the VMS suspend -primitive. As seen in Figure \ref{figInternals}, suspending the -\texttt{receiveVP} involves switching to the \texttt{core\_loop}. In -our implementation, this is done by switching to the stack of the -pthread pinned to the physical core and then jumping to the -start-point of \texttt{core\_loop}. - -This code uses standard techniques commonly employed in co-routine -implementations. Tuning effort spent in \texttt{core\_loop} is -inherited by all applications. - -\begin{figure}[h!tb] -{\noindent -{\footnotesize -\begin{verbatim} -void * SSR__receive_from_to( VirtProcr *sendVP, VirtProcr *receiveVP ) - { SSRSemReq reqData; - reqData.receiveVP = receiveVP; - reqData.sendVP = sendVP; - reqData.reqType = receive_from_to; - VMS__send_sem_request( &reqData, receiveVP ); - return receiveVP->dataReturnedFromRequest; - } -\end{verbatim} -} -} -\caption{Implementation of SSR's receive\_from\_to library function.} -\label{figImplLib} - -{\noindent -{\footnotesize -\begin{verbatim} -VMS__suspend_procr( VirtProcr *animatingVP ) - { animatingVP->resumeInstrAddr = &&ResumePt; //GCC takes addr of label - animatingVP->schedSlotAssignedTo->isNewlySuspended = TRUE; //for master_loop to see - - - - ResumePt: - return; - } -\end{verbatim} -} -} - \caption -{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}. -} -\label{figAssembly} - -{\noindent -{\footnotesize -\begin{verbatim} -handle_receive_from_to( VirtProcr *requestingVP, SSRSemReq *reqData, SSRSemEnv *semEnv ) - { commHashTbl = semEnv->communicatingVPHashTable; - key[0] = reqData->receiveVP; key[1] = reqData->sendVP; //send uses same key - waitingReqData = lookup_and_remove( key, commHashTbl ); //get waiting request - if( waitingReqData != NULL ) - { resume_virt_procr( waitingReqData->sendVP ); - resume_virt_procr( waitingReqData->receiveVP ); - } - else - insert( key, reqData, commHashTbl ); //receive is first to arrive, make it wait - } -\end{verbatim} -} -} - \caption -{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~\ref{figInternals}. -} -\label{figReqHdlr} -\end{figure} - -\paragraph*{Plugin view.} - -SSR's communication handler dispatches on the \texttt{reqType} field -of the request data, as set by the \texttt{SSR\_\_receive\_from\_to} -code. It calls the handler code in Figure \ref{figReqHdlr}. This -constructs a hash-key, by concatenating the from-VP's pointer with the -to-VP's pointer. Then it looks-up that key in the hash-table that SSR -uses to match sends with receives, which is in the shared semantic -state seen at the top of Figure \ref{figInternals} in -Section~\ref{secInternal}. - -The most important feature in Figure~\ref{figReqHdlr} is that both -send and receive will construct the same key, so will find the same -hash entry. Whichever request is handled first in Virtual time will -see the hash entry empty, and save itself in that entry. The second -to arrive sees the waiting request and then resumes both VPs, by -putting them into their \texttt{readyQ}s. - -Access to the shared hash table can be considered private, as in a -sequential algorithm. This is because our VMS-core implementation -ensures that only one handler on one core is executing at a time. - -\section{Results} -\label{secResults} - -We implemented blocked dense matrix multiplication with right -sub-matrices copied to transposed form, and ran it on a 4-core -Core2Quad 2.4Ghz processor. - -\paragraph*{Implementation-time.} - -As shown in Table~\ref{tabPersonDaysLang}, time to implement the three -parallel libraries averages 2 days each. As an example of -productivity, adding nested transactions, parallel singleton, and -atomic function-execution to SSR required a single afternoon, totaling -less than 100 lines of C code. - -\paragraph*{Execution Performance.} - -Performance of VMS is seen in Table~\ref{tabOverheadCycles}. The code -is not optimized, but rather written to be easy to understand and -modify. The majority of the plugin time is lost to cache misses -because the shared parallelism-semantic state moves between cores on a -majority of accesses. Acquisition of the master lock is slow due to -the hardware implementing the CAS instruction. - -Existing techniques will likely improve performance, such as -localizing semantic data to cores, splitting malloc across the cores, -pre-allocating slabs that are recycled, and pre-fetching. However, in -many cases, several hundred nano-seconds per task is as optimal as the -applications can benefit from. - -\begin{table}[h!tb] -\begin{minipage}{.35\textwidth} -\begin{tabular}{|l|l|l|l|} - \cline{2-4} - \multicolumn{1}{l|}{} & SSR & Vthread & VCilk\\ - \cline{2-4} - \noalign{\vskip2pt} - \hline - Design & 4 & 1 & 0.5\\ - Code & 2 & 0.5 & 0.5\\ - Test & 1 & 0.5 & 0.5\\ - L.O.C. & 470 & 290 & 310\\ - \hline -\end{tabular} -\caption -{Person-days to design, code, and - test each parallelism library. L.O.C. is lines of (original) C code, - excluding libraries and comments. -} -\label{tabPersonDaysLang} -\end{minipage} -\hspace{-.05\textwidth} -\begin{minipage}[t]{.7\textwidth} -\hfill -\begin{tabular}{|l|l|r|r|} -\cline{3-4} -\multicolumn{2}{l|}{} & comp only & comp + mem\\ -\cline{3-4} -\noalign{\vskip2pt} -\hline -VMS Only & \texttt{master\_loop} & 91 & 110\\ -& switch VPs & 77 & 130\\ -& (malloc) & 160 & 2300\\ -& (create VP) & 540 & 3800\\ -\hline -Language: & & & \\ -\quad SSR & plugin -- concur & 190 & 540\\ -& plugin -- all & 530 & 2200\\ -& lock & & 250\\ -\quad Vthread & plugin -- concur & 66 & 710\\ -& plugin -- all & 180 & 1500\\ -& lock & & 250\\ -\quad VCilk & plugin -- concur & 65 & 260\\ -& plugin -- all & 330 & 1800\\ -& lock & & 250\\ -\hline -\end{tabular} -\caption -{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. -} -\label{tabOverheadCycles} -\end{minipage} - -\vskip-1.5cm -\begin{tabular}{|l|lr|} -\hline - Matrix size&Lang.&sec.\\ -[2pt]\hline - $81\times81$ & Cilk & 0.017\\ - & VCilk & 0.008\\ -\hline - $324\times324$ & Cilk & 0.13\\ - & VCilk & 0.13\\ -\hline - $648\times648$ & Cilk & 0.71\\ - & VCilk & 0.85\\ -\hline - $1296\times1296$ & Cilk & 4.8\\ - & VCilk & 6.2 \\ -[2pt]\hline -\end{tabular} -\hfill -\begin{tabular}{|l|r|r|r|r|} -\multicolumn{5}{l}{}\\ -\multicolumn{5}{l}{}\\ -\multicolumn{5}{l}{}\\ -\hline - operation & \multicolumn{2}{c|}{Vthread} & pthread & ratio\\ - & comp only & total & & \\ -[2pt]\hline - mutex\_lock & 85 & 1050 & 50,000 & 48:1\\ - mutex\_unlock & 85 & 610 & 45,000 & 74:1\\ - cond\_wait & 85 & 850 & 60,000 & 71:1\\ - cond\_signal & 90 & 650 & 60,000 & 92:1\\ -\hline -\end{tabular} -\caption -{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. -} -\label{tabHeadToHead} -\end{table} - -\paragraph*{Head to head.} - -We compare our implementation of the \texttt{spawn} and \texttt{sync} -constructs against Cilk 5.4, on the top in Table~\ref{tabHeadToHead}, -which shows that the same application code has similar -performance. For large matrices, Cilk 5.4's better use of the memory -hierarchy (the workstealing algorithm) achieves 23\% better -performance. However, for small matrices, VCilk is better, with a -factor 2 lower overhead. Cilk 5.4 does not allow controlling the -number of spawn events it actually executes, and chooses to run -smaller matrices sequentially, limiting our comparison. - -When comparing to pthreads, our VMS based implementation has more than -an order of magnitude better overhead per invocation of mutex or -condition variable functionality, as seen on the bottom of Table -\ref{tabHeadToHead}. Applications that inherently have short trace -segments will synchronize often and benefit the most from Vthread. - -\section{Conclusion} -\label{secConclusion} - -We have shown an alternative to the thread model that enables -easier-to-use parallelism constructs by splitting the scheduler open, -to accept new parallelism constructs in the form of plugins. This -gives the language control over assigning virtual processors to -physical cores, for performance, debugging, and flexibility -benefits. Parallelism constructs of programming languages can be -implemented using sequential algorithms, within a matter of days, -while maintaining low run-time overhead. - -\bibliography{../helpers/bib_for_papers} - -\end{document} diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.pdf Binary file 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.pdf has changed diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ 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 @@ -0,0 +1,546 @@ +% template-v1.tex: LaTeX2e template for Usenix papers. +% Version: usetex-v1, 31-Oct-2002 +% Revision history at end. + +\documentclass[finalversion,endnotes]{usetex-v1} +% Choose the appropriate option: +% +% 1. workingdraft: +% +% For initial submission and shepherding. Features prominent +% date, notice of draft status, page numbers, and annotation +% facilities. The three supported annotation macros are: +% \edannote{text} -- anonymous annotation note +% \begin{ednote}{who} -- annotation note attributed +% text to ``who'' +% \end{ednote} +% \HERE -- a marker that can be left +% in the text and easily +% searched for later +% 2. proof: +% +% A galley proof identical to the final copy except for page +% numbering and proof date on the bottom. Annotations are +% removed. +% +% 3. webversion: +% +% A web-publishable version, uses \docstatus{} to indicate +% publication information (where and when paper was published), +% and page numbers. +% +% 4. finalversion: +% +% The final camera-ready-copy (CRC) version of the paper. +% Published in conference proceedings. This doesn't include +% page numbers, annotations, or draft status (Usenix adds +% headers, footers, and page numbers onto the CRC). +% +% If several are used, the last one in this list wins +% + +% +% In addition, the option "endnotes" permits the use of the +% otherwise-disabled, Usenix-deprecated footnote{} command in +% documents. In this case, be sure to include a +% \makeendnotes command at the end of your document or +% the endnotes will not actually appear. +% +% +%%======================================================================= + +% These packages are optional, but useful +\usepackage{epsfig} % postscript figures +\usepackage{url} % \url{} command with good linebreaks + +%\usepackage{geometry} %chgs the margins and layout! +\usepackage{graphicx,calc,ifthen,makeidx,amssymb,makeidx} +\usepackage[tight,footnotesize]{subfigure} + +\graphicspath{{../figures/}} + +%======================================================================= + +\begin{document} + +\bibliographystyle{plain} + +\title{A Hardware Abstraction for a Portability Software Stack} + +\docstatus{Submitted to HotPar 2012} + +% authors. separate groupings with \and. +\author{ +\authname{{Sean Halle \ \ \ \ \ \ \ \ Merten Sach \ \ \ \ \ \ \ \ Ben Juurlink}} +\authaddr{{Technical University Berlin, Germany \ \ \ }} +\authemail{{first.last@tu-berlin.de}} +} + +%\authurl{\url{http://www.aes.tu-berlin.de/menue/home/parameter/en/}} + + +\maketitle + +%======================================================================= + +\begin{abstract} +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. + +In this paper, we show that an abstraction called Virtualized Master-Slave, or VMS \cite{} +satisfies these criteria, and provide recent measurements to support the case. + +\end{abstract} + +%======================================================================= + +\section{Motivation} + + +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. + +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. + +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{}. + +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. + +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. + +The top layer of the software stack is thus the combination of constructs and managed toolchains. +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. + +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. + +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. + + 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. + +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. + +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. + + +\section{Background on PStack and VMS} + +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. + +Describe how VMS fulfills those needs. Details of its interface, details of its impl on multi-core, details of differences on different machines. +Leave as-is for 1x4 and 1x2 -- make entirely different impl for 2x4 and another for 4x10 + +\section{Description of How VMS Fits PStack's Requirements} + +\section{Experimental Setup} + +\section{Results} + +\subsection{Performance Results} +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). + + + +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. + +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. + +%\mbox +% {\subfigure{\includegraphics[width=2.3in, angle = -90] +% {plots_exec_vs_task_size_v3/cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps} +% }} + +\begin{figure}[ht] + \includegraphics[width=2.3in, angle = -90]{plots_exec_vs_task_size_v3/cray1_pthread_8_32_128_512thds__o30000__perfCtrs.eps} + \caption + {$\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. + } +\label{figCray1pthreadAndVthread} +\end{figure} + +foo + +\begin{figure}[ht!] + \includegraphics[width=2.2in, angle = -90]{plots_exec_vs_task_size_v3/xoanon_pthread_vthread_40core_80_160_320_640thds__o30000__perfCtrs.eps} + \caption + {$\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. + } +\label{figCray1pthreadAndVthread} +\end{figure} + + + +\begin{figure}[ht!] + \includegraphics[width=2.2in, angle = -90] + {plots_exec_vs_task_size_v3/vms_vthread_8_32_128_512thds__o30000__perfCtrs.eps} + \caption + {$\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. + } +\label{figCray1pthreadAndVthread} +\end{figure} + + +\begin{figure}[ht!] + \includegraphics[width=2.2in, angle = -90] + {plots_exec_vs_task_size_v3/vms_pthread_8_32_128thds__o30000__perfCtrs.eps} + \caption + {$\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. + } +\label{figCray1pthreadAndVthread} +\end{figure} + + +\subsection{Implementation Time Results} +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. + +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. + + + +\section{Future Work and Conclusion} +A semester long + + + +\section{Planning} + + (6.5" x 9" 10pt 2 col) + +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. + +what benefits performant portability will bring + +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. + +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. + +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. + +what need in bottom, to support eco-system\cite{} + + Many runtime systems are implemented -- for each language, one runtime for each variant of the abstraction. + +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. + +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. + +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. + +Effort has two aspects: in implementing a new language, and in porting existing languages to new hardware. + +Support for upper layers is + +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. + +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. + + + + + + + + + + + + + + + + + + +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. + +Describe how VMS fulfills those needs. Details of its interface, details of its impl on multi-core, details of differences on different machines. +Leave as-is for 1x4 and 1x2 -- make entirely different impl for 2x4 and another for 4x10 + +\section{example text} + +More fascinating text. Features galore, plethora of promises. +\begin{ednote}{BCM} + This ednote is marked as mine. +\end{ednote} + +\section{This is Another Section} + +Some embedded literal typeset code is shown below. Note that line or +page breaks can occur in the middle of code typeset this way. To +avoid such line or page breaks, put the code inside a figure +environment instead. + +\begin{small} +\begin{verbatim} +int wrap_fact(ClientData clientData, + Tcl_Interp *interp, + int argc, char *argv[]) { + int result; + int arg0; + if (argc != 2) { + interp->result = "wrong # args"; + return TCL_ERROR; + } + arg0 = atoi(argv[1]); + result = fact(arg0); + sprintf(interp->result,"%d",result); + return TCL_OK; +} +\end{verbatim} +\end{small} + +Now we're going to cite somebody. Watch for the cite tag. Here it +comes~\cite{heidrich,perl5,otcl}. And a bit later we will cite +another one. Stay tuned~\cite{ousterhout}. + +\section{This Section has Sub-Sections} +\label{sec:secs} + +This text is the introduction to Section~\ref{sec:secs}. + +\begin{figure}[htbp] +\begin{centering} +\epsfig{file=sample.eps, width=2.50in} +\small\itshape +\caption{\small\itshape This figure was created with \texttt{xfig}. If you +want it to span two columns, use \texttt{figure*} in the LaTeX source file.} +\label{fig-sample} +\end{centering} +\end{figure} + +\subsection{First Sub-Section} + +Here's a typical figure reference. Figure~\ref{fig:flowchart} is +centered at the top of the column. It may be scaled. If so, you may +have to tweak the numbers to get the size you want. It may be + hard to do this. + + +\begin{figure}[tb] + \begin{center} +% \psfig{file=figure.eps,scale=0.45} % PostScript figure + \texttt{} % remove this line + \caption{Wonderful flowchart} + \label{fig:flowchart} + \end{center} +\end{figure} + +This text came after the figure, so we'll casually refer to +Figure~\ref{fig:flowchart} as we go on our merry way. + +% you need to work on the workingdraft document right here soon +\HERE + +\subsection{Footnotes} + +For the Usenix style, footnotes are not allowed: endnotes +are, although they are +deprecated.\ifhasendnotes\footnote{Thus, this is not a +footnote}\fi\ Try to avoid both footnotes and endnotes in +technical writing. It is best to use parenthetical or +subordinate clauses instead. If you want endnotes anyhow, +use the "endnotes" documentstyle option and include a +\verb+\makeendnotes+ command at the end of your document. +You will still be whined at. + +\subsection{Tables and Code} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*}[htbp] +\centering +\begin{tabular}{|c||c|c|c|c||c|c|c|c|c|c|l|}\hline + {\bf Cloak} + & \multicolumn{4}{c||}{\textbf{User \texttt{ezk}}} + & \multicolumn{6}{c|}{\textbf{User \texttt{joe}}} + & \multicolumn{1}{c|}{\textbf{Meaning}} +\\\cline{2-11} + {\bf Mask} + &{J1} + &{J2} + &{J3} + &{J4} + &{E5} + &{E6} + &{E7} + &{E8} + &{E9} + &{E10} + &\multicolumn{1}{c|}{\textbf{for files J1--E10}} +\\\hline + {+000} + & + & + & + & + & + & + & + & + & + & + & Show files to owners only +\\\hline + {+007} + & + & + &{A} + & + & + & + &{A} + &{A} + & + & + & Show files to owners and others +\\\hline + {+070} + & + &{A} + &{A} + & + &{A} + & + &{A} + &{A} + & + & + & Show files to owners and group members +\\\hline +\end{tabular} +\small\itshape +\caption{\small\itshape Here is a complex table that spans two columns. It + shows how also to straddle the table cells.} +\label{tab-sample} +\end{table*} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +It can get tricky typesetting Tcl and C code in LaTeX because they +share a lot of mystical feelings about certain magic characters. You +will have to do a lot of escaping to typeset curly braces and percent +signs, for example, like this: ``The \verb@%module@ directive sets +the name of the initialization function. This is optional, but is +recommended if building a Tcl 7.5 module. Everything inside the +\verb@%{@, \verb@%}@ block is copied directly into the +output. allowing the inclusion of header files and additional C code.'' + +Sometimes you want to really call attention to a piece of text. You +can center it in the column like this: +\begin{center} +\verb@_1008e614_Vector_p@ +\end{center} +and people will really notice it. + +Now this is an ingenious way to get a forced space. \texttt{Real~$*$} +and \texttt{double~$*$} are equivalent. + + +\subsection{Lists} + +You can make lists using LaTeX's listing environments +(\texttt{itemize}, \texttt{enumerate}, and \texttt{description}). +These environments can be nested (e.g. an itemized list can be an +element of an enumerated list). + +An \texttt{itemize} list looks like this: +\begin{itemize} +\item The map structure defines an address space. +\item The page structure manages a page of physical memory. +\end{itemize} + +An \texttt{enumerate} list is like an itemized list, except that it is +numbered: +\begin{enumerate} +\item The map structure defines an address space. +\item The page structure manages a page of physical memory. +\end{enumerate} + +A \texttt{description} list uses words rather bullets or numbers: +\begin{description} +\item[\textbf{map structure:}] defines an address space. +\item[\textbf{page structure:}] manages a page of physical memory. +\end{description} + +\subsection{Last Sub-Section} + +Well, it's getting boring isn't it. This is the last subsection +before we wrap it up. + +\section{Acknowledgments} + +A polite author always includes acknowledgments. You +should thank everyone, +especially those who funded the work. + +\section{Availability} + +It is great news if this section can say that your +app, WonderfulApp is free +software, available via anonymous FTP from +\url{ftp://ftp.dom/pub/myname/Wonderful}. Also, it's even better +when you can write that information is also available on the Wonderful +homepage at \url{http://www.dom/~myname/SWIG}. + +Now we get serious and fill in those references. Remember you will +have to run latex twice on the document in order to resolve those +cite tags you met earlier. This is where they get resolved. +We've preserved some real ones in addition to the template-speak. +After the bibliography you are DONE. + +% This is where the endnotes (see the ``footnote'' above) +% are filled in. Use this only if you have endnotes. +\ifhasendnotes\makeendnotes\fi + +\begin{thebibliography}{99} + +\bibitem{beazley} D.~M.~Beazley and P.~S.~Lomdahl, +\emph{Message-Passing Multi-Cell Molecular Dynamics on the Connection +Machine 5}, Parall.~Comp.~ 20 (1994) p. 173-195. + +\bibitem{CitePetName} A.~N.~Author and A.~N.~Other, +\emph{Title of Riveting Article}, JournalName VolNum (Year) p. Start-End + +\bibitem{embed} Embedded Tk, \url{ftp://ftp.vnet.net/pub/users/drh/ET.html} + +\bibitem{expect} Don Libes, \emph{Exploring Expect}, O'Reilly \& Associates, Inc. (1995). + +\bibitem{heidrich} Wolfgang Heidrich and Philipp Slusallek, \emph{ +Automatic Generation of Tcl Bindings for C and C++ Libraries.}, +USENIX 3rd Annual Tcl/Tk Workshop (1995). + +\bibitem{ousterhout} John K. Ousterhout, \emph{Tcl and the Tk Toolkit}, Addison-Wesley Publishers (1994). + +\bibitem{perl5} Perl5 Programmers reference, +\url{http://www.metronet.com/perlinfo/doc}, (1996). + +\bibitem{otcl} D. Wetherall, C. J. Lindblad, ``Extending Tcl for +Dynamic Object-Oriented Programming'', Proceedings of the USENIX 3rd Annual Tcl/Tk Workshop (1995). + +\end{thebibliography} + +\end{document} + +% Revision History: +% designed specifically to meet requirements of +% TCL97 committee. +% originally a template for producing IEEE-format articles using LaTeX. +% written by Matthew Ward, CS Department, Worcester Polytechnic Institute. +% adapted by David Beazley for his excellent SWIG paper in Proceedings, +% Tcl 96 +% turned into a smartass generic template by De Clarke, with thanks to +% both the above pioneers +% use at your own risk. Complaints to /dev/null. +% make it two column with no page numbering, default is 10 point + +% Munged by Fred Douglis 10/97 to separate +% the .sty file from the LaTeX source template, so that people can +% more easily include the .sty file into an existing document. Also +% changed to more closely follow the style guidelines as represented +% by the Word sample file. +% This version uses the latex2e styles, not the very ancient 2.09 stuff. +% + +% Revised July--October 2002 by Bart Massey, Chuck Cranor, Erez +% Zadok and the FREENIX Track folks to ``be easier to use and work +% better''. Hah. Major changes include transformation into a +% latex2e class file, better support for drafts, and some +% layout improvements. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% for Ispell: +% LocalWords: workingdraft BCM ednote SubSections xfig SubSection joe diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/url.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/url.sty Sat Jan 21 20:51:58 2012 -0800 @@ -0,0 +1,325 @@ +% url.sty ver 1.4 02-Mar-1999 Donald Arseneau asnd@triumf.ca +% Copyright 1996-1999 Donald Arseneau, Vancouver, Canada. +% This program can be used, distributed, and modified under the terms +% of the LaTeX Project Public License. +% +% A form of \verb that allows linebreaks at certain characters or +% combinations of characters, accepts reconfiguration, and can usually +% be used in the argument to another command. It is intended for email +% addresses, hypertext links, directories/paths, etc., which normally +% have no spaces. The font may be selected using the \urlstyle command, +% and new url-like commands can be defined using \urldef. +% +% Usage: Conditions: +% \url{ } If the argument contains any "%", "#", or "^^", or ends with +% "\", it can't be used in the argument to another command. +% The argument must not contain unbalanced braces. +% \url| | ...where "|" is any character not used in the argument and not +% "{" or a space. The same restrictions as above except that the +% argument may contain unbalanced braces. +% \xyz for "\xyz" a defined-url; this can be used anywhere, no matter +% what characters it contains. +% +% See further instructions after "\endinput" +% +\def\Url@ttdo{% style assignments for tt fonts or T1 encoding +\def\UrlBreaks{\do\.\do\@\do\\\do\/\do\!\do\_\do\|\do\%\do\;\do\>\do\]% + \do\)\do\,\do\?\do\'\do\+\do\=}% +\def\UrlBigBreaks{\do\:\do@url@hyp}% +\def\UrlNoBreaks{\do\(\do\[\do\{\do\<}% (unnecessary) +\def\UrlSpecials{\do\ {\ }}% +\def\UrlOrds{\do\*\do\-\do\~}% any ordinary characters that aren't usually +} +\def\Url@do{% style assignments for OT1 fonts except tt +\def\UrlBreaks{\do\.\do\@\do\/\do\!\do\%\do\;\do\]\do\)\do\,\do\?\do\+\do\=}% +\def\UrlBigBreaks{\do\:\do@url@hyp}% +\def\UrlNoBreaks{\do\(\do\[\do\{}% prevents breaks after *next* character +\def\UrlSpecials{\do\<{\langle}\do\>{\mathbin{\rangle}}\do\_{\_% + \penalty\@m}\do\|{\mid}\do\{{\lbrace}\do\}{\mathbin{\rbrace}}\do + \\{\mathbin{\backslash}}\do\~{\raise.6ex\hbox{\m@th$\scriptstyle\sim$}}\do + \ {\ }}% +\def\UrlOrds{\do\'\do\"\do\-}% +} +\def\url@ttstyle{% +\@ifundefined{selectfont}{\def\UrlFont{\tt}}{\def\UrlFont{\ttfamily}}\Url@ttdo +} +\def\url@rmstyle{% +\@ifundefined{selectfont}{\def\UrlFont{\rm}}{\def\UrlFont{\rmfamily}}\Url@do +} +\def\url@sfstyle{% +\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\sffamily}}\Url@do +} +\def\url@samestyle{\ifdim\fontdimen\thr@@\font=\z@ \url@ttstyle \else + \url@rmstyle \fi \def\UrlFont{}} + +\@ifundefined{strip@prefix}{\def\strip@prefix#1>{}}{} +\@ifundefined{verbatim@nolig@list}{\def\verbatim@nolig@list{\do\`}}{} + +\def\Url{% + \begingroup \let\url@moving\relax\relax \endgroup + \ifmmode\@nomatherr$\fi + \UrlFont $\fam\z@ \textfont\z@\font + \let\do\@makeother \dospecials % verbatim catcodes + \catcode`{\@ne \catcode`}\tw@ \catcode`\ 10 % except braces and spaces + \medmuskip0mu \thickmuskip\medmuskip \thinmuskip\medmuskip + \@tempcnta\fam\multiply\@tempcnta\@cclvi + \let\do\set@mathcode \UrlOrds % ordinary characters that were special + \advance\@tempcnta 8192 \UrlBreaks % bin + \advance\@tempcnta 4096 \UrlBigBreaks % rel + \advance\@tempcnta 4096 \UrlNoBreaks % open + \let\do\set@mathact \UrlSpecials % active + \let\do\set@mathnolig \verbatim@nolig@list % prevent ligatures + \@ifnextchar\bgroup\Url@z\Url@y} + +\def\Url@y#1{\catcode`{11 \catcode`}11 + \def\@tempa##1#1{\Url@z{##1}}\@tempa} +\def\Url@z#1{\def\@tempa{#1}\expandafter\expandafter\expandafter\Url@Hook + \expandafter\strip@prefix\meaning\@tempa\UrlRight\m@th$\endgroup} +\def\Url@Hook{\UrlLeft} +\let\UrlRight\@empty +\let\UrlLeft\@empty + +\def\set@mathcode#1{\count@`#1\advance\count@\@tempcnta\mathcode`#1\count@} +\def\set@mathact#1#2{\mathcode`#132768 \lccode`\~`#1\lowercase{\def~{#2}}} +\def\set@mathnolig#1{\ifnum\mathcode`#1<32768 + \lccode`\~`#1\lowercase{\edef~{\mathchar\number\mathcode`#1_{\/}}}% + \mathcode`#132768 \fi} + +\def\urldef#1#2{\begingroup \setbox\z@\hbox\bgroup + \def\Url@z{\Url@def{#1}{#2}}#2} +\expandafter\ifx\csname DeclareRobustCommand\endcsname\relax + \def\Url@def#1#2#3{\m@th$\endgroup\egroup\endgroup + \def#1{#2{#3}}} +\else + \def\Url@def#1#2#3{\m@th$\endgroup\egroup\endgroup + \DeclareRobustCommand{#1}{#2{#3}}} +\fi + +\def\urlstyle#1{\csname url@#1style\endcsname} + +% Sample (and default) configuration: +% +\newcommand\url{\begingroup \Url} +% +% picTeX defines \path, so declare it optionally: +\@ifundefined{path}{\newcommand\path{\begingroup \urlstyle{tt}\Url}}{} +% +% too many styles define \email like \address, so I will not define it. +% \newcommand\email{\begingroup \urlstyle{rm}\Url} + +% Process LaTeX \package options +% +\urlstyle{tt} +\let\Url@sppen\@M +\def\do@url@hyp{}% by default, no breaks after hyphens + +\@ifundefined{ProvidesPackage}{}{ + \ProvidesPackage{url}[1999/03/02 \space ver 1.4 \space + Verb mode for urls, email addresses, and file names] + \DeclareOption{hyphens}{\def\do@url@hyp{\do\-}}% allow breaks after hyphens + \DeclareOption{obeyspaces}{\let\Url@Hook\relax}% a flag for later + \DeclareOption{spaces}{\let\Url@sppen\relpenalty} + \DeclareOption{T1}{\let\Url@do\Url@ttdo} + \ProcessOptions +\ifx\Url@Hook\relax % [obeyspaces] was declared + \def\Url@Hook#1\UrlRight\m@th{\edef\@tempa{\noexpand\UrlLeft + \Url@retain#1\Url@nosp\, }\@tempa\UrlRight\m@th} + \def\Url@retain#1 {#1\penalty\Url@sppen\ \Url@retain} + \def\Url@nosp\,#1\Url@retain{} +\fi +} + +\edef\url@moving{\csname Url Error\endcsname} +\expandafter\edef\url@moving + {\csname url used in a moving argument.\endcsname} +\expandafter\expandafter\expandafter \let \url@moving\undefined + +\endinput +% +% url.sty ver 1.4 02-Mar-1999 Donald Arseneau asnd@reg.triumf.ca +% +% This package defines "\url", a form of "\verb" that allows linebreaks, +% and can often be used in the argument to another command. It can be +% configured to print in different formats, and is particularly useful for +% hypertext links, email addresses, directories/paths, etc. The font may +% be selected using the "\urlstyle" command and pre-defined text can be +% stored with the "\urldef" command. New url-like commands can be defined, +% and a "\path" command is provided this way. +% +% Usage: Conditions: +% \url{ } If the argument contains any "%", "#", or "^^", or ends with +% "\", it can't be used in the argument to another command. +% The argument must not contain unbalanced braces. +% \url| | ...where "|" is any character not used in the argument and not +% "{" or a space. The same restrictions as above except that the +% argument may contain unbalanced braces. +% \xyz for "\xyz" a defined-url; this can be used anywhere, no matter +% what characters it contains. +% +% The "\url" command is fragile, and its argument is likely to be very +% fragile, but a defined-url is robust. +% +% Package Option: obeyspaces +% Ordinarily, all spaces are ignored in the url-text. The "[obeyspaces]" +% option allows spaces, but may introduce spurious spaces when a url +% containing "\" characters is given in the argument to another command. +% So if you need to obey spaces you can say "\usepackage[obeyspaces]{url}", +% and if you need both spaces and backslashes, use a `defined-url' for +% anything with "\". +% +% Package Option: hyphens +% Ordinarily, breaks are not allowed after "-" characters because this +% leads to confusion. (Is the "-" part of the address or just a hyphen?) +% The package option "[hyphens]" allows breaks after explicit hyphen +% characters. The "\url" command will *never ever* hyphenate words. +% +% Package Option: spaces +% Likewise, breaks are not usually allowed after spaces under the +% "[obeyspaces]" option, but giving the options "[obeyspaces,spaces]" +% will allow breaks at those spaces. +% +% Package Option: T1 +% This signifies that you will be using T1-encoded fonts which contain +% some characters missing from most older (OT1) encoded TeX fonts. This +% changes the default definition for "\urlstyle{rm}". +% +% Defining a defined-url: +% Take for example the email address "myself%node@gateway.net" which could +% not be given (using "\url" or "\verb") in a caption or parbox due to the +% percent sign. This address can be predefined with +% \urldef{\myself}\url{myself%node@gateway.net} or +% \urldef{\myself}\url|myself%node@gateway.net| +% and then you may use "\myself" instead of "\url{myself%node@gateway.net}" +% in an argument, and even in a moving argument like a caption because a +% defined-url is robust. +% +% Style: +% You can switch the style of printing using "\urlstyle{tt}", where "tt" +% can be any defined style. The pre-defined styles are "tt", "rm", "sf", +% and "same" which all allow the same linebreaks but different fonts -- +% the first three select a specific font and the "same" style uses the +% current text font. You can define your own styles with different fonts +% and/or line-breaking by following the explanations below. The "\url" +% command follows whatever the currently-set style dictates. +% +% Alternate commands: +% It may be desireable to have different things treated differently, each +% in a predefined style; e.g., if you want directory paths to always be +% in tt and email addresses to be rm, then you would define new url-like +% commands as follows: +% +% \newcommand\email{\begingroup \urlstyle{rm}\Url} +% \newcommand\directory{\begingroup \urlstyle{tt}\Url} +% +% You must follow this format closely, and NOTE that the final command is +% "\Url", not "\url". In fact, the "\directory" example is exactly the +% "\path" definition which is pre-defined in the package. If you look +% above, you will see that "\url" is defined with +% \newcommand\url{\begingroup \Url} +% I.e., using whatever url-style has been selected. +% +% You can make a defined-url for these other styles, using the usual +% "\urldef" command as in this example: +% +% \urldef{\myself}{\email}{myself%node.domain@gateway.net} +% +% which makes "\myself" act like "\email{myself%node.domain@gateway.net}", +% if the "\email" command is defined as above. The "\myself" command +% would then be robust. +% +% Defining styles: +% Before describing how to customize the printing style, it is best to +% mention something about the unusual implementation of "\url". Although +% the material is textual in nature, and the font specification required +% is a text-font command, the text is actually typeset in *math* mode. +% This allows the context-sensitive linebreaking, but also accounts for +% the default behavior of ignoring spaces. Now on to defining styles. +% +% To change the font or the list of characters that allow linebreaks, you +% could redefine the commands "\UrlFont", "\UrlBreaks", "\UrlSpecials" etc. +% directly in the document, but it is better to define a new `url-style' +% (following the example of "\url@ttstyle" and "\url@rmstyle") which defines +% all of "\UrlBigbreaks", "\UrlNoBreaks", "\UrlBreaks", "\UrlSpecials", and +% "\UrlFont". +% +% Changing font: +% The "\UrlFont" command selects the font. The definition of "\UrlFont" +% done by the pre-defined styles varies to cope with a variety of LaTeX +% font selection schemes, but it could be as simple as "\def\UrlFont{\tt}". +% Depending on the font selected, some characters may need to be defined +% in the "\UrlSpecials" list because many fonts don't contain all the +% standard input characters. +% +% Changing linebreaks: +% The list of characters that allow line-breaks is given by "\UrlBreaks" +% and "\UrlBigBreaks", which have the format "\do\c" for character "c". +% The differences are that `BigBreaks' have a lower penalty and have +% different breakpoints when in sequence (as in "http://"): `BigBreaks' +% are treated as mathrels while `Breaks' are mathbins (see The TeXbook, +% p.170). In particular, a series of `BigBreak' characters will break at +% the end and only at the end; a series of `Break' characters will break +% after the first and after every following *pair*; there will be no +% break after a `Break' character if a `BigBreak' follows. In the case +% of "http://" it doesn't matter whether ":" is a `Break' or `BigBreak' -- +% the breaks are the same in either case; but for DECnet nodes with "::" +% it is important to prevent breaks *between* the colons, and that is why +% colons are `BigBreaks'. +% +% It is possible for characters to prevent breaks after the next following +% character (I use this for parentheses). Specify these in "\UrlNoBreaks". +% +% You can do arbitrarily complex things with characters by making them +% active in math mode (mathcode hex-8000) and specifying the definition(s) +% in "\UrlSpecials". This is used in the rm and sf styles for OT1 font +% encoding to handle several characters that are not present in those +% computer-modern style fonts. See the definition of "\Url@do", which +% is used by both "\url@rmstyle" and "\url@sfstyle"; it handles missing +% characters via "\UrlSpecials". The nominal format for setting each +% special character "c" is: "\do\c{}", but you can include +% other definitions too. +% +% +% If all this sounds confusing ... well, it is! But I hope you won't need +% to redefine breakpoints -- the default assignments seem to work well for +% a wide variety of applications. If you do need to make changes, you can +% test for breakpoints using regular math mode and the characters "+=(a". +% +% Yet more flexibility: +% You can also customize the verbatim text by defining "\UrlRight" and/or +% "\UrlLeft", e.g., for ISO formatting of urls surrounded by "< >", define +% +% \renewcommand\url{\begingroup \def\UrlLeft{}% +% \urlstyle{tt}\Url} +% +% The meanings of "\UrlLeft" and "\UrlRight" are *not* reproduced verbatim. +% This lets you use formatting commands there, but you must be careful not +% to use TeX's special characters ("\^_%~#$&{}" etc.) improperly. +% You can also define "\UrlLeft" to reprocess the verbatim text, but the +% format of the definition is special: +% +% \def\UrlLeft#1\UrlRight{ ... do things with #1 ... } +% +% Yes, that is "#1" followed by "\UrlRight" then the definition. For +% example, to put a hyperTeX hypertext link in the DVI file: +% +% \def\UrlLeft#1\UrlRight{\special{html:}#1\special{html:}} +% +% Using this technique, url.sty can provide a convenient interface for +% performing various operations on verbatim text. You don't even need +% to print out the argument! For greatest efficiency in such obscure +% applications, you can define a null url-style where all the lists like +% "\UrlBreaks" are empty. +% +% Revision History: +% ver 1.1 6-Feb-1996: +% Fix hyphens that wouldn't break and ligatures that weren't suppressed. +% ver 1.2 19-Oct-1996: +% Package option for T1 encoding; Hooks: "\UrlLeft" and "\UrlRight". +% ver 1.3 21-Jul-1997: +% Prohibit spaces as delimiter characters; change ascii tilde in OT1. +% ver 1.4 02-Mar-1999 +% LaTeX license; moving-argument-error +% The End + +Test file integrity: ASCII 32-57, 58-126: !"#$%&'()*+,-./0123456789 +:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/usetex-v1-anon.cls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/usetex-v1-anon.cls Sat Jan 21 20:51:58 2012 -0800 @@ -0,0 +1,363 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{usetex-v1-anon}[2002/10/31 v1.2 usetex Usenix article class] + +% usetex-v1.cls - to be used with LaTeX2e for Usenix articles +% +% To use this style file, do this: +% +% \documentclass{usetex-v1} +% +% The following definitions are modifications of standard article.cls +% definitions, arranged to do a better job of matching the Usenix +% guidelines. and make for convenient Usenix paper writing +% +% Choose the appropriate option: +% +% 1. workingdraft: +% +% For initial submission and shepherding. Features prominent +% date, notice of draft status, page numbers, and annotation +% facilities. +% +% 2. proof: +% +% A galley proof identical to the final copy except for page +% numbering and proof date on the bottom. Annotations are +% removed. +% +% 3. webversion: +% +% A web-publishable version, uses \docstatus{} to indicate +% publication information (where and when paper was published), +% and page numbers. +% +% 4. finalversion: +% +% The final camera-ready-copy (CRC) version of the paper. +% Published in conference proceedings. This doesn't include +% page numbers, annotations, or draft status (Usenix adds +% headers, footers, and page numbers onto the CRC). +% +% If several are used, the last one in this list wins +% + +% +% In addition, the option "endnotes" permits the use of the +% otherwise-disabled, Usenix-deprecated footnote{} command in +% documents. In this case, be sure to include a +% \makeendnotes command at the end of your document or +% the endnotes will not actually appear. +% + +\newif\if@draftcopy \newif\ifworkingdraft +\DeclareOption{workingdraft}{\workingdrafttrue\@draftcopytrue} +\newif\ifproof \DeclareOption{proof}{\prooftrue\@draftcopytrue} +\newif\ifwebversion +\DeclareOption{webversion}{\prooftrue\webversiontrue\@draftcopytrue} +\DeclareOption{finalversion}{} +\newif\ifhasendnotes +\DeclareOption{endnotes}{\hasendnotestrue} + +% pass all other options to the article class +\DeclareOption*{% + \PassOptionsToClass{\CurrentOption}{article}% +} + +% actually process the options +\ProcessOptions + +% usetex is based on article +\LoadClass[twocolumn]{article} + +% Footnotes are not currently allowed, but +% endnotes (while a bad idea) are. +\ifhasendnotes + \RequirePackage{endnotes} +\fi + +% save any provided document status information +\def\@docstatus{} +\def\docstatus#1{\gdef\@docstatus{#1}} + +\ifworkingdraft + + % formatting helper for draft notes + \newcommand{\@noteleader[1]}{% + {\marginpar{\framebox{\scriptsize\textbf{#1}}}}% + \bfseries\itshape + } + + % put a small anonymous editing note in the draft copy + \newcommand{\edannote}[1]{{\@noteleader[note] (#1)}} + + % put a small attributed editing note in the draft copy + \newcommand{\edatnote}[2]{{\@noteleader[#1] #2}} + + % put an attributed editing note paragraph in the draft copy + \newenvironment{ednote}[1] + {\newcommand{\who}{#1}\@noteleader[\who]} + + % mark a spot where work has been left off for later + \newcommand{\HERE}{% + {\mbox{}\marginpar{\framebox{\textbf{here}}}}{\bf\ldots}} + +\else + + % dummy versions of editing commands to produce warnings + + \newcommand{\edannote}[1]{\@latex@warning + {Leftover edannote command in final version ignored}} + + \newcommand{\edatnote}[1]{\@latex@warning + {Leftover edatnote command in final version ignored}} + + \newsavebox{\@discard} + \newenvironment{ednote}[1]{\@latex@warning + {Leftover ednote environment in final version ignored}% + \begin{lrbox}{\@discard}}{\end{lrbox}} + + \newcommand{\HERE}{\@latex@warning + {Leftover HERE command in final version ignored}} + +\fi + +% set up the footers appropriately +\def\@setfoot{% + \ifwebversion + % webversions get whatever status the author says + \gdef\@evenfoot{\@docstatus \hfil \thepage}% + \else + % all other drafts get the standard draft footer + \gdef\@evenfoot{\textbf{Draft:} \@draftdate\hfil \textbf{Page:} \thepage}% + \fi + \gdef\@oddfoot{\@evenfoot}% +} + +% +% Usenix wants no page numbers for submitted papers, so that +% they can number them themselves. Drafts should have +% numbered pages, so they can be edited. +% +\if@draftcopy + % Compute a date and time for the draft for use + % either in \@setfoot (proof) or in \maketitle (workingdraft) + % + % Time code adapted from custom-bib/makebst.tex + % Copyright 1993-1999 Patrick W Daly + % Max-Planck-Institut f\"ur Aeronomie + % E-mail: daly@linmp.mpg.de + \newcount\hour + \hour=\time + \divide\hour by 60 + \newcount\minute + \minute=\hour + \multiply\minute by 60 + \advance\minute by -\time + \multiply\minute by -1 + \newcommand{\@draftdate} + {{\the\year/\/\two@digits{\the\month}/\/\two@digits{\the\day}% + ~\two@digits{\the\hour}:\two@digits{\the\minute}}} + \pagestyle{plain} + \@setfoot +\else + \pagestyle{empty} +\fi + +% Times-Roman font is nice if you can get it (requires NFSS, +% which is in latex2e). +\usepackage{times} + +% endnote support, as described at +% http://www.lyx.org/help/footnotes.php +\ifhasendnotes + \typeout + {Warning: endnotes support is deprecated (see documentation for details)} + \let\footnote=\endnote + \def\enoteformat{\rightskip\z@ \leftskip\z@ + \parindent=0pt\parskip=\baselineskip + \@theenmark. } + \newcommand{\makeendnotes}{ + \begingroup + \def\enotesize{\normalsize} + \theendnotes + \endgroup + } +\else + \long\gdef\footnote{\@latex@error + {Deprecated footnote command (see documentation for details)}} + \long\gdef\endnote{\@latex@error + {Deprecated endnote command (see documentation for details)}} +\fi + +% +% Usenix margins +% Gives active areas of 6.45" x 9.0" +% +\setlength{\textheight}{9.0in} +\setlength{\columnsep}{0.25in} +\setlength{\textwidth}{6.45in} +%\setlength{\footskip}{0.0in} +%\setlength{\footheight}{0.0in} +\setlength{\topmargin}{0.0in} +\setlength{\headheight}{0.0in} +\setlength{\headsep}{0.0in} +\setlength{\evensidemargin}{0.0in} +\setlength{\oddsidemargin}{0.0in} +\setlength{\marginparsep}{1.5em} +\setlength{\marginparwidth}{0.35in} + +% The standard maketitle insists on +% messing with the style of the first page. +% Thus, we will wrap maketitle with code to put +% things right again. +\let \save@maketitle=\maketitle +\def\maketitle{ + \save@maketitle + \if@draftcopy + \@specialpagefalse + \else + \thispagestyle{empty} + \fi +} + +% +% Usenix titles are in 14-point bold type, with no date, and with no +% change in the empty page headers. The author section is +% 12 point roman and italic: see below. +% +\def\@maketitle{% + \newpage + \null +% \vskip 3ex% + \begin{center}% +% \let \footnote \thanks + {\Large \bf \@title \par}% % use 14 pt bold +% \vskip 2ex% + {\large +% \lineskip .5ex% +% \begin{tabular}[t]{c}% +% \@author +% \end{tabular}\par + }% + \ifworkingdraft + \vskip 0.5ex + \textbf{Draft of \@draftdate} + \vskip 0.5ex + \fi + \ifwebversion + \vskip 0.5ex + \textit{Authors and affiliation elided for review.} + \vskip 0.5ex + \fi + \end{center}% + \par +% \vskip 2ex +} + +% +% The author section +% should have names in Roman, address in +% italic, e-mail/http in typewriter. +% This is enforced by use of these macros +% +\def\authname#1{{#1}\\} +\def\authaddr#1{\itshape{#1}\\} +\def\authurl#1{{\normalsize #1}\\} + +% +% The abstract is preceded by a 12-pt bold centered heading +% +\def\abstract{\begin{center}% + {\large\bf \abstractname\vspace{-.5ex}\vspace{\z@}}% + \end{center}} +\def\endabstract{} + +% +% Main section titles are 12-pt bold. Lower divisions can +% be same size or smaller: we choose same. +% Main section leading is tight. Subsection leading is even +% slightly tighter. All lower divisions are formatted like subsections. +% +\newcommand\@sectionfont{\reset@font\large\bf} +\newlength\@sectionaboveskip +\setlength\@sectionaboveskip{-0.7\baselineskip + plus -0.1\baselineskip + minus -0.1\baselineskip} +\newlength\@sectionbelowskip +\setlength\@sectionbelowskip{0.3\baselineskip + plus 0.1\baselineskip} +\newlength\@subsectionaboveskip +\setlength\@subsectionaboveskip{-0.5\baselineskip + plus -0.1\baselineskip} +\renewcommand\section{\@startsection {section}{1}{\z@}% + {\@sectionaboveskip}{\@sectionbelowskip}{\@sectionfont}} +\newcommand\@gensubsection[2]{\@startsection {#1}{#2}{\z@}% + {\@subsectionaboveskip}{\@sectionbelowskip}{\@sectionfont}} +\renewcommand\subsection{\@gensubsection{subsection}{2}} +\renewcommand\subsubsection{\@gensubsection{subsubsection}{3}} +%\renewcommand\paragraph{\@gensubsection{paragraph}{4}} +%\renewcommand\subparagraph{\@gensubsection{subparagaph}{5}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {1.25ex \@plus 0.2ex \@minus 0.2ex}% + {-1.0em}% + {\normalfont\normalsize\bfseries}} +\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {1.25ex \@plus 0.2ex \@minus 0.2ex}% + {-1.0em}% + {\normalfont\normalsize\bfseries}} + +% List items need to be tightened up. +% There must be a better way than copying +% the definitions to modify the list environment... +\def\@itemspacings{\listparindent=\parindent + \parsep=0pt\topsep=0.3\baselineskip\partopsep=0pt\itemsep=0pt} +% now make envs use itemspacings +\def\itemize{% + \ifnum \@itemdepth >\thr@@\@toodeep\else + \advance\@itemdepth\@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \expandafter + \list + \csname\@itemitem\endcsname + {\@itemspacings\def\makelabel##1{\hss\llap{##1}}}% + \fi} +\def\enumerate{% + \ifnum \@enumdepth >\thr@@\@toodeep\else + \advance\@enumdepth\@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter + \list + \csname label\@enumctr\endcsname + {\@itemspacings\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}% + \fi} +\def\description{% + \list{}{\labelwidth\z@ \itemindent-\leftmargin + \@itemspacings\let\makelabel\descriptionlabel}} + +% Bibliography items need to be tightened up. +% Again, there must be a better way than copying +% the definitions to modify the list environment... +\def\thebibliography#1% + {\section*{\refname}% + \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}% + \parsep=0pt}% pack entries + \sloppy + \hbadness=8000% mostly don't whine about bibliography fmt + \clubpenalty=4000% + \@clubpenalty=\clubpenalty + \widowpenalty=4000% + \sfcode`\.\@m} + +% Floating bodies need to be tightened up. +\setlength\textfloatsep{14pt plus 2pt} +\setlength\dbltextfloatsep{\textfloatsep} +\setlength\intextsep{0.8\textfloatsep} +\setlength\abovecaptionskip{8pt minus 2pt} diff -r dae06344c175 -r 01aefc2be990 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/usetex-v1.cls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/usetex-v1.cls Sat Jan 21 20:51:58 2012 -0800 @@ -0,0 +1,357 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{usetex-v1}[2002/10/31 v1.2 usetex Usenix article class] + +% usetex-v1.cls - to be used with LaTeX2e for Usenix articles +% +% To use this style file, do this: +% +% \documentclass{usetex-v1} +% +% The following definitions are modifications of standard article.cls +% definitions, arranged to do a better job of matching the Usenix +% guidelines. and make for convenient Usenix paper writing +% +% Choose the appropriate option: +% +% 1. workingdraft: +% +% For initial submission and shepherding. Features prominent +% date, notice of draft status, page numbers, and annotation +% facilities. +% +% 2. proof: +% +% A galley proof identical to the final copy except for page +% numbering and proof date on the bottom. Annotations are +% removed. +% +% 3. webversion: +% +% A web-publishable version, uses \docstatus{} to indicate +% publication information (where and when paper was published), +% and page numbers. +% +% 4. finalversion: +% +% The final camera-ready-copy (CRC) version of the paper. +% Published in conference proceedings. This doesn't include +% page numbers, annotations, or draft status (Usenix adds +% headers, footers, and page numbers onto the CRC). +% +% If several are used, the last one in this list wins +% + +% +% In addition, the option "endnotes" permits the use of the +% otherwise-disabled, Usenix-deprecated footnote{} command in +% documents. In this case, be sure to include a +% \makeendnotes command at the end of your document or +% the endnotes will not actually appear. +% + +\newif\if@draftcopy \newif\ifworkingdraft +\DeclareOption{workingdraft}{\workingdrafttrue\@draftcopytrue} +\newif\ifproof \DeclareOption{proof}{\prooftrue\@draftcopytrue} +\newif\ifwebversion +\DeclareOption{webversion}{\prooftrue\webversiontrue\@draftcopytrue} +\DeclareOption{finalversion}{} +\newif\ifhasendnotes +\DeclareOption{endnotes}{\hasendnotestrue} + +% pass all other options to the article class +\DeclareOption*{% + \PassOptionsToClass{\CurrentOption}{article}% +} + +% actually process the options +\ProcessOptions + +% usetex is based on article +\LoadClass[twocolumn]{article} + +% Footnotes are not currently allowed, but +% endnotes (while a bad idea) are. +\ifhasendnotes + \RequirePackage{endnotes} +\fi + +% save any provided document status information +\def\@docstatus{} +\def\docstatus#1{\gdef\@docstatus{#1}} + +\ifworkingdraft + + % formatting helper for draft notes + \newcommand{\@noteleader[1]}{% + {\marginpar{\framebox{\scriptsize\textbf{#1}}}}% + \bfseries\itshape + } + + % put a small anonymous editing note in the draft copy + \newcommand{\edannote}[1]{{\@noteleader[note] (#1)}} + + % put a small attributed editing note in the draft copy + \newcommand{\edatnote}[2]{{\@noteleader[#1] #2}} + + % put an attributed editing note paragraph in the draft copy + \newenvironment{ednote}[1] + {\newcommand{\who}{#1}\@noteleader[\who]} + + % mark a spot where work has been left off for later + \newcommand{\HERE}{% + {\mbox{}\marginpar{\framebox{\textbf{here}}}}{\bf\ldots}} + +\else + + % dummy versions of editing commands to produce warnings + + \newcommand{\edannote}[1]{\@latex@warning + {Leftover edannote command in final version ignored}} + + \newcommand{\edatnote}[1]{\@latex@warning + {Leftover edatnote command in final version ignored}} + + \newsavebox{\@discard} + \newenvironment{ednote}[1]{\@latex@warning + {Leftover ednote environment in final version ignored}% + \begin{lrbox}{\@discard}}{\end{lrbox}} + + \newcommand{\HERE}{\@latex@warning + {Leftover HERE command in final version ignored}} + +\fi + +% set up the footers appropriately +\def\@setfoot{% + \ifwebversion + % webversions get whatever status the author says + \gdef\@evenfoot{\@docstatus \hfil \thepage}% + \else + % all other drafts get the standard draft footer + \gdef\@evenfoot{\textbf{Draft:} \@draftdate\hfil \textbf{Page:} \thepage}% + \fi + \gdef\@oddfoot{\@evenfoot}% +} + +% +% Usenix wants no page numbers for submitted papers, so that +% they can number them themselves. Drafts should have +% numbered pages, so they can be edited. +% +\if@draftcopy + % Compute a date and time for the draft for use + % either in \@setfoot (proof) or in \maketitle (workingdraft) + % + % Time code adapted from custom-bib/makebst.tex + % Copyright 1993-1999 Patrick W Daly + % Max-Planck-Institut f\"ur Aeronomie + % E-mail: daly@linmp.mpg.de + \newcount\hour + \hour=\time + \divide\hour by 60 + \newcount\minute + \minute=\hour + \multiply\minute by 60 + \advance\minute by -\time + \multiply\minute by -1 + \newcommand{\@draftdate} + {{\the\year/\/\two@digits{\the\month}/\/\two@digits{\the\day}% + ~\two@digits{\the\hour}:\two@digits{\the\minute}}} + \pagestyle{plain} + \@setfoot +\else + \pagestyle{empty} +\fi + +% Times-Roman font is nice if you can get it (requires NFSS, +% which is in latex2e). +\usepackage{times} + +% endnote support, as described at +% http://www.lyx.org/help/footnotes.php +\ifhasendnotes + \typeout + {Warning: endnotes support is deprecated (see documentation for details)} + \let\footnote=\endnote + \def\enoteformat{\rightskip\z@ \leftskip\z@ + \parindent=0pt\parskip=\baselineskip + \@theenmark. } + \newcommand{\makeendnotes}{ + \begingroup + \def\enotesize{\normalsize} + \theendnotes + \endgroup + } +\else + \long\gdef\footnote{\@latex@error + {Deprecated footnote command (see documentation for details)}} + \long\gdef\endnote{\@latex@error + {Deprecated endnote command (see documentation for details)}} +\fi + +% +% Usenix margins +% Gives active areas of 6.45" x 9.0" +% +\setlength{\textheight}{9.0in} +\setlength{\columnsep}{0.25in} +\setlength{\textwidth}{6.45in} +%\setlength{\footskip}{0.0in} +%\setlength{\footheight}{0.0in} +\setlength{\topmargin}{0.0in} +\setlength{\headheight}{0.0in} +\setlength{\headsep}{0.0in} +\setlength{\evensidemargin}{0.0in} +\setlength{\oddsidemargin}{0.0in} +\setlength{\marginparsep}{1.5em} +\setlength{\marginparwidth}{0.35in} + +% The standard maketitle insists on +% messing with the style of the first page. +% Thus, we will wrap maketitle with code to put +% things right again. +\let \save@maketitle=\maketitle +\def\maketitle{ + \save@maketitle + \if@draftcopy + \@specialpagefalse + \else + \thispagestyle{empty} + \fi +} + +% +% Usenix titles are in 14-point bold type, with no date, and with no +% change in the empty page headers. The author section is +% 12 point roman and italic: see below. +% +\def\@maketitle{% + \newpage + \null + \vskip 3ex% + \begin{center}% + \let \footnote \thanks + {\Large \bf \@title \par}% % use 14 pt bold + \vskip 2ex% + {\large + \lineskip .5ex% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \ifworkingdraft + \vskip 3ex \textbf{Draft of \@draftdate} \vskip 3ex + \fi + \ifwebversion + \vskip 3ex \textbf{\@docstatus} \vskip 3ex + \fi + \end{center}% + \par + \vskip 2ex} + +% +% The author section +% should have names in Roman, address in +% italic, e-mail/http in typewriter. +% This is enforced by use of these macros +% +\def\authname#1{{#1}\\} +\def\authaddr#1{\itshape{#1}\\} +\def\authurl#1{{\normalsize #1}\\} + +% +% The abstract is preceded by a 12-pt bold centered heading +% +\def\abstract{\begin{center}% + {\large\bf \abstractname\vspace{-.5ex}\vspace{\z@}}% + \end{center}} +\def\endabstract{} + +% +% Main section titles are 12-pt bold. Lower divisions can +% be same size or smaller: we choose same. +% Main section leading is tight. Subsection leading is even +% slightly tighter. All lower divisions are formatted like subsections. +% +\newcommand\@sectionfont{\reset@font\large\bf} +\newlength\@sectionaboveskip +\setlength\@sectionaboveskip{-0.7\baselineskip + plus -0.1\baselineskip + minus -0.1\baselineskip} +\newlength\@sectionbelowskip +\setlength\@sectionbelowskip{0.3\baselineskip + plus 0.1\baselineskip} +\newlength\@subsectionaboveskip +\setlength\@subsectionaboveskip{-0.5\baselineskip + plus -0.1\baselineskip} +\renewcommand\section{\@startsection {section}{1}{\z@}% + {\@sectionaboveskip}{\@sectionbelowskip}{\@sectionfont}} +\newcommand\@gensubsection[2]{\@startsection {#1}{#2}{\z@}% + {\@subsectionaboveskip}{\@sectionbelowskip}{\@sectionfont}} +\renewcommand\subsection{\@gensubsection{subsection}{2}} +\renewcommand\subsubsection{\@gensubsection{subsubsection}{3}} +%\renewcommand\paragraph{\@gensubsection{paragraph}{4}} +%\renewcommand\subparagraph{\@gensubsection{subparagaph}{5}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {1.25ex \@plus 0.2ex \@minus 0.2ex}% + {-1.0em}% + {\normalfont\normalsize\bfseries}} +\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {1.25ex \@plus 0.2ex \@minus 0.2ex}% + {-1.0em}% + {\normalfont\normalsize\bfseries}} + +% List items need to be tightened up. +% There must be a better way than copying +% the definitions to modify the list environment... +\def\@itemspacings{\listparindent=\parindent + \parsep=0pt\topsep=0.3\baselineskip\partopsep=0pt\itemsep=0pt} +% now make envs use itemspacings +\def\itemize{% + \ifnum \@itemdepth >\thr@@\@toodeep\else + \advance\@itemdepth\@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \expandafter + \list + \csname\@itemitem\endcsname + {\@itemspacings\def\makelabel##1{\hss\llap{##1}}}% + \fi} +\def\enumerate{% + \ifnum \@enumdepth >\thr@@\@toodeep\else + \advance\@enumdepth\@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter + \list + \csname label\@enumctr\endcsname + {\@itemspacings\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}% + \fi} +\def\description{% + \list{}{\labelwidth\z@ \itemindent-\leftmargin + \@itemspacings\let\makelabel\descriptionlabel}} + +% Bibliography items need to be tightened up. +% Again, there must be a better way than copying +% the definitions to modify the list environment... +\def\thebibliography#1% + {\section*{\refname}% + \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}% + \parsep=0pt}% pack entries + \sloppy + \hbadness=8000% mostly don't whine about bibliography fmt + \clubpenalty=4000% + \@clubpenalty=\clubpenalty + \widowpenalty=4000% + \sfcode`\.\@m} + +% Floating bodies need to be tightened up. +\setlength\textfloatsep{14pt plus 2pt} +\setlength\dbltextfloatsep{\textfloatsep} +\setlength\intextsep{0.8\textfloatsep} +\setlength\abovecaptionskip{8pt minus 2pt} diff -r dae06344c175 -r 01aefc2be990 1__Presentations/11__Class_on_Parall_langs/paper_ompss.pdf Binary file 1__Presentations/11__Class_on_Parall_langs/paper_ompss.pdf has changed diff -r dae06344c175 -r 01aefc2be990 1__Presentations/12__LPGPU_HiPEAC_Poster/LPGPU_poster_slides_from_TUB.odp Binary file 1__Presentations/12__LPGPU_HiPEAC_Poster/LPGPU_poster_slides_from_TUB.odp has changed