# HG changeset patch # User Some Random Person # Date 1331483204 25200 # Node ID fdd66fbc940390081097ebe56e68883a14ac5574 # Parent dac0b8db9e72b05217f2f76e7abeddf0fcaba2b0 Added some starts on papers and did some organizing, moving among folders diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/LPGPU__Arch/First_arch_paper/figures/Chip_plus_mem_sys.pdf Binary file 0__Papers/LPGPU__Arch/First_arch_paper/figures/Chip_plus_mem_sys.pdf has changed diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/LPGPU__Arch/First_arch_paper/figures/Chip_plus_mem_sys.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/LPGPU__Arch/First_arch_paper/figures/Chip_plus_mem_sys.svg Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,3056 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + GP Core(Runs Linux) + + + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + DDR + + + + + + + + + + + + + 8 + + + + 8 + + + + 8 + + + + 8 + + + + 8 + + + + 8 + + + + 8 + + + + 8 + + + + Mem Ctlr + + + + + Chip plus Memory System + + + + Local Mem + + + + + Pipelines + + + + + + Net Intf + + + Local Mem + + + + + + + + Net Intf + + + + + Local Mem + + + + + Pipelines + + + + + + Net Intf + + + Local Mem + + + + + + + + Net Intf + + + + + Local Mem + + + + + Pipelines + + + + + + Net Intf + + + Local Mem + + + + + + + + Net Intf + + + + + + + Local Mem + + + + + Pipelines + + + + + + Net Intf + + + Local Mem + + + + + + + + Net Intf + + + + + Local Mem + + + + + Pipelines + + + + + + Net Intf + + + Local Mem + + + + + + + + Net Intf + + + + + Local Mem + + + + + Pipelines + + + + + + Net Intf + + + Local Mem + + + + + + + + Net Intf + + + + + + + Local Mem + + + + + Pipelines + + + + + + Net Intf + + + Local Mem + + + + + + + + Net Intf + + + + + Local Mem + + + + + Pipelines + + + + + + Net Intf + + + Local Mem + + + + + + + + Net Intf + + + + + Local Mem + + + + + Pipelines + + + + + + Net Intf + + + Local Mem + + + + + + + + Net Intf + + + + + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/LPGPU__Arch/First_arch_paper/figures/CtxtU_plus_Pipe.pdf Binary file 0__Papers/LPGPU__Arch/First_arch_paper/figures/CtxtU_plus_Pipe.pdf has changed diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/LPGPU__Arch/First_arch_paper/figures/CtxtU_plus_Pipe.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/LPGPU__Arch/First_arch_paper/figures/CtxtU_plus_Pipe.svg Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,1099 @@ + + + +image/svg+xmlL1 I Cache + +CurrPC + +NewPC + +Instr + +State + +Thread Locations + +Internals of a Slice + +LdStState + +PipeState + +IFState + +LifeState + +Expanded View + +of State + +Pipe Stages + +(fewer than # Thread Locs) + +Reg Sets + +Thread Unit + +Decode + +Rs1 fetch + +Rs2 fetch + +Execution + +Write Back + +WB + Data + ++Thd + +Rs2 Contents + +InstrInLdSt +Thd + +NewPC + ++ Thd + +Instr + ++ Thd + +Instr + PC + Thd + +NewPC + Thd + +Integer Pipe + +Rs2 + Data + ++Thd + +Rs1 + ++Thd + +Rs1 Contents + +Ld/St Op + Reg + Addr + ++ Data + Thd + SliceID + +To LdSt Unit + +LdSt Watcher + +Rem Ctl Unit + +Mult/Div + +NewPC + Thd + +NewPC + Thd + +Reg + Data + ++Thd + +Reg + Data + ++Thd + +Reg + Data + ++Thd + +Data + +LdStDone + Thd + +Cmd + PC + Instr + SetStatus + Thd + +PC + Instr + status + +Reg + Data + + +Thd + SliceID + +From LdSt Unit + +Rem Ctl Bus + +6/16/03 + +2 + + \ No newline at end of file diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/LPGPU__Arch/First_arch_paper/figures/FSMs_in_Ctxt_Unit.pdf Binary file 0__Papers/LPGPU__Arch/First_arch_paper/figures/FSMs_in_Ctxt_Unit.pdf has changed diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/LPGPU__Arch/First_arch_paper/figures/FSMs_in_Ctxt_Unit.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/LPGPU__Arch/First_arch_paper/figures/FSMs_in_Ctxt_Unit.svg Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,746 @@ + + + +image/svg+xmlIFState: + + +ReadyForIF + + +InIF + + +DoneWithIF + + +Chosen from pool + + +of threads ready + + +ICache has completed + + +Instruction Fetch + + +When NewPC is + + +sent by the pipe + + +FSMs In Ctxt Unit + + +PipeState: + + +ReadyForPipe + + +InPipe + + +DoneWithPipe + + +Chosen from pool + + +of threads ready + + +Pipe signals + + +Instruction is done + + +When DoneWithIF + + +and NotInLdSt + + +OR + + +forced by ThdLd + + +as soon as NotInLdSt + + +LifeState: + + +Loading + + +When ThdLd signal + + +is received + + +When ThdSt + + +Completes + + +Empty + + +When ThdSt signal + + +is received + + +Saving + + +Active + + +When ThdLd + + +Completes + + +LdStState: + + +InLdSt + + +When InLdSt signal + + +received from Pipe + + +NotInLdSt + + +DoneWithLdSt from LdStUnit + + +OR + + +PCLd from LdStUnit + + +6 + + + \ No newline at end of file diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/LPGPU__Arch/First_arch_paper/figures/Integer_Pipeline_Control.pdf Binary file 0__Papers/LPGPU__Arch/First_arch_paper/figures/Integer_Pipeline_Control.pdf has changed diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/LPGPU__Arch/First_arch_paper/figures/Integer_Pipeline_Control.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/LPGPU__Arch/First_arch_paper/figures/Integer_Pipeline_Control.svg Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,1616 @@ + + + +image/svg+xmlInteger Pipeline + +All + +Receive Instruction + PC + Thd + +All + +Decode: need Rs1? + +All + +Start PC+ 4 calc + +need Rs1 + +&Rs + Thd to RegF + +All + +PC1 <- PC + 4 + +J | JAL + +NewPC <- PC1[31:30]&Imm + +Not cntl flow Instr + +NewPC <- PC1 + +0 + +1 + +2 + +3 + +4 + +5 + +6 + +7 + +8 + +9 + +10 + +11 + +12 + +13 + +14 + +15 + +Brch + +Start PC1 + Imm + +All + +Shift and Sign extend + +Brch Imm + +Brch type COP + +&C + Thd to RegF + +need Rs2 | St + +&Rt + Thd to RegF + +If fetched Rs1 + +OpA <- *Rs + +Brch + +PC2<- PC1 + Imm + +JR | JALR + +NewPC <- OpA + +Elsif Ld | St | ALUImm + +OpB <- sign ext Imm + +Brch1Reg | JR | + +BrchCOP | JALR + +InstrDone sent + +If fetched Rs2 + +OpB <- *Rt + +St + +OpSt <- *Rt + +Shift + +OpA <- ShImm + +All except shift + +ExRes <- OpA ALUOp OpB + +Shift + +ExRes <- OpB shifted OpA + +All + +continue + +All + +continue + +All + +continue + +All except Divide and Multiply + +finish ALU operation + +Divide and Multiply + +reapeat until done, then Q results. From Q, use LdStUnit's RegF port, + +when free. Send &Lo | &Hi + ExRes + Thd. Need two writes. Stall if full. + +ALU (non Imm) | Shift + +ExRes + &Rd + Thd + +to RegF (write) + +Ld | St + +ExRes + &Rt | OpSt + Thd + ++ SliceID + Op to LdStUnit + +Brch2Reg + +NewPC <- PC1 if false + +NewPC <- PC2 if true + +Other Instrs + +InstrDone sent + +All + +Decide: Bubble? + +Brch + +cont. PC1 + Imm + +JAL | B*AL | JALR + +31 | &Rd + PC1 + Thd to RegF + +(write operation) + +ALUImm | LUI + +ExRes + &Rt + Thd + +to RegF (write) + +LUI | Ld | St + +ALUOp <- add + +LUI + +OpA <- Imm & 0 + +J | JAL + +InstrDone sent + +Note: check in final design if enough stages + +in ThdU for JAL write to complete + +LUI | Brch1Reg + +&Rt = 0 + +Brch2Reg + +ALUOp <- Compare + +All + +Decode: ALUOp + +begin + +Ld | St + +InLdSt and InstrDone sent + +Brch1Reg | BrchCOP + +resolve branch + +Brch1Reg | BrchCOP + +NewPC <- PC1 if false + +NewPC <- PC2 if true + +All + +Continue decode + +All + +Finish decode + +Note: wait until instruction actually makes it into LdStUnit before sending InLdSt -> Exceptions + +Brch1Reg | BrchCOP + +Decode brchOp + +Note: check in final design if enough stages + +in ThdU for WB to complete + +6/16/03 + + +3 + + \ No newline at end of file diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/LPGPU__Arch/First_arch_paper/figures/Worker_Core.pdf Binary file 0__Papers/LPGPU__Arch/First_arch_paper/figures/Worker_Core.pdf has changed diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/LPGPU__Arch/First_arch_paper/figures/Worker_Core.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/LPGPU__Arch/First_arch_paper/figures/Worker_Core.svg Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,2017 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + Net Intf + + Worker Core + + + Mem Array + + + Q + + + Mem Array + + + Q + + + Mem Array + + + Q + + + Mem Array + + + Q + + + Mem Array + + + Q + + + Mem Array + + + Q + + + Mem Array + + + Q + + + Mem Array + + + Q + + + + + + Vector RegFile + + + + + Vector Unit + + + + + + + + + + Net Intf + + + + + Int Pipeline + + + + RegFile + + + + Ctxt U + + + + + + Int Pipeline + + + + RegFile + + + + Ctxt U + + + + + + Int Pipeline + + + + RegFile + + + + Ctxt U + + + + + Mem Array + + + Q + + + Mem Array + + + Q + + + Mem Array + + + Q + + + Mem Array + + + Q + + + Mem Array + + + Q + + + Mem Array + + + Q + + + Mem Array + + + Q + + + Mem Array + + + Q + + + + + + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/LPGPU__Arch/First_arch_paper/latex/LPGPU__first_arch_paper.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/LPGPU__Arch/First_arch_paper/latex/LPGPU__first_arch_paper.tex Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,246 @@ +%&latex +%% Derived from: `accept.tex' (from acmconf.dtx), + +\documentclass[submit]{acmconf} + +\CopyrightText{\copyright ACM 2000, ....., used with the \texttt{box} option.} +\IfFileExists{graphicx.sty}{\usepackage{graphicx}}{} +\ConferenceName{1. Conference on Designing a \LaTeX2e Class for + Typesetting ACM Papers, Hawaii 2000} +\ConferenceShortName{CONF-2000} + +\def\XX{More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. More text should follow, but + keep in mind that a limit of 6 pages set, including figures + and references. More text should follow, but keep in mind that a + limit of 6 pages has been set, including figures and references. + \par +} + +\usepackage[USenglish,UKenglish]{babel} +\begin{document} + +%+Title +\date{31. December 1999} +\title{A New Intuitionistic Proof of Usability\\ + of the Recommended Style File for the ACM Conference Papers} +\author{\Author{J\"urgen Vollmer\thanks{Happy \LaTeX{}ing}}\\ + \Address{Karlsruhe}\\ + \Email{Juergen.Vollmer@acm.org}\\ + \and + \Author{Mickey Mouse}\\ + \Address{Enthausen University}\\ + \Email{Mickey.Mouse@entenhausen.org} + } +%-Title +\maketitle +%+Abstract +\begin{abstract} + This document demonstrates how to use the \LaTeX2e \verb|acmconf| + class by exhibiting itself as an example. You are expected to be + familiar with~\cite{Lam94}. The best way to use this file is to use + it as a template, i.e., replace the prose in it by your + own\footnote{And may use footnotes.}. +\end{abstract} +%-Abstract + +%+Keywords +\begin{keywords} +\LaTeX2e-class, ACM proceedings +\end{keywords} +%-Keywords + + +\section{Introduction} +\(\cos (\frac{a}{b})\) +To understand this file read the \emph{source} and not the typeset +version. If you are reading this in the typeset version you might as +well stop --- it is not supposed to make sense. + +\section{The Story Begins\ldots} +A real article is supposed to have some deep results and good +explanations. That, however, is your job and not mine so you should +replace this text with something more appropriate\footnote{Another a + footnote}.. + +\section{Some often used \LaTeX\ commands} + +\subsection{\texttt{emph}, etc.} +Text may be set as \emph{emph}.\\ +Text may be set as \texttt{texttt}.\\ +Text may be set as \underline{unterline}.\\ +Text may be set as \textbf{textbf}.\\ +Text may be set as \textrm{textrm}.\\ +Text may be set as {\tiny tiny}.\\ +Text may be set as {\scriptsize scriptsize}.\\ +Text may be set as {\footnotesize footnotesize}.\\ +Text may be set as {\normalfont normalsize}.\\ +Text may be set as {\large large}.\\ +Text may be set as {\Large Large}.\\ +Text may be set as {\LARGE LARGE}.\\ +Text may be set as {\huge huge}.\\ +Text may be set as {\Huge Huge}.\\ +Text may have$^{\textrm{super}}$ and$_{\textrm{sub}}$scripts. + +\subsection{\texttt{itemize}} +\begin{itemize} +\item\(f\) More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. +\item More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. +\end{itemize} + +\subsection{\texttt{enumerate}} +\begin{enumerate} +\item More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. +\item More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. + +\end{enumerate} + +\subsection{\texttt{description}} +\begin{description} +\item[Foo] More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. +\item[Bar] More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. +\end{description} + +\subsection{\texttt{center} and \texttt{tabular}} +\begin{center} +\begin{tabular}{|l|c|r|}\hline +left & center & right \\\hline\hline +AAAAAAAA & BBBBBBBB & CCCCCCCC \\ +AAAAAAAA & BBBBBBBB & CCCCCCCC \\\cline{3-3} +AAAAAAAA & BBBBBBBB & CCCCCCCC \\\cline{2-2} +AAAAAAAA & BBBBBBBB & CCCCCCCC \\\cline{1-2} +AAAAAAAA & BBBBBBBB & CCCCCCCC \\\hline +AAAAAAAA & BBBBBBBB & CCCCCCCC \\\hline +1 & \multicolumn{2}{|c|}{2} \\\hline +\end{tabular} +\end{center} + +\subsection{\texttt{figure} and Postscript pictures} +Have a look to to figure~\ref{fig-1} and~\ref{fig-2}. + +\begin{figure} +\hrule +Nice Postscript, isn't it? +\begin{center} +\IfFileExists{graphicx.sty}{ + \includegraphics{body.eps} +}{ + Sorry, package \texttt{graphicx} not present. +} +\end{center} + +Same, a little bit smaller: +\begin{center} +\IfFileExists{graphicx.sty}{ + \includegraphics[scale=.5]{body.eps} + }{ + Sorry, package \texttt{graphicx} not present. +} +\end{center} +\caption{\label{fig-1}This is a nice floating figure} +\hrule +\end{figure} + +\begin{figure*} +\hrule +This figure uses both columns, using \texttt{figure*} +\begin{center} +\IfFileExists{graphicx.sty}{ + \includegraphics[scale=.5]{body.eps} + \hspace{1cm} + \includegraphics[scale=.5]{body.eps} +}{ + Sorry, package \texttt{graphicx} not present. +} +\end{center} +\caption{\label{fig-2}This is a nice floating figure} +\hrule +\end{figure*} + +\section{The Story Continues 1} + +This is a \verb+\section+. + +\XX\XX + +\subsection{The Story Continues 2} + +This is a \verb+\subsection+. + +\XX\XX + +\subsubsection{The Story Continues 3} + +This is a \verb+\subsubsection+. + +\XX\XX + +\subsubsubsection{The Story Continues 4} + +This is a \verb+\subsubsubsection+. + +\XX\XX + +\subsubsubsubsection{The Story Continues 5} + +This is a \verb+\subsubsubsubsection+. + +\XX\XX + +\paragraph{The Story Continues 6} + +This is a \verb+\paragraph+. +\XX\XX + +\subparagraph{The Story Continues 7} +This is a \verb+\subparagraph+. +\XX\XX\XX + +\section{Conclusion} +The end, at last! In this example there really are no results or +points to summarize but I trust your article has more food for though +and thus will need a conclusion. + +\appendix +\section{Appendices} +If you have any, appendices might go here. Note that appendices +should not be used to circumvent the word count limit. + +This is "doing it by hand" --- you might be better off using BibTeX. + +%+Bibliography +\begin{thebibliography}{X} +\bibitem[1]{Lam94} Leslie Lamport: {\em \LaTeX, A Document + Preparation System,} Addison Wesley~1994. +\end{thebibliography} +%-Bibliography + +\IfPrepare{ + \tableofcontents + \listoffigures + \listoftables +}{} + +\end{document} + + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/Portability_stack_combined.pdf Binary file 0__Papers/PStack/HotPar_2012/figures/Portability_stack_combined.pdf has changed diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/Portability_stack_combined.pdf.bb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/Portability_stack_combined.pdf.bb Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,9 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: PDF2EPS - BaKoMa TeX Portable Document Format (PDF) Import Filter. +%%Title: ..\figures\Portability_stack_combined.pdf +%%CreationDate: Tue Jan 31 15:19:44 2012 +%%LanguageLevel: 3 +%%DocumentData: Clean7Bit +%%BoundingBox: 0 0 412 168 +%%Rotate: 0 +%%EndComments diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/Portability_stack_combined.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/Portability_stack_combined.svg Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,2693 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lang Syntax + + + + Request Intf + + + + VMS Intf + + + + ISA + + + + + + + + + Interface + Layer + + + + + + + Toolchain + + + + Specializer + + + + + Specializer + + + + + + + + + Toolchain + + + + Specializer + + + + + Specializer + + + + + + + + + Toolchain + + + + Specializer + + + + + Specializer + + + + + + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/cray1_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/cray1_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,1135 @@ +%!PS-Adobe-2.0 +%%Title: cray1_pthreads_vthread_8_32_128_512thds__o30000__perfCtrs.meas.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:06:46 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (cray1_pthreads_vthread_8_32_128_512thds__o30000__perfCtrs.meas.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:06:46 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 +602 448 M +63 0 V +stroke +518 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +602 715 M +63 0 V +stroke +518 715 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +602 983 M +63 0 V +stroke +518 983 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +602 1250 M +63 0 V +stroke +518 1250 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +602 1518 M +63 0 V +stroke +518 1518 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +602 1785 M +63 0 V +stroke +518 1785 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +602 2053 M +63 0 V +stroke +518 2053 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +602 2320 M +63 0 V +stroke +518 2320 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +602 2588 M +63 0 V +stroke +518 2588 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 9)] +] -46.7 MRshow +1.000 UL +LTb +602 2855 M +63 0 V +stroke +518 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] +] -46.7 MRshow +1.000 UL +LTb +602 448 M +0 63 V +stroke +602 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1035 448 M +0 63 V +stroke +1035 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1468 448 M +0 63 V +stroke +1468 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1901 448 M +0 63 V +stroke +1901 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2335 448 M +0 63 V +stroke +2335 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2768 448 M +0 63 V +stroke +2768 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3201 448 M +0 63 V +stroke +3201 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3634 448 M +0 63 V +stroke +3634 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +602 2855 M +602 448 L +3465 0 V +0 2407 R +-3465 0 R +stroke +LCb setrgbcolor +112 1651 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 +2334 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +3538 2919 M +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] +] -46.7 MCshow +LTb +1.000 UL +LTb +2793 2289 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +2793 2849 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT5 +LC7 setrgbcolor +LCb setrgbcolor +3717 2779 M +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] +] -46.7 MRshow +LT5 +LC7 setrgbcolor +3801 2779 M +399 0 V +775 2855 M +28 -401 V +924 1709 L +249 -553 V +1658 827 L +2629 643 L +4067 572 L +% End plot #1 +% Begin plot #2 +stroke +LT6 +LCb setrgbcolor +3717 2639 M +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] +] -46.7 MRshow +LT6 +3801 2639 M +399 0 V +1064 2855 M +111 -618 V +488 -826 V +2631 949 L +4067 767 L +% End plot #2 +% Begin plot #3 +stroke +LT7 +LC1 setrgbcolor +LCb setrgbcolor +3717 2499 M +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] +] -46.7 MRshow +LT7 +LC1 setrgbcolor +3801 2499 M +399 0 V +2210 2855 M +429 -685 V +4067 1557 L +% End plot #3 +% Begin plot #4 +stroke +LT8 +LCb setrgbcolor +3717 2359 M +[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] +] -46.7 MRshow +LT8 +3801 2359 M +399 0 V +% End plot #4 +stroke +1.000 UL +LTb +602 2855 M +602 448 L +3465 0 V +0 2407 R +-3465 0 R +1.000 UP +602 448 M +63 0 V +stroke +518 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +602 715 M +63 0 V +stroke +518 715 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +602 983 M +63 0 V +stroke +518 983 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +602 1250 M +63 0 V +stroke +518 1250 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +602 1518 M +63 0 V +stroke +518 1518 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +602 1785 M +63 0 V +stroke +518 1785 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +602 2053 M +63 0 V +stroke +518 2053 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +602 2320 M +63 0 V +stroke +518 2320 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +602 2588 M +63 0 V +stroke +518 2588 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 9)] +] -46.7 MRshow +1.000 UL +LTb +602 2855 M +63 0 V +stroke +518 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] +] -46.7 MRshow +1.000 UL +LTb +602 448 M +0 63 V +stroke +602 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1035 448 M +0 63 V +stroke +1035 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1468 448 M +0 63 V +stroke +1468 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1901 448 M +0 63 V +stroke +1901 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2335 448 M +0 63 V +stroke +2335 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2768 448 M +0 63 V +stroke +2768 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3201 448 M +0 63 V +stroke +3201 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3634 448 M +0 63 V +stroke +3634 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +602 2855 M +602 448 L +3465 0 V +0 2407 R +-3465 0 R +stroke +LCb setrgbcolor +112 1651 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 +2334 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +2022 2919 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] +] -46.7 MCshow +LTb +1.000 UL +LTb +1277 2289 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +1277 2849 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT1 +LCa setrgbcolor +602 715 M +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +% End plot #1 +% Begin plot #2 +stroke +LT0 +LCb setrgbcolor +2201 2779 M +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] +] -46.7 MRshow +LT0 +2285 2779 M +399 0 V +692 1306 M +18 -111 V +31 -149 V +801 842 L +922 697 L +1172 589 L +486 -65 V +970 -37 V +4067 473 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +2201 2639 M +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] +] -46.7 MRshow +LT2 +2285 2639 M +399 0 V +692 1319 M +18 -134 V +30 -176 V +801 845 L +922 690 L +1173 582 L +485 -60 V +970 -36 V +4067 472 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +2201 2499 M +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] +] -46.7 MRshow +LT3 +2285 2499 M +399 0 V +693 1386 M +18 -167 V +30 -161 V +801 865 L +923 711 L +1173 595 L +485 -67 V +970 -39 V +4067 474 L +% End plot #4 +% Begin plot #5 +stroke +LT4 +LCb setrgbcolor +2201 2359 M +[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] +] -46.7 MRshow +LT4 +2285 2359 M +399 0 V +692 1425 M +19 -158 V +30 -179 V +802 892 L +923 725 L +1173 602 L +485 -70 V +970 -40 V +4067 476 L +% End plot #5 +stroke +1.000 UL +LTb +602 2855 M +602 448 L +3465 0 V +0 2407 R +-3465 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,818 @@ +%!PS-Adobe-2.0 +%%Title: cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:08:51 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:08:51 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 +stroke +434 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +518 792 M +63 0 V +stroke +434 792 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +518 1136 M +63 0 V +stroke +434 1136 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +518 1480 M +63 0 V +stroke +434 1480 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +518 1823 M +63 0 V +stroke +434 1823 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +518 2167 M +63 0 V +stroke +434 2167 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +518 2511 M +63 0 V +stroke +434 2511 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +518 2855 M +63 0 V +stroke +434 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +518 448 M +0 63 V +stroke +518 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +962 448 M +0 63 V +stroke +962 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1405 448 M +0 63 V +stroke +1405 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1849 448 M +0 63 V +stroke +1849 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2293 448 M +0 63 V +stroke +2293 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2736 448 M +0 63 V +stroke +2736 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3180 448 M +0 63 V +stroke +3180 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3623 448 M +0 63 V +stroke +3623 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +518 2855 M +518 448 L +3549 0 V +0 2407 R +-3549 0 R +stroke +LCb setrgbcolor +112 1651 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 +2292 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +2798 2538 N +0 420 V +1491 0 V +0 -420 V +-1491 0 V +Z stroke +2798 2958 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT1 +LCa setrgbcolor +518 792 M +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +% End plot #1 +% Begin plot #2 +stroke +LT1 +LCb setrgbcolor +3722 2888 M +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] +] -46.7 MRshow +LT1 +3806 2888 M +399 0 V +746 2855 M +848 2069 L +255 -711 V +1600 935 L +2594 699 L +4067 607 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +3722 2748 M +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] +] -46.7 MRshow +LT2 +3806 2748 M +399 0 V +1089 2855 M +15 -106 V +1605 1686 L +991 -594 V +4067 858 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +3722 2608 M +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] +] -46.7 MRshow +LT3 +3806 2608 M +399 0 V +2508 2855 M +97 -193 V +4067 1874 L +% End plot #4 +stroke +1.000 UL +LTb +518 2855 M +518 448 L +3549 0 V +0 2407 R +-3549 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/cray1_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/cray1_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,851 @@ +%!PS-Adobe-2.0 +%%Title: cray1_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:09:54 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (cray1_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:09:54 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 +stroke +434 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +518 792 M +63 0 V +stroke +434 792 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +518 1136 M +63 0 V +stroke +434 1136 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +518 1480 M +63 0 V +stroke +434 1480 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +518 1823 M +63 0 V +stroke +434 1823 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +518 2167 M +63 0 V +stroke +434 2167 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +518 2511 M +63 0 V +stroke +434 2511 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +518 2855 M +63 0 V +stroke +434 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +518 448 M +0 63 V +stroke +518 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +962 448 M +0 63 V +stroke +962 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1405 448 M +0 63 V +stroke +1405 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1849 448 M +0 63 V +stroke +1849 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2293 448 M +0 63 V +stroke +2293 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2736 448 M +0 63 V +stroke +2736 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3180 448 M +0 63 V +stroke +3180 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3623 448 M +0 63 V +stroke +3623 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +518 2855 M +518 448 L +3549 0 V +0 2407 R +-3549 0 R +stroke +LCb setrgbcolor +112 1651 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 +2292 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +2492 2232 N +0 560 V +1491 0 V +0 -560 V +-1491 0 V +Z stroke +2492 2792 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT1 +LCa setrgbcolor +518 792 M +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +% End plot #1 +% Begin plot #2 +stroke +LT1 +LCb setrgbcolor +3416 2722 M +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] +] -46.7 MRshow +LT1 +3500 2722 M +399 0 V +610 1551 M +19 -143 V +31 -191 V +722 955 L +846 769 L +1102 629 L +497 -83 V +994 -48 V +4067 480 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +3416 2582 M +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] +] -46.7 MRshow +LT2 +3500 2582 M +399 0 V +610 1568 M +19 -173 V +31 -226 V +722 958 L +846 759 L +1102 621 L +497 -78 V +994 -46 V +4067 479 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +3416 2442 M +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] +] -46.7 MRshow +LT3 +3500 2442 M +399 0 V +611 1654 M +18 -214 V +31 -208 V +722 984 L +847 786 L +1103 636 L +496 -85 V +994 -50 V +4067 482 L +% End plot #4 +% Begin plot #5 +stroke +LT4 +LCb setrgbcolor +3416 2302 M +[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] +] -46.7 MRshow +LT4 +3500 2302 M +399 0 V +611 1704 M +18 -203 V +31 -230 V +63 -252 V +846 804 L +1103 645 L +497 -89 V +993 -52 V +4067 484 L +% End plot #5 +stroke +1.000 UL +LTb +518 2855 M +518 448 L +3549 0 V +0 2407 R +-3549 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/vms_pthreads_8_32_128thds__o30000__perfCtrs.result.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/vms_pthreads_8_32_128thds__o30000__perfCtrs.result.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,819 @@ +%!PS-Adobe-2.0 +%%Title: vms_pthreads_8_32_128thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:11:43 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (vms_pthreads_8_32_128thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:11:43 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 +stroke +434 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +518 792 M +63 0 V +stroke +434 792 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +518 1136 M +63 0 V +stroke +434 1136 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +518 1480 M +63 0 V +stroke +434 1480 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +518 1823 M +63 0 V +stroke +434 1823 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +518 2167 M +63 0 V +stroke +434 2167 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +518 2511 M +63 0 V +stroke +434 2511 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +518 2855 M +63 0 V +stroke +434 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +518 448 M +0 63 V +stroke +518 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +962 448 M +0 63 V +stroke +962 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1405 448 M +0 63 V +stroke +1405 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1849 448 M +0 63 V +stroke +1849 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2293 448 M +0 63 V +stroke +2293 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2736 448 M +0 63 V +stroke +2736 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3180 448 M +0 63 V +stroke +3180 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3623 448 M +0 63 V +stroke +3623 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +518 2855 M +518 448 L +3549 0 V +0 2407 R +-3549 0 R +stroke +LCb setrgbcolor +112 1651 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 +2292 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +2492 2372 N +0 420 V +1491 0 V +0 -420 V +-1491 0 V +Z stroke +2492 2792 M +1491 0 V +% Begin plot #1 +stroke +3.000 UL +LT1 +LCa setrgbcolor +518 792 M +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +% End plot #1 +% Begin plot #2 +stroke +4.000 UL +LT1 +LCb setrgbcolor +3416 2722 M +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] +] -46.7 MRshow +LT1 +3500 2722 M +399 0 V +715 2855 M +58 -684 V +984 1411 L +1411 947 L +2263 700 L +3965 573 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +3416 2582 M +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] +] -46.7 MRshow +LT2 +3500 2582 M +399 0 V +947 2855 M +38 -338 V +427 -979 V +849 -507 V +3969 747 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +3416 2442 M +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] +] -46.7 MRshow +LT3 +3500 2442 M +399 0 V +2070 2855 M +197 -434 V +3969 1446 L +% End plot #4 +stroke +1.000 UL +LTb +518 2855 M +518 448 L +3549 0 V +0 2407 R +-3549 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/vms_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/vms_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,852 @@ +%!PS-Adobe-2.0 +%%Title: vms_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:12:20 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (vms_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:12:20 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 +stroke +434 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +518 792 M +63 0 V +stroke +434 792 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +518 1136 M +63 0 V +stroke +434 1136 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +518 1480 M +63 0 V +stroke +434 1480 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +518 1823 M +63 0 V +stroke +434 1823 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +518 2167 M +63 0 V +stroke +434 2167 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +518 2511 M +63 0 V +stroke +434 2511 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +518 2855 M +63 0 V +stroke +434 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +518 448 M +0 63 V +stroke +518 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +962 448 M +0 63 V +stroke +962 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1405 448 M +0 63 V +stroke +1405 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1849 448 M +0 63 V +stroke +1849 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2293 448 M +0 63 V +stroke +2293 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2736 448 M +0 63 V +stroke +2736 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3180 448 M +0 63 V +stroke +3180 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3623 448 M +0 63 V +stroke +3623 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +518 2855 M +518 448 L +3549 0 V +0 2407 R +-3549 0 R +stroke +LCb setrgbcolor +112 1651 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 +2292 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +2492 2232 N +0 560 V +1491 0 V +0 -560 V +-1491 0 V +Z stroke +2492 2792 M +1491 0 V +% Begin plot #1 +stroke +3.000 UL +LT1 +LCa setrgbcolor +518 792 M +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +% End plot #1 +% Begin plot #2 +stroke +4.000 UL +LT1 +LCb setrgbcolor +3416 2722 M +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] +] -46.7 MRshow +LT1 +3500 2722 M +399 0 V +572 2677 M +16 -429 V +24 -559 V +55 -454 V +774 920 L +987 706 L +1411 563 L +852 -54 V +3966 478 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +3416 2582 M +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] +] -46.7 MRshow +LT2 +3500 2582 M +399 0 V +571 2168 M +17 -436 V +24 -217 V +55 -464 V +774 801 L +986 651 L +1412 549 L +852 -55 V +3966 472 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +3416 2442 M +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] +] -46.7 MRshow +LT3 +3500 2442 M +399 0 V +572 2234 M +16 -381 V +26 -417 V +53 -317 V +773 823 L +987 656 L +1412 553 L +852 -51 V +3968 472 L +% End plot #4 +% Begin plot #5 +stroke +LT4 +LCb setrgbcolor +3416 2302 M +[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] +] -46.7 MRshow +LT4 +3500 2302 M +399 0 V +572 2389 M +14 -445 V +27 -449 V +54 -383 V +772 837 L +985 659 L +1411 552 L +853 -52 V +3968 473 L +% End plot #5 +stroke +1.000 UL +LTb +518 2855 M +518 448 L +3549 0 V +0 2407 R +-3549 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,699 @@ +%!PS-Adobe-2.0 +%%Title: xoanon_pthreads_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:22:29 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (xoanon_pthreads_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:22:29 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 922 M +63 0 V +stroke +602 922 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] +] -46.7 MRshow +1.000 UL +LTb +686 1405 M +63 0 V +stroke +602 1405 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 1888 M +63 0 V +stroke +602 1888 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] +] -46.7 MRshow +1.000 UL +LTb +686 2372 M +63 0 V +stroke +602 2372 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 2855 M +63 0 V +stroke +602 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1109 448 M +0 63 V +stroke +1109 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1531 448 M +0 63 V +stroke +1531 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1954 448 M +0 63 V +stroke +1954 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2377 448 M +0 63 V +stroke +2377 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2799 448 M +0 63 V +stroke +2799 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3222 448 M +0 63 V +stroke +3222 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3644 448 M +0 63 V +stroke +3644 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +stroke +LCb setrgbcolor +112 1651 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 +2376 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +770 511 N +0 560 V +1491 0 V +0 -560 V +770 511 L +Z stroke +770 1071 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT0 +LCb setrgbcolor +1694 1001 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT0 +1778 1001 M +399 0 V +1735 2855 M +662 -919 V +4067 1238 L +% End plot #1 +% Begin plot #2 +stroke +LT1 +LCb setrgbcolor +1694 861 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT1 +1778 861 M +399 0 V +1748 2855 M +2555 1723 L +4067 1065 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +1694 721 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT2 +1778 721 M +399 0 V +1420 2855 M +170 -542 V +784 -867 V +3986 870 L +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +1694 581 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT3 +1778 581 M +399 0 V +1802 2855 M +572 -574 V +4007 1207 L +% End plot #4 +stroke +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,695 @@ +%!PS-Adobe-2.0 +%%Title: xoanon_pthreads_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:23:26 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (xoanon_pthreads_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:23:26 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 922 M +63 0 V +stroke +602 922 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] +] -46.7 MRshow +1.000 UL +LTb +686 1405 M +63 0 V +stroke +602 1405 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 1888 M +63 0 V +stroke +602 1888 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] +] -46.7 MRshow +1.000 UL +LTb +686 2372 M +63 0 V +stroke +602 2372 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 2855 M +63 0 V +stroke +602 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1109 448 M +0 63 V +stroke +1109 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1531 448 M +0 63 V +stroke +1531 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1954 448 M +0 63 V +stroke +1954 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2377 448 M +0 63 V +stroke +2377 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2799 448 M +0 63 V +stroke +2799 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3222 448 M +0 63 V +stroke +3222 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3644 448 M +0 63 V +stroke +3644 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +stroke +LCb setrgbcolor +112 1651 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 +2376 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +770 511 N +0 560 V +1491 0 V +0 -560 V +770 511 L +Z stroke +770 1071 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT0 +LCb setrgbcolor +1694 1001 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT0 +1778 1001 M +399 0 V +154 1854 R +25 -124 V +3985 1744 L +% End plot #1 +% Begin plot #2 +stroke +LT1 +LCb setrgbcolor +1694 861 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT1 +1778 861 M +399 0 V +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +1694 721 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT2 +1778 721 M +399 0 V +618 2134 R +476 -856 V +796 -271 V +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +1694 581 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT3 +1778 581 M +399 0 V +166 2274 R +586 -716 V +4067 1495 L +% End plot #4 +stroke +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-dist.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-dist.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,948 @@ +%!PS-Adobe-2.0 +%%Title: xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-dist.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:30:24 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-dist.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:30:24 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 922 M +63 0 V +stroke +602 922 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] +] -46.7 MRshow +1.000 UL +LTb +686 1405 M +63 0 V +stroke +602 1405 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 1888 M +63 0 V +stroke +602 1888 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] +] -46.7 MRshow +1.000 UL +LTb +686 2372 M +63 0 V +stroke +602 2372 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 2855 M +63 0 V +stroke +602 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1109 448 M +0 63 V +stroke +1109 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1531 448 M +0 63 V +stroke +1531 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1954 448 M +0 63 V +stroke +1954 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2377 448 M +0 63 V +stroke +2377 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2799 448 M +0 63 V +stroke +2799 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3222 448 M +0 63 V +stroke +3222 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3644 448 M +0 63 V +stroke +3644 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +stroke +LCb setrgbcolor +112 1651 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 +2376 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +3532 2882 M +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] +] -46.7 MCshow +LTb +1.000 UL +LTb +2787 2252 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +2787 2812 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT5 +LC7 setrgbcolor +LCb setrgbcolor +3711 2742 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT5 +LC7 setrgbcolor +3795 2742 M +399 0 V +1735 2855 M +662 -919 V +4067 1238 L +% End plot #1 +% Begin plot #2 +stroke +LT6 +LCb setrgbcolor +3711 2602 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT6 +3795 2602 M +399 0 V +1748 2855 M +2555 1723 L +4067 1065 L +% End plot #2 +% Begin plot #3 +stroke +LT7 +LC1 setrgbcolor +LCb setrgbcolor +3711 2462 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT7 +LC1 setrgbcolor +3795 2462 M +399 0 V +1420 2855 M +170 -542 V +784 -867 V +3986 870 L +% End plot #3 +% Begin plot #4 +stroke +LT8 +LCb setrgbcolor +3711 2322 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT8 +3795 2322 M +399 0 V +1802 2855 M +572 -574 V +4007 1207 L +% End plot #4 +stroke +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +1.000 UP +686 922 M +63 0 V +stroke +602 922 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] +] -46.7 MRshow +1.000 UL +LTb +686 1405 M +63 0 V +stroke +602 1405 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 1888 M +63 0 V +stroke +602 1888 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] +] -46.7 MRshow +1.000 UL +LTb +686 2372 M +63 0 V +stroke +602 2372 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 2855 M +63 0 V +stroke +602 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1109 448 M +0 63 V +stroke +1109 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1531 448 M +0 63 V +stroke +1531 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1954 448 M +0 63 V +stroke +1954 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2377 448 M +0 63 V +stroke +2377 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2799 448 M +0 63 V +stroke +2799 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3222 448 M +0 63 V +stroke +3222 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3644 448 M +0 63 V +stroke +3644 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +stroke +LCb setrgbcolor +112 1651 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 +2376 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +1546 1238 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] +] -46.7 MCshow +LTb +1.000 UL +LTb +801 608 N +0 700 V +1491 0 V +0 -700 V +801 608 L +Z stroke +801 1168 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT0 +LCb setrgbcolor +1725 1098 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT0 +1809 1098 M +399 0 V +743 626 M +22 -61 V +39 -36 V +75 -37 V +154 -17 V +303 -13 V +609 -7 V +1218 -2 V +904 -1 V +% End plot #1 +% Begin plot #2 +stroke +LT2 +LCb setrgbcolor +1725 958 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT2 +1809 958 M +399 0 V +743 575 M +24 4 V +36 -82 V +76 -20 V +153 -6 V +303 -12 V +609 -4 V +1217 -4 V +906 -1 V +% End plot #2 +% Begin plot #3 +stroke +LT3 +LCb setrgbcolor +1725 818 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT3 +1809 818 M +399 0 V +742 581 M +24 -38 V +39 -9 V +76 -41 V +151 -19 V +304 -11 V +610 -7 V +1216 -5 V +905 -1 V +% End plot #3 +% Begin plot #4 +stroke +LT4 +LCb setrgbcolor +1725 678 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT4 +1809 678 M +399 0 V +743 589 M +23 -41 V +38 -29 V +77 -20 V +151 -28 V +303 -12 V +610 -4 V +1217 -4 V +905 0 V +% End plot #4 +stroke +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-out.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-out.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,884 @@ +%!PS-Adobe-2.0 +%%Title: xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-out.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:45:12 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-out.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:45:12 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 922 M +63 0 V +stroke +602 922 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] +] -46.7 MRshow +1.000 UL +LTb +686 1405 M +63 0 V +stroke +602 1405 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 1888 M +63 0 V +stroke +602 1888 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] +] -46.7 MRshow +1.000 UL +LTb +686 2372 M +63 0 V +stroke +602 2372 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 2855 M +63 0 V +stroke +602 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1159 448 M +0 63 V +stroke +1159 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1631 448 M +0 63 V +stroke +1631 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2104 448 M +0 63 V +stroke +2104 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +2576 448 M +0 63 V +stroke +2576 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 2855 M +686 448 L +1890 0 V +0 2407 R +-1890 0 R +stroke +LCb setrgbcolor +112 1651 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 +1631 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +3489 2785 M +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] +] -46.7 MCshow +LTb +1.000 UL +LTb +2744 2155 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +2744 2715 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT5 +LC7 setrgbcolor +LCb setrgbcolor +3668 2645 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT5 +LC7 setrgbcolor +3752 2645 M +399 0 V +1272 2855 M +371 -919 V +933 -698 V +% End plot #1 +% Begin plot #2 +stroke +LT6 +LCb setrgbcolor +3668 2505 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT6 +3752 2505 M +399 0 V +1280 2855 M +1731 1723 L +845 -658 V +% End plot #2 +% Begin plot #3 +stroke +LT7 +LC1 setrgbcolor +LCb setrgbcolor +3668 2365 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT7 +LC1 setrgbcolor +3752 2365 M +399 0 V +1096 2855 M +95 -542 V +439 -867 V +2531 870 L +% End plot #3 +% Begin plot #4 +stroke +LT8 +LCb setrgbcolor +3668 2225 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT8 +3752 2225 M +399 0 V +1310 2855 M +320 -574 V +2543 1207 L +% End plot #4 +stroke +1.000 UL +LTb +686 2855 M +686 448 L +1890 0 V +0 2407 R +-1890 0 R +1.000 UP +686 922 M +63 0 V +stroke +602 922 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] +] -46.7 MRshow +1.000 UL +LTb +686 1405 M +63 0 V +stroke +602 1405 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 1888 M +63 0 V +stroke +602 1888 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] +] -46.7 MRshow +1.000 UL +LTb +686 2372 M +63 0 V +stroke +602 2372 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 2855 M +63 0 V +stroke +602 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1159 448 M +0 63 V +stroke +1159 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1631 448 M +0 63 V +stroke +1631 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2104 448 M +0 63 V +stroke +2104 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +2576 448 M +0 63 V +stroke +2576 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 2855 M +686 448 L +1890 0 V +0 2407 R +-1890 0 R +stroke +LCb setrgbcolor +112 1651 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 +1631 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +3489 1931 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] +] -46.7 MCshow +LTb +1.000 UL +LTb +2744 1301 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +2744 1861 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT0 +LCb setrgbcolor +3668 1791 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT0 +3752 1791 M +399 0 V +718 626 M +12 -61 V +22 -36 V +42 -37 V +86 -17 V +169 -13 V +341 -7 V +681 -2 V +505 -1 V +% End plot #1 +% Begin plot #2 +stroke +LT2 +LCb setrgbcolor +3668 1651 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT2 +3752 1651 M +399 0 V +718 575 M +13 4 V +20 -82 V +43 -20 V +85 -6 V +170 -12 V +340 -4 V +681 -4 V +506 -1 V +% End plot #2 +% Begin plot #3 +stroke +LT3 +LCb setrgbcolor +3668 1511 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT3 +3752 1511 M +399 0 V +717 581 M +13 -38 V +23 -9 V +42 -41 V +85 -19 V +169 -11 V +341 -7 V +680 -5 V +506 -1 V +% End plot #3 +% Begin plot #4 +stroke +LT4 +LCb setrgbcolor +3668 1371 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT4 +3752 1371 M +399 0 V +718 589 M +13 -41 V +21 -29 V +43 -20 V +85 -28 V +169 -12 V +341 -4 V +680 -4 V +506 0 V +% End plot #4 +stroke +1.000 UL +LTb +686 2855 M +686 448 L +1890 0 V +0 2407 R +-1890 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-right.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-right.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,948 @@ +%!PS-Adobe-2.0 +%%Title: xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-right.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:32:06 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-right.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:32:06 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 922 M +63 0 V +stroke +602 922 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] +] -46.7 MRshow +1.000 UL +LTb +686 1405 M +63 0 V +stroke +602 1405 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 1888 M +63 0 V +stroke +602 1888 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] +] -46.7 MRshow +1.000 UL +LTb +686 2372 M +63 0 V +stroke +602 2372 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 2855 M +63 0 V +stroke +602 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1109 448 M +0 63 V +stroke +1109 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1531 448 M +0 63 V +stroke +1531 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1954 448 M +0 63 V +stroke +1954 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2377 448 M +0 63 V +stroke +2377 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2799 448 M +0 63 V +stroke +2799 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3222 448 M +0 63 V +stroke +3222 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3644 448 M +0 63 V +stroke +3644 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +stroke +LCb setrgbcolor +112 1651 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 +2376 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +3532 2882 M +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] +] -46.7 MCshow +LTb +1.000 UL +LTb +2787 2252 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +2787 2812 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT5 +LC7 setrgbcolor +LCb setrgbcolor +3711 2742 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT5 +LC7 setrgbcolor +3795 2742 M +399 0 V +1735 2855 M +662 -919 V +4067 1238 L +% End plot #1 +% Begin plot #2 +stroke +LT6 +LCb setrgbcolor +3711 2602 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT6 +3795 2602 M +399 0 V +1748 2855 M +2555 1723 L +4067 1065 L +% End plot #2 +% Begin plot #3 +stroke +LT7 +LC1 setrgbcolor +LCb setrgbcolor +3711 2462 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT7 +LC1 setrgbcolor +3795 2462 M +399 0 V +1420 2855 M +170 -542 V +784 -867 V +3986 870 L +% End plot #3 +% Begin plot #4 +stroke +LT8 +LCb setrgbcolor +3711 2322 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT8 +3795 2322 M +399 0 V +1802 2855 M +572 -574 V +4007 1207 L +% End plot #4 +stroke +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +1.000 UP +686 922 M +63 0 V +stroke +602 922 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] +] -46.7 MRshow +1.000 UL +LTb +686 1405 M +63 0 V +stroke +602 1405 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 1888 M +63 0 V +stroke +602 1888 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] +] -46.7 MRshow +1.000 UL +LTb +686 2372 M +63 0 V +stroke +602 2372 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 2855 M +63 0 V +stroke +602 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1109 448 M +0 63 V +stroke +1109 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1531 448 M +0 63 V +stroke +1531 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1954 448 M +0 63 V +stroke +1954 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2377 448 M +0 63 V +stroke +2377 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2799 448 M +0 63 V +stroke +2799 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3222 448 M +0 63 V +stroke +3222 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3644 448 M +0 63 V +stroke +3644 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +stroke +LCb setrgbcolor +112 1651 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 +2376 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +3532 2108 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] +] -46.7 MCshow +LTb +1.000 UL +LTb +2787 1478 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +2787 2038 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT0 +LCb setrgbcolor +3711 1968 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT0 +3795 1968 M +399 0 V +743 626 M +22 -61 V +39 -36 V +75 -37 V +154 -17 V +303 -13 V +609 -7 V +1218 -2 V +904 -1 V +% End plot #1 +% Begin plot #2 +stroke +LT2 +LCb setrgbcolor +3711 1828 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT2 +3795 1828 M +399 0 V +743 575 M +24 4 V +36 -82 V +76 -20 V +153 -6 V +303 -12 V +609 -4 V +1217 -4 V +906 -1 V +% End plot #2 +% Begin plot #3 +stroke +LT3 +LCb setrgbcolor +3711 1688 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT3 +3795 1688 M +399 0 V +742 581 M +24 -38 V +39 -9 V +76 -41 V +151 -19 V +304 -11 V +610 -7 V +1216 -5 V +905 -1 V +% End plot #3 +% Begin plot #4 +stroke +LT4 +LCb setrgbcolor +3711 1548 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT4 +3795 1548 M +399 0 V +743 589 M +23 -41 V +38 -29 V +77 -20 V +151 -28 V +303 -12 V +610 -4 V +1217 -4 V +905 0 V +% End plot #4 +stroke +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_vthread_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_vthread_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,844 @@ +%!PS-Adobe-2.0 +%%Title: xoanon_vthread_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:23:52 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (xoanon_vthread_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:23:52 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 +stroke +434 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +518 792 M +63 0 V +stroke +434 792 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +518 1136 M +63 0 V +stroke +434 1136 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +518 1480 M +63 0 V +stroke +434 1480 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +518 1823 M +63 0 V +stroke +434 1823 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +518 2167 M +63 0 V +stroke +434 2167 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +518 2511 M +63 0 V +stroke +434 2511 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +518 2855 M +63 0 V +stroke +434 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +518 448 M +0 63 V +stroke +518 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +962 448 M +0 63 V +stroke +962 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1405 448 M +0 63 V +stroke +1405 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1849 448 M +0 63 V +stroke +1849 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2293 448 M +0 63 V +stroke +2293 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2736 448 M +0 63 V +stroke +2736 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3180 448 M +0 63 V +stroke +3180 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3623 448 M +0 63 V +stroke +3623 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +518 2855 M +518 448 L +3549 0 V +0 2407 R +-3549 0 R +stroke +LCb setrgbcolor +112 1651 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 +2292 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +2492 2232 N +0 560 V +1491 0 V +0 -560 V +-1491 0 V +Z stroke +2492 2792 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT1 +LCa setrgbcolor +518 792 M +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +% End plot #1 +% Begin plot #2 +stroke +LT1 +LCb setrgbcolor +3416 2722 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT1 +3500 2722 M +399 0 V +670 2855 M +51 -852 V +882 1405 L +1200 930 L +1839 705 L +3118 625 L +949 -39 V +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +3416 2582 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT2 +3500 2582 M +399 0 V +632 2855 M +8 -651 V +80 -714 V +881 1280 L +1200 856 L +1839 682 L +3116 544 L +951 -19 V +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +3416 2442 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT3 +3500 2442 M +399 0 V +678 2855 M +45 -823 V +882 1374 L +1200 997 L +1840 716 L +3117 544 L +950 -16 V +% End plot #4 +% Begin plot #5 +stroke +LT4 +LCb setrgbcolor +3416 2302 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT4 +3500 2302 M +399 0 V +656 2855 M +67 -607 V +881 1260 L +1200 822 L +1840 687 L +3117 564 L +950 -21 V +% End plot #5 +stroke +1.000 UL +LTb +518 2855 M +518 448 L +3549 0 V +0 2407 R +-3549 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_vthread_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_vthread_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,821 @@ +%!PS-Adobe-2.0 +%%Title: xoanon_vthread_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:25:10 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (xoanon_vthread_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:25:10 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 +stroke +434 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +518 792 M +63 0 V +stroke +434 792 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +518 1136 M +63 0 V +stroke +434 1136 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +518 1480 M +63 0 V +stroke +434 1480 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +518 1823 M +63 0 V +stroke +434 1823 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +518 2167 M +63 0 V +stroke +434 2167 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +518 2511 M +63 0 V +stroke +434 2511 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +518 2855 M +63 0 V +stroke +434 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +518 448 M +0 63 V +stroke +518 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +962 448 M +0 63 V +stroke +962 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1405 448 M +0 63 V +stroke +1405 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1849 448 M +0 63 V +stroke +1849 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2293 448 M +0 63 V +stroke +2293 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2736 448 M +0 63 V +stroke +2736 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3180 448 M +0 63 V +stroke +3180 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3623 448 M +0 63 V +stroke +3623 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +518 2855 M +518 448 L +3549 0 V +0 2407 R +-3549 0 R +stroke +LCb setrgbcolor +112 1651 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 +2292 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +1.000 UL +LTb +2492 2372 N +0 420 V +1491 0 V +0 -420 V +-1491 0 V +Z stroke +2492 2792 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT1 +LCa setrgbcolor +518 792 M +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +36 0 V +36 0 V +35 0 V +36 0 V +36 0 V +36 0 V +% End plot #1 +% Begin plot #2 +stroke +LT1 +LCb setrgbcolor +3416 2722 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT1 +3500 2722 M +399 0 V +1143 2855 M +119 -356 V +1884 1393 L +3173 986 L +4067 875 L +% End plot #2 +% Begin plot #3 +stroke +LT2 +LCb setrgbcolor +3416 2582 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT2 +3500 2582 M +399 0 V +938 2855 M +11 -154 V +298 -610 V +661 -716 V +3205 912 L +862 -78 V +% End plot #3 +% Begin plot #4 +stroke +LT3 +LCb setrgbcolor +3416 2442 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT3 +3500 2442 M +399 0 V +933 2855 M +7 -106 V +316 -533 V +639 -908 V +3183 912 L +884 -75 V +% End plot #4 +stroke +1.000 UL +LTb +518 2855 M +518 448 L +3549 0 V +0 2407 R +-3549 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/vms_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/vms_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,1319 @@ +%!PS-Adobe-2.0 +%%Title: vms_pthreads_vthread_8_32_128_512thds__o30000__perfCtrs.meas.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:20:37 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (vms_pthreads_vthread_8_32_128_512thds__o30000__perfCtrs.meas.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 2) + /Author (msach) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Thu Jan 26 18:20:37 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 +602 448 M +63 0 V +stroke +518 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +602 715 M +63 0 V +stroke +518 715 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +602 983 M +63 0 V +stroke +518 983 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +602 1250 M +63 0 V +stroke +518 1250 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +602 1518 M +63 0 V +stroke +518 1518 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +602 1785 M +63 0 V +stroke +518 1785 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +602 2053 M +63 0 V +stroke +518 2053 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +602 2320 M +63 0 V +stroke +518 2320 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +602 2588 M +63 0 V +stroke +518 2588 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 9)] +] -46.7 MRshow +1.000 UL +LTb +602 2855 M +63 0 V +stroke +518 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] +] -46.7 MRshow +1.000 UL +LTb +602 448 M +0 63 V +stroke +602 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1035 448 M +0 63 V +stroke +1035 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1468 448 M +0 63 V +stroke +1468 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1901 448 M +0 63 V +stroke +1901 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2335 448 M +0 63 V +stroke +2335 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2768 448 M +0 63 V +stroke +2768 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3201 448 M +0 63 V +stroke +3201 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3634 448 M +0 63 V +stroke +3634 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +602 2855 M +602 448 L +3465 0 V +0 2407 R +-3465 0 R +stroke +LCb setrgbcolor +112 1651 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 +2334 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +% Begin plot #1 +3.000 UL +LT1 +LCa setrgbcolor +602 715 M +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 0 V +% End plot #1 +stroke +1.000 UL +LTb +602 2855 M +602 448 L +3465 0 V +0 2407 R +-3465 0 R +1.000 UP +602 448 M +63 0 V +stroke +518 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +602 715 M +63 0 V +stroke +518 715 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +602 983 M +63 0 V +stroke +518 983 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +602 1250 M +63 0 V +stroke +518 1250 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +602 1518 M +63 0 V +stroke +518 1518 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +602 1785 M +63 0 V +stroke +518 1785 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +602 2053 M +63 0 V +stroke +518 2053 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +602 2320 M +63 0 V +stroke +518 2320 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +602 2588 M +63 0 V +stroke +518 2588 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 9)] +] -46.7 MRshow +1.000 UL +LTb +602 2855 M +63 0 V +stroke +518 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] +] -46.7 MRshow +1.000 UL +LTb +602 448 M +0 63 V +stroke +602 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1035 448 M +0 63 V +stroke +1035 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1468 448 M +0 63 V +stroke +1468 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1901 448 M +0 63 V +stroke +1901 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2335 448 M +0 63 V +stroke +2335 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2768 448 M +0 63 V +stroke +2768 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3201 448 M +0 63 V +stroke +3201 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3634 448 M +0 63 V +stroke +3634 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +602 2855 M +602 448 L +3465 0 V +0 2407 R +-3465 0 R +stroke +LCb setrgbcolor +112 1651 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 +2334 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +3538 2919 M +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] +] -46.7 MCshow +LTb +1.000 UL +LTb +2793 2289 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +2793 2849 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT5 +LC7 setrgbcolor +LCb setrgbcolor +3717 2779 M +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] +] -46.7 MRshow +LT5 +LC7 setrgbcolor +3801 2779 M +399 0 V +742 2855 M +2 -67 V +851 1788 L +206 -591 V +1473 836 L +2306 644 L +3967 545 L +% End plot #1 +% Begin plot #2 +stroke +LT6 +LCb setrgbcolor +3717 2639 M +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] +] -46.7 MRshow +LT6 +3801 2639 M +399 0 V +946 2855 M +112 -798 V +417 -761 V +2304 901 L +3971 681 L +% End plot #2 +% Begin plot #3 +stroke +LT7 +LC1 setrgbcolor +LCb setrgbcolor +3717 2499 M +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] +] -46.7 MRshow +LT7 +LC1 setrgbcolor +3801 2499 M +399 0 V +1813 2855 M +496 -872 V +3972 1224 L +% End plot #3 +% Begin plot #4 +stroke +LT8 +LCb setrgbcolor +3717 2359 M +[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] +] -46.7 MRshow +LT8 +3801 2359 M +399 0 V +% End plot #4 +stroke +1.000 UL +LTb +602 2855 M +602 448 L +3465 0 V +0 2407 R +-3465 0 R +1.000 UP +602 448 M +63 0 V +stroke +518 448 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +602 715 M +63 0 V +stroke +518 715 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MRshow +1.000 UL +LTb +602 983 M +63 0 V +stroke +518 983 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MRshow +1.000 UL +LTb +602 1250 M +63 0 V +stroke +518 1250 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MRshow +1.000 UL +LTb +602 1518 M +63 0 V +stroke +518 1518 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MRshow +1.000 UL +LTb +602 1785 M +63 0 V +stroke +518 1785 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] +] -46.7 MRshow +1.000 UL +LTb +602 2053 M +63 0 V +stroke +518 2053 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] +] -46.7 MRshow +1.000 UL +LTb +602 2320 M +63 0 V +stroke +518 2320 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] +] -46.7 MRshow +1.000 UL +LTb +602 2588 M +63 0 V +stroke +518 2588 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 9)] +] -46.7 MRshow +1.000 UL +LTb +602 2855 M +63 0 V +stroke +518 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] +] -46.7 MRshow +1.000 UL +LTb +602 448 M +0 63 V +stroke +602 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1035 448 M +0 63 V +stroke +1035 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1468 448 M +0 63 V +stroke +1468 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1901 448 M +0 63 V +stroke +1901 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2335 448 M +0 63 V +stroke +2335 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2768 448 M +0 63 V +stroke +2768 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3201 448 M +0 63 V +stroke +3201 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3634 448 M +0 63 V +stroke +3634 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +602 2855 M +602 448 L +3465 0 V +0 2407 R +-3465 0 R +stroke +LCb setrgbcolor +112 1651 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 +2334 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +2022 2919 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] +] -46.7 MCshow +LTb +1.000 UL +LTb +1277 2289 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +1277 2849 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT0 +LCb setrgbcolor +2201 2779 M +[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] +] -46.7 MRshow +LT0 +2285 2779 M +399 0 V +654 2182 M +16 -334 V +24 -434 V +54 -354 V +852 815 L +1060 648 L +1474 537 L +832 -41 V +3969 471 L +% End plot #1 +% Begin plot #2 +stroke +LT2 +LCb setrgbcolor +2201 2639 M +[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] +] -46.7 MRshow +LT2 +2285 2639 M +399 0 V +654 1786 M +16 -339 V +24 -169 V +748 917 L +852 723 L +1059 606 L +416 -79 V +832 -43 V +3969 467 L +% End plot #2 +% Begin plot #3 +stroke +LT3 +LCb setrgbcolor +2201 2499 M +[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] +] -46.7 MRshow +LT3 +2285 2499 M +399 0 V +654 1837 M +16 -296 V +26 -324 V +748 970 L +851 740 L +1059 610 L +416 -81 V +832 -39 V +3970 466 L +% End plot #3 +% Begin plot #4 +stroke +LT4 +LCb setrgbcolor +2201 2359 M +[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] +] -46.7 MRshow +LT4 +2285 2359 M +399 0 V +654 1958 M +14 -347 V +26 -349 V +748 965 L +850 751 L +1058 612 L +416 -83 V +833 -41 V +3970 467 L +% End plot #4 +stroke +1.000 UL +LTb +602 2855 M +602 448 L +3465 0 V +0 2407 R +-3465 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/xoanon_pthread_vthread_40core_80_160_320_640thds__o30000__perfCtrs.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/figures/plots_exec_vs_task_size/xoanon_pthread_vthread_40core_80_160_320_640thds__o30000__perfCtrs.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,948 @@ +%!PS-Adobe-2.0 +%%Title: xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.eps +%%Creator: gnuplot 4.4 patchlevel 2 +%%CreationDate: Thu Jan 26 18:27:40 2012 +%%DocumentFonts: (atend) +%%BoundingBox: 251 50 554 482 +%%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 (xoanon_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 (Thu Jan 26 18:27:40 2012) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 922 M +63 0 V +stroke +602 922 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] +] -46.7 MRshow +1.000 UL +LTb +686 1405 M +63 0 V +stroke +602 1405 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 1888 M +63 0 V +stroke +602 1888 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] +] -46.7 MRshow +1.000 UL +LTb +686 2372 M +63 0 V +stroke +602 2372 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 2855 M +63 0 V +stroke +602 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1109 448 M +0 63 V +stroke +1109 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1531 448 M +0 63 V +stroke +1531 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1954 448 M +0 63 V +stroke +1954 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2377 448 M +0 63 V +stroke +2377 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2799 448 M +0 63 V +stroke +2799 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3222 448 M +0 63 V +stroke +3222 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3644 448 M +0 63 V +stroke +3644 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +stroke +LCb setrgbcolor +112 1651 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 +2376 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +3532 2882 M +[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] +] -46.7 MCshow +LTb +1.000 UL +LTb +2787 2252 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +2787 2812 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT5 +LC7 setrgbcolor +LCb setrgbcolor +3711 2742 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT5 +LC7 setrgbcolor +3795 2742 M +399 0 V +1735 2855 M +662 -919 V +4067 1238 L +% End plot #1 +% Begin plot #2 +stroke +LT6 +LCb setrgbcolor +3711 2602 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT6 +3795 2602 M +399 0 V +1748 2855 M +2555 1723 L +4067 1065 L +% End plot #2 +% Begin plot #3 +stroke +LT7 +LC1 setrgbcolor +LCb setrgbcolor +3711 2462 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT7 +LC1 setrgbcolor +3795 2462 M +399 0 V +1420 2855 M +170 -542 V +784 -867 V +3986 870 L +% End plot #3 +% Begin plot #4 +stroke +LT8 +LCb setrgbcolor +3711 2322 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT8 +3795 2322 M +399 0 V +1802 2855 M +572 -574 V +4007 1207 L +% End plot #4 +stroke +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +1.000 UP +686 922 M +63 0 V +stroke +602 922 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] +] -46.7 MRshow +1.000 UL +LTb +686 1405 M +63 0 V +stroke +602 1405 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] +] -46.7 MRshow +1.000 UL +LTb +686 1888 M +63 0 V +stroke +602 1888 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] +] -46.7 MRshow +1.000 UL +LTb +686 2372 M +63 0 V +stroke +602 2372 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] +] -46.7 MRshow +1.000 UL +LTb +686 2855 M +63 0 V +stroke +602 2855 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] +] -46.7 MRshow +1.000 UL +LTb +686 448 M +0 63 V +stroke +686 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +1109 448 M +0 63 V +stroke +1109 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] +] -46.7 MCshow +1.000 UL +LTb +1531 448 M +0 63 V +stroke +1531 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] +] -46.7 MCshow +1.000 UL +LTb +1954 448 M +0 63 V +stroke +1954 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] +] -46.7 MCshow +1.000 UL +LTb +2377 448 M +0 63 V +stroke +2377 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] +] -46.7 MCshow +1.000 UL +LTb +2799 448 M +0 63 V +stroke +2799 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] +] -46.7 MCshow +1.000 UL +LTb +3222 448 M +0 63 V +stroke +3222 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] +] -46.7 MCshow +1.000 UL +LTb +3644 448 M +0 63 V +stroke +3644 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] +] -46.7 MCshow +1.000 UL +LTb +4067 448 M +0 63 V +stroke +4067 308 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] +] -46.7 MCshow +1.000 UL +LTb +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +stroke +LCb setrgbcolor +112 1651 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 +2376 98 M +[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] +] -46.7 MCshow +LTb +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +2011 2882 M +[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] +] -46.7 MCshow +LTb +1.000 UL +LTb +1266 2252 N +0 700 V +1491 0 V +0 -700 V +-1491 0 V +Z stroke +1266 2812 M +1491 0 V +% Begin plot #1 +stroke +4.000 UL +LT0 +LCb setrgbcolor +2190 2742 M +[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] +] -46.7 MRshow +LT0 +2274 2742 M +399 0 V +743 626 M +22 -61 V +39 -36 V +75 -37 V +154 -17 V +303 -13 V +609 -7 V +1218 -2 V +904 -1 V +% End plot #1 +% Begin plot #2 +stroke +LT2 +LCb setrgbcolor +2190 2602 M +[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] +] -46.7 MRshow +LT2 +2274 2602 M +399 0 V +743 575 M +24 4 V +36 -82 V +76 -20 V +153 -6 V +303 -12 V +609 -4 V +1217 -4 V +906 -1 V +% End plot #2 +% Begin plot #3 +stroke +LT3 +LCb setrgbcolor +2190 2462 M +[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] +] -46.7 MRshow +LT3 +2274 2462 M +399 0 V +742 581 M +24 -38 V +39 -9 V +76 -41 V +151 -19 V +304 -11 V +610 -7 V +1216 -5 V +905 -1 V +% End plot #3 +% Begin plot #4 +stroke +LT4 +LCb setrgbcolor +2190 2322 M +[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] +] -46.7 MRshow +LT4 +2274 2322 M +399 0 V +743 589 M +23 -41 V +38 -29 V +77 -20 V +151 -28 V +303 -12 V +610 -4 V +1217 -4 V +905 0 V +% End plot #4 +stroke +1.000 UL +LTb +686 2855 M +686 448 L +3381 0 V +0 2407 R +-3381 0 R +1.000 UP +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/helpers/07_F_26__The_Questions__blank.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/helpers/07_F_26__The_Questions__blank.txt Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,100 @@ + + +1) What are the problems the authors are trying to solve? + When done, for each problem, how does one decide the value of a proposed solution? Suggest a priority domain for deciding whether to use a proposed solution. + +The problem is + +A priority domain for deciding the value of some proposed solution to this problem is + +The value of this solution is determined by + + + +2) What "things" does the proposed solution to this problem enable? + What benefit to reader is bought by each "thing", & what related to the "thing", gives the benefit. + What details are unique about the proposed solution that enables the thing that gives benefit? + How does that uniqueness enable or achieve the thing? + +It enables + +The benefit to me is + +Unique details of solution that enable the thing gives benefit are + +The uniqueness enables the thing that gives benefit by + + + +3) What are the fundamentals underlying the problem? + What makes this problem hard? + What are the basic elements and forces of the problem that the proposed solution has to be in terms of, avoid, use to advantage? ie: gravity, invariant relationships, market forces, human capacity (avg level of real programmers, hubris, legacy is held onto, barriers to adoption), and so on +How does the proposed solution work within/relate to/address/take advantage of/deal with the fundamentals underlying the problem? + +The fundamentals are + +The hard part is + +The basic elements are + +The proposed solution + + + +4) What are other approaches and conventional wisdom to solving these problems? + What benefits enabled by the proposed solution are not enabled by other work, and vice versa? + How does each approach address something the others miss? + Try to suggest groupings or categories for the various approaches. + Try to suggest ways multiple approaches may be combined to get more pros with fewer cons. + +Other approaches are + +A benefit enabled by the proposed that is not enabled by other work is + +Categories: + +Combining: + + + +5) What is/are the unique main "things" that enable what the proposed solution does? + Sketch the details of each of these "things". + Did you detect any drawbacks, not stated in the paper, from the details? + Did you see any really cool techniques? + +Unique main "things" are + +Drawbacks from details: + +Idea of + + + +6) What aspects of the implementation/proof/design need results given in order to convince you that the proposed solution delivers the stated benefits? + +They have to show + + + +7) What results did they show? + Did they show results in all the needed aspects (which were left out)? + Were the testing method and results shown good enough to convince you? + Did you detect any cons, not stated in the paper, from the results? + +They showed + +Con.. + + + +8) How do you think this work may provide some value to you in your future research? + +The work my provide value for me + + + +3 or more comments/questions: (pick out the most important things to you from the discussion you gave above, or add things that were not brought out by the above questions. I am asking for these as things to bring up during class). + +1) + + \ No newline at end of file diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/helpers/bib_for_papers.bib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/helpers/bib_for_papers.bib Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,1257 @@ + + + +"" +@Article{, + author = {}, + title = {}, + journal = {}, + volume = {}, + number = {}, + year = {}, + pages = {} +} + + + +"" +@Book{, + author = {}, + title = {}, + publisher = {}, + year = {}, + pages = {} +} + + + +"" +@misc{, + author = {}, + title = {}, + url = {} +} + + +"Lamport paper with clock sync" +@article{Lamport78, + author = {Lamport, Leslie}, + title = {Time, clocks, and the ordering of events in a distributed system}, + journal = {Commun. ACM}, + volume = {21}, + issue = {7}, + year = {1978}, + pages = {558--565}, + } + +"Lamport paper with mutex lock algorithm" +@article{Lamport87, + author = {Lamport, Leslie}, + title = {A fast mutual exclusion algorithm}, + journal = {ACM Trans. Comput. Syst.}, + volume = {5}, + issue = {1}, + year = {1987}, + pages = {1--11} +} + +"Dijkstra semaphore definition paper" +@inproceedings{Dijkstra67, + author = {Dijkstra, Edsger W.}, + title = {The structure of the "{THE}"-multiprogramming system}, + booktitle = {Proceedings of the first ACM symposium on Operating System Principles}, + series = {SOSP '67}, + year = {1967}, + pages = {10.1--10.6} + } + +"Original coroutine paper" +@article{Conway63, + author = {Conway, Melvin E.}, + title = {Design of a separable transition-diagram compiler}, + journal = {Commun. ACM}, + volume = {6}, + issue = {7}, + year = {1963}, + pages = {396--408} +} + +"Component model book Leavens G, Sitaraman M(eds.). Foundations of Component-Based Systems. Cambridge University Press: Cambridge, 2000" +@Book{ComponentModel00, + author = {G Leavens and M Sitaraman (eds)}, + title = {Foundations of Component-Based Systems}, + publisher = {Cambridge University Press}, + year = {2000} +} + + +"Hewitt Actors Ref on ArXiv" +@misc{Hewitt10, + author = {Carl Hewitt}, + title = {Actor Model of Computation}, + year = {2010}, + note = {http://arxiv.org/abs/1008.1459} +} + +"Actors paper -- AGHA has a 1985 tech report looks like it introduces Actors as an execution model..?" +@article{Actors97, +author = {Agha,G. and Mason,I. and Smith,S. and Talcott,C.}, +title = {A foundation for actor computation}, +journal = {Journal of Functional Programming}, +volume = {7}, +number = {01}, +pages = {1-72}, +year = {1997}, +} + +"Scheduler Activations: M onto N thread technique" +@article{SchedActivations, + author = {Anderson, Thomas E. and Bershad, Brian N. and Lazowska, Edward D. and Levy, Henry M.}, + title = {Scheduler activations: effective kernel support for the user-level management of parallelism}, + journal = {ACM Trans. Comput. Syst.}, + volume = {10}, + issue = {1}, + month = {February}, + year = {1992}, + pages = {53--79} +} + +"BOM in Manticore project: functional language for scheduling and concurrency" +@inproceedings{BOMinManticore, + author = {Fluet, Matthew and Rainey, Mike and Reppy, John and Shaw, Adam and Xiao, Yingqi}, + title = {Manticore: a heterogeneous parallel language}, + booktitle = {Proceedings of the 2007 workshop on Declarative aspects of multicore programming}, + series = {DAMP '07}, + year = {2007}, + pages = {37--44}, + numpages = {8} +} + + +//===================================== +"Gain from Chaos tech report" +@techreport + {Halle92, + Author = {Halle, K.S. and Chua, Leon O. and Anishchenko, V.S. and Safonova, M.A.}, + Title = {Signal Amplification via Chaos: Experimental Evidence}, + Institution = {EECS Department, University of California, Berkeley}, + Year = {1992}, + URL = {http://www.eecs.berkeley.edu/Pubs/TechRpts/1992/2223.html}, + Number = {UCB/ERL M92/130} +} + + +Reprinted in: +Madan, R. N. (1993) Chua’s Circuit : A Paradigm for Chaos, World Scientific, Singapore. +"Signal Amplification via Chaos: Experimental Evidence" +K.S. Halle, Leon O. Chua, V.S. Anishchenko and M.A. Safonova +pgs 290-308 + + +"Spread Spectrum Communication Through Modulation of Chaos" +Halle K.S., Wu C.W., Itoh M., Chua L.O. Spread Spectrum Communication Through Modulation of Chaos. Int. J. of Bifur. and Chaos, (3):469–477. 1993. +cited by 232 + + +"Experimental Demonstration of Secure Communications Via Chaotic Synchronization" +Kocarev V, Halle K.S., Eckert K., Chua L.O., Parlitz V. Experimental Demonstration of Secure Communications Via Chaotic Synchronization. Int. J. Bifur. and Chaos, (2):709 713. 1992. + + +//========================================== + +"BLIS 2010 HotPar: Leveraging Semantics Attached to Function Calls to Isolate Applications from Hardware" +@inproceedings + {BLISInHotPar, + author = {Sean Halle and Albert Cohen}, + booktitle = {HOTPAR '10: USENIX Workshop on Hot Topics in Parallelism}, + month = {June}, + title = {Leveraging Semantics Attached to Function Calls to Isolate Applications from Hardware}, + year = {2010} + } + +"2011 HotPar: " +@inproceedings + {HotPar11, + author = {Sean Halle and Albert Cohen}, + booktitle = {HOTPAR '11: USENIX Workshop on Hot Topics in Parallelism}, + month = {May}, + title = {}, + year = {2011} + } + +"VMS in LCPC 2011" +@article{VMSLCPC, + author = {Sean Halle and Albert Cohen}, + title = {A Mutable Hardware Abstraction to Replace Threads}, + journal = {24th International Workshop on Languages and Compilers for Parallel Languages (LCPC11)}, + year = {2011} +} + + +"A Framework to Support Research on Portable High Performance Parallelism" +@misc{FrameworkTechRep, + Author = {Halle, Sean and Nadezhkin, Dmitry and Cohen, Albert}, + Note = {http://www.soe.ucsc.edu/share/technical-reports/2010/ucsc-soe-10-02.pdf}, + Title = {A Framework to Support Research on Portable High Performance Parallelism}, + Year = 2010 +} + +"DKU Pattern for Performance Portable Parallel Software" +@misc{DKUTechRep, + Author = {Halle, Sean and Cohen, Albert}, + Note = {http://www.soe.ucsc.edu/share/technical-reports/2009/ucsc-soe-09-06.pdf}, + Title = {DKU Pattern for Performance Portable Parallel Software}, + Year = 2009 +} + +"An Extensible Parallel Language" +@misc{EQNLangTechRep, + Author = {Halle, Sean}, + Note = {http://www.soe.ucsc.edu/share/technical-reports/2009/ucsc-soe-09-16.pdf}, + Title = {An Extensible Parallel Language}, + Year = 2009 +} + +"A Hardware-Independent Parallel Operating System Abstraction Layer" +@misc{CTOSTechRep, + Author = {Halle, Sean}, + Note = {http://www.soe.ucsc.edu/share/technical-reports/2009/ucsc-soe-09-15.pdf}, + Title = {A Hardware-Independent Parallel Operating System Abstraction LayerParallelism}, + Year = 2009 +} + +"Parallel Language Extensions for Side Effects" +@misc{SideEffectsTechRep, + Author = {Halle, Sean and Cohen, Albert}, + Note = {http://www.soe.ucsc.edu/share/technical-reports/2009/ucsc-soe-09-14.pdf}, + Title = {Parallel Language Extensions for Side Effects}, + Year = 2009 +} + + +"BaCTiL: Base CodeTime Language" +@misc{BaCTiLTechRep, + Author = {Halle, Sean}, + Note = {http://www.soe.ucsc.edu/share/technical-reports/2006/ucsc-crl-06-08.pdf}, + Title = {BaCTiL: Base CodeTime Language}, + Year = 2006 +} + + +"The Elements of the CodeTime Software Platform" +@misc{CTPlatformTechRep, + Author = {Halle, Sean}, + Note = {http://www.soe.ucsc.edu/share/technical-reports/2006/ucsc-crl-06-09.pdf}, + Title = {The Elements of the CodeTime Software Platform}, + Year = 2006 +} + + +"A Scalable and Efficient Peer-to-Peer Run-Time System for a Hardware Independent Software Platform" +@misc{CTRTTechRep, + Author = {Halle, Sean}, + Note = {http://www.soe.ucsc.edu/share/technical-reports/2006/ucsc-crl-06-10.pdf}, + Title = {A Scalable and Efficient Peer-to-Peer Run-Time System for a Hardware Independent Software Platform}, + Year = 2006 +} + + +"The Big-Step Operational Semantics of CodeTime Circuits" +@misc{FrameworkTechRep, + Author = {Halle, Sean}, + Note = {http://www.soe.ucsc.edu/share/technical-reports/2006/ucsc-crl-06-11.pdf}, + Title = {The Big-Step Operational Semantics of CodeTime Circuits}, + Year = 2006 +} + + +"A Mental Framework for use in Creating Hardware Independent Parallel Languages" +@misc{FrameworkTechRep, + Author = {Halle, Sean}, + Note = {http://www.soe.ucsc.edu/share/technical-reports/2006/ucsc-crl-06-12.pdf}, + Title = {A Mental Framework for use in Creating Hardware Independent Parallel Languages}, + Year = 2006 +} + + +"The Case for an Integrated Software Platform for HEC Illustrated Using the CodeTime Platform" +@misc{CIPTechRep, + Author = {Halle, Sean}, + Note = {http://www.soe.ucsc.edu/share/technical-reports/2005/ucsc-crl-05-05.pdf}, + Title = {The Case for an Integrated Software Platform for HEC Illustrated Using the CodeTime Platform}, + Year = 2005 +} + +//========================================== + + +"OMP Hompe page" +@misc{OMPHome, + Note = {http://www.openmediaplatform.eu/}, + Title = {{Open Media Platform} homepage}, +} + +"The OMP infrastructure site" +@misc{Halle2008, + Author = {Sean Halle and Albert Cohen}, + Note = {http://omp.musictwodotoh.com}, + Title = {{DKU} infrastructure server} +} + + + +"The DKU sourceforge site" +@misc{DKUSourceForge, + Author = {Sean Halle and Albert Cohen}, + Month = {November}, + Note = {http://dku.sourceforge.net}, + Title = {{DKU} website}, + Year = {2008} +} + + +"The BLIS sourceforge site" +@misc{BLISHome, + Author = {Sean Halle and Albert Cohen}, + Month = {November}, + Note = {http://blisplatform.sourceforge.net}, + Title = {{BLIS} website}, + Year = {2008} +} + + +"The VMS Home page" +@misc{VMSHome, + Author = {Sean Halle and Merten Sach and Ben Juurlink and Albert Cohen}, + Note = {http://virtualizedmasterslave.org}, + Title = {{VMS} Home Page}, + Year = {2010} +} + + +"The PStack Home page" +@misc{PStackHome, + Author = {Sean Halle}, + Note = {http://pstack.sourceforge.net}, + Title = {{PStack} Home Page}, + Year = {2012} +} + + +"Deblocking code in SVN" +@misc{DeblockingCode, + Note = {http://dku.svn.sourceforge.net/viewvc/dku/branches/DKU\_C\_\_Deblocking\_\_orig/}, + Title ={{DKU-ized Deblocking Filter} code} +} + + + +"Sample code on BLIS site" +@misc{SampleBLISCode, + Note = {http://dku.sourceforge.net/SampleCode.htm}, + Title ={{Sample BLIS Code}} +} + +"Framework Technical Report" +@misc{FrameworkTechRep, + Author = {Halle, Sean and Nadezhkin, Dmitry and Cohen, Albert}, + Note = {http://www.soe.ucsc.edu/share/technical-reports/2010/ucsc-soe-10-02.pdf}, + Title = {A Framework to Support Research on Portable High Performance Parallelism} +} + +"Map reduce" +@misc{MapReduceHome, + Author = {Google Corp.}, + Note = {http://labs.google.com/papers/mapreduce.html}, + Title = {{MapReduce} Home page}, +} + + +"TBB Thread Building Blocks" +@misc{TBBHome, + Author = {Intel Corp.}, + Note = {http://www.threadingbuildingblocks.org}, + Title = {{TBB} Home page}, +} + + +"HPF Wikipedia entry" +@misc{HPFWikipedia, + Author = {Wikipedia}, + Note = {http://en.wikipedia.org/wiki/High_Performance_Fortran}, + Title = {{HPF} wikipedia page}, +} + + +"OpenMP Home page" +@misc{OpenMPHome, + Author = {{OpenMP} organization}, + Note = {http://www.openmp.org}, + Title = {{OpenMP} Home page} +} + + + +"Open MPI Home page" +@misc{MPIHome, + Author = {open-mpi organization}, + Note = {http://www.open-mpi.org}, + Title = {{Open MPI} Home page} +} + +"OpenCL Home page" +@misc{OpenCLHome, + Author = {Kronos Group}, + Note = {http://www.khronos.org/opencl}, + Title = {{OpenCL} Home page} +} + + +"CILK Hompe page" +@misc{CILKHome, + Author = {Cilk group at MIT}, + Note = {http://supertech.csail.mit.edu/cilk/}, + Title = {{CILK} homepage}, +} + +@InProceedings{Fri98, + author = {M. Frigo and C. E. Leiserson and K. H. Randall}, + title = {The Implementation of the Cilk-5 Multithreaded Language}, + booktitle = {PLDI '98: Proceedings of the 1998 ACM SIGPLAN conference on Programming language design and implementation}, + pages = {212--223}, + year = 1998, + address = {Montreal, Quebec}, + month = jun +} + + +"Titanium Hompe page" +@misc{TitaniumHome, + Note = {http://titanium.cs.berkeley.edu}, + Title = {{Titanium} homepage} +} + + +"CnC in HotPar" +@inproceedings{CnCInHotPar, + author = {Knobe, Kathleen}, + booktitle = {HOTPAR '09: USENIX Workshop on Hot Topics in Parallelism}, + month = {March}, + title = {Ease of Use with Concurrent Collections {(CnC)}}, + year = {2009} +} + + +"CnC Hompe page" +@misc{CnCHome, + Author = {Intel Corp.}, + Note = {http://software.intel.com/en-us/articles/intel-concurrent-collections-for-cc/}, + Title = {{CnC} homepage}, +} + +"Spiral Home page" +@misc{SpiralHome, + Author = {Spiral Group at CMU}, + Note = {http://www.spiral.net}, + Title = {{Spiral} homepage}, +} + + +"Scala Hompe page" +@misc{ScalaHome, + Author = {Scala organization}, + Note = {http://www.scala-lang.org/}, + Title = {{Scala} homepage}, +} + + + + +"UPC Hompe page" +@misc{UPCHome, + Author = {UPC group at UC Berkeley}, + Note = {http://upc.lbl.gov/}, + Title = {{Unified Parallel C} homepage}, +} + + +"Suif Hompe page" +@misc{SuifHome, + Note = {http://suif.stanford.edu}, + Title = {{Suif} Parallelizing compiler homepage}, +} + + + +"SEJITS" +@article{SEJITS, + author = {B. Catanzaro and S. Kamil and Y. Lee and K. Asanovic and J. Demmel and K. Keutzer and J. Shalf and K. Yelick and A. Fox}, + title = {SEJITS: Getting Productivity AND Performance With Selective Embedded JIT Specialization}, + journal = {First Workshop on Programmable Models for Emerging Architecture at the 18th International Conference on Parallel Architectures and Compilation Techniques }, + year = {2009} +} + + +"Arnaldo 3D parallel on NXP chip" +@inproceedings{Arnaldo3D, + author = {Azevedo, Arnaldo and Meenderinck, Cor and Juurlink, Ben and Terechko, Andrei and Hoogerbrugge, Jan and Alvarez, Mauricio and Ramirez, Alex}, + title = {Parallel H.264 Decoding on an Embedded Multicore Processor}, + booktitle = {HiPEAC '09: Proceedings of the 4th International Conference on High Performance Embedded Architectures and Compilers}, + year = {2009}, + pages = {404--418} + } + + +"Narayanan's GPU scheduling tool" +@article{NarayananGPUSched, + author = {Narayanan Sundaram and Anand Raghunathan and Srimat T. Chakradhar}, + title = {A framework for efficient and scalable execution of domain-specific templates on GPUs}, + journal ={International Parallel and Distributed Processing Symposium {(IPDPS)}}, + year = {2009}, + pages = {1-12}, +} + +"Polyhedral for GPU from Ohio State" +@inproceedings{PolyForGPU, + author = {Baskaran, Muthu Manikandan and Bondhugula, Uday and Krishnamoorthy, Sriram and Ramanujam, J. and Rountev, Atanas and Sadayappan, P.}, + title = {A compiler framework for optimization of affine loop nests for gpgpus}, + booktitle = {ICS '08: Proceedings of the 22nd annual international conference on Supercomputing}, + year = {2008}, + pages = {225--234}, + } + +"Loulou's Polyhedral loop-nest optimization paper in PLDI 08" +@inproceedings{Loulou08, + author = {Pouchet, Louis-No\"{e}l and Bastoul, C\'{e}dric and Cohen, Albert and Cavazos, John}, + title = {Iterative optimization in the polyhedral model: part ii, multidimensional time}, + booktitle = {ACM SIGPLAN conference on Programming language design and implementation {(PLDI)} }, + year = {2008}, + pages = {90--100}, + } + + +"Merge in HotPar" +@inproceedings{MergeInHotPar, + author = {Michael D. Linderman and James Balfour and Teresa H. Meng and William J. Dally}, + booktitle = {HOTPAR '09: USENIX Workshop on Hot Topics in Parallelism}, + month = {March}, + title = {Embracing Heterogeneity \- Parallel Programming for Changing Hardware}, + year = {2009} +} + + +"Galois system for irregular problems" +@inproceedings{GaloisRef, + author = {Kulkarni, Milind and Pingali, Keshav and Walter, Bruce and Ramanarayanan, Ganesh and Bala, Kavita and Chew, L. Paul}, + title = {Optimistic parallelism requires abstractions}, + booktitle = {PLDI '07: Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation}, + year = {2007}, + pages = {211--222} +} + +"Cool compiler book that talks about balancing task size with machine characteristics.. the one Amit had" +@book{Allen2002, + author = {Kennedy, Ken and Allen, John R.}, + title = {Optimizing compilers for modern architectures: a dependence-based approach}, + year = {2002}, + publisher = {Morgan Kaufmann Publishers Inc.} + } + + +"Streaming languages and tools survery paper" +@MISC{Stephens95, + author = {R. Stephens}, + title = {A Survey Of Stream Processing}, + year = {1995} +} + + +"Capsule" +@INPROCEEDINGS{Palatin06, + author = {P Palatin and Y Lhuillier and O Temam}, + title = {CAPSULE: Hardware-assisted parallel execution of componentbased programs}, + booktitle = {In Proceedings of the 39th Annual International Symposium on Microarchitecture}, + year = {2006}, + pages = {247--258} +} + +"Sequioa" +@inproceedings{Sequioa06, + author = {Fatahalian,, Kayvon and Horn,, Daniel Reiter and Knight,, Timothy J. and Leem,, Larkhoon and Houston,, Mike and Park,, Ji Young and Erez,, Mattan and Ren,, Manman and Aiken,, Alex and Dally,, William J. and Hanrahan,, Pat}, + title = {Sequoia: programming the memory hierarchy}, + booktitle = {SC '06: Proceedings of the 2006 ACM/IEEE conference on Supercomputing}, + year = {2006}, + pages = {83} + } + + + + +"Cole meta skeletons book" +@Book{Cole89, + author = {M Cole}, + title = {Algorithmic skeletons: Structured management of parallel computation}, + publisher = {Pitman}, + year = {1989} +} + + +"Meta programming skeletons example" +@INPROCEEDINGS{Ginhac98, + author = {Dominique Ginhac and Jocelyn Serot and Jean Pierre Derutin}, + title = {Fast prototyping of image processing applications using functional skeletons on a MIMD-DM architecture}, + booktitle = {In IAPR Workshop on Machine Vision and Applications}, + year = {1998}, + pages = {468--471} +} + + +"Parallel Skeletons meta programming" +@inproceedings{Serot08MetaParallel, + author = {Serot, Jocelyn and Falcou, Joel}, + title = {Functional Meta-programming for Parallel Skeletons}, + booktitle = {ICCS '08: Proceedings of the 8th international conference on Computational Science, Part I}, + year = {2008}, + pages = {154--163} + } + + +"Random skeletons for parallel programming article with lots of citations" +@INPROCEEDINGS{Darlington93, + author = {J. Darlington and A. J. Field and P. G. Harrison and P. H. J. Kelly and D. W. N. Sharp and Q. Wu}, + title = {Parallel programming using skeleton functions}, + booktitle = {}, + year = {1993}, + pages = {146--160}, + publisher = {Springer-Verlag} +} + + +"View from Berkeley paper" +@article{Asanovic06BerkeleyView, + title={{The landscape of parallel computing research: A view from berkeley}}, + author={Asanovic, K. and Bodik, R. and Catanzaro, B.C. and Gebis, J.J. and Husbands, P. and Keutzer, K. and Patterson, D.A. and Plishker, W.L. and Shalf, J. and Williams, S.W. and others}, + journal={Electrical Engineering and Computer Sciences, University of California at Berkeley, Technical Report No. UCB/EECS-2006-183, December}, + volume={18}, + number={2006-183}, + pages={19}, + year={2006}, +} + + + + +"Berkeley Pattern Language" +@misc{BerkeleyPattLang, + Note = {http://parlab.eecs.berkeley.edu/wiki/patterns}, + Title = {{Berkeley Pattern Language}} +} + + +"Keutzer reccomended Parallel Prog Patterns book" +@book{Mattson04Patterns, + title={{Patterns for parallel programming}}, + author={Mattson, T. and Sanders, B. and Massingill, B.}, + year={2004}, + publisher={Addison-Wesley Professional} +} + + +"Skillicorn Parallel Languages Survery book" +@article{Skillicorn98, + title={{Models and languages for parallel computation}}, + author={Skillicorn, D.B. and Talia, D.}, + journal={ACM Computing Surveys (CSUR)}, + volume={30}, + number={2}, + pages={123--169}, + year={1998} +} + + + +"NESL language" +@conference{Blelloch93NESL, + title={{Implementation of a portable nested data-parallel language}}, + author={Blelloch, G.E. and Hardwick, J.C. and Chatterjee, S. and Sipelstein, J. and Zagha, M.}, + booktitle={Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming}, + pages={102--111}, + year={1993}, + organization={ACM New York, NY, USA} +} + + +"Sisal" +@article{McgrawSisal, + title={{SISAL: Streams and iteration in a single assignment language: Reference manual version 1.2}}, + author={McGraw, J. and Skedzielewski, SK and Allan, SJ and Oldehoeft, RR and Glauert, J. and Kirkham, C. and Noyce, B. and Thomas, R.}, + journal={Manual M-146, Rev}, + volume={1} +} + + +"Linda" +@article{Gelernter85Linda, + title={{Generative communication in Linda}}, + author={Gelernter, D.}, + journal={ACM Transactions on Programming Languages and Systems (TOPLAS)}, + volume={7}, + number={1}, + pages={80--112}, + year={1985} +} + + +"ZPL" +@article{Lin94ZPL, + title={{ZPL: An array sublanguage}}, + author={Lin, C. and Snyder, L.}, + journal={Lecture Notes in Computer Science}, + volume={768}, + pages={96--114}, + year={1994} +} + + + + +// Visual programming +@article + { baecker97, + author = {Ron Baecker and Chris DiGiano and Aaron Marcus}, + title = {Software visualization for debugging}, + journal = {Communications of the ACM}, + volume = {40}, + number = {4}, + year = {1997}, + issn = {0001-0782}, + pages = {44--54}, + publisher = {ACM Press} + } + + +// Visual programming +@article + { ball96, + author = {T. A. Ball and S. G. Eick}, + title = {Software Visualization in the Large}, + journal ={IEEE Computer}, + volume = {29}, + number = {4}, + year = {1996}, + month = {apr}, + pages = {33--43} + } + + +// Milner references this, Chemical Abstract Machine +@book + {berry89, + title={{The chemical abstract machine}}, + author={Berry, G. and Boudol, G.}, + year={1989}, + publisher={ACM Press} +} + + +// Cilk reference +@article + {blumofe95, + author = {Robert D. Blumofe and Christopher F. Joerg and Bradley C. Kuszmaul and Charles E. Leiserson and Keith H. Randall and Yuli Zhou}, + title = {Cilk: an efficient multithreaded runtime system}, + journal = {SIGPLAN Not.}, + volume = {30}, + number = {8}, + year = {1995}, + pages = {207--216} + } + + +// this has 1440 citations, so throwing it in.. +// The complexity of symbolic checking of program correctness +@article + {burch90, + title={{Symbolic model checking: 10^{20} states and beyond}}, + author={Burch, JR and Clarke, EM and McMillan, KL and Dill, DL and Hwang, LJ}, + journal={Logic in Computer Science, 1990. LICS'90, Proceedings}, + pages={428--439}, + year={1990} +} + +@article + {chamberlain98, +author = {B. Chamberlain and S. Choi and E. Lewis and C. Lin and L. Snyder and W. Weathersby}, +title = {ZPL's WYSIWYG Performance Model}, +journal = {hips}, +volume = {00}, +year = {1998}, +isbn = {0-8186-8412-7}, +pages = {50} +} + + + +// from http://libweb.princeton.edu/libraries/firestone/rbsc/aids/church/church1.html#1 +@article{church41, + author={A. Church}, + title={The Calculi of Lambda-Conversion}, + journal={Annals of Mathematics Studies}, + number={6}, + year={1941}, + publisher={Princeton University} +} + + +@misc + { CodeTimeSite, + author = {Sean Halle}, + key = {CodeTime}, + title = {Homepage for The CodeTime Parallel Software Platform}, + note = {{\ttfamily http://codetime.sourceforge.net}} + } + + + +@misc + { CodeTimePlatform, + author = {Sean Halle}, + key = {CodeTime}, + title = {The CodeTime Parallel Software Platform}, + note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTime\_Platform.pdf}} + } + + +@misc + { CodeTimeVS, + author = {Sean Halle}, + key = {CodeTime}, + title = {The Specification of the CodeTime Platform's Virtual Server}, + note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTime\_Virtual\_Server.pdf}} + } + + +@misc + { CodeTimeOS, + author = {Sean Halle}, + key = {CodeTime}, + title = {A Hardware Independent OS}, + note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTime\_OS.pdf}} + } + + +@misc + { CodeTimeSem, + author = {Sean Halle}, + key = {CodeTime}, + title = {The Big-Step Operational Semantics of the CodeTime Computational Model}, + note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTime\_Semantics.pdf}} + } + + +@misc + { CodeTimeTh, + author = {Sean Halle}, + key = {CodeTime}, + title = {A Mental Framework for Use in Creating Hardware-Independent Parallel Languages}, + note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTiime\_Theoretical\_Framework.pdf}} + } + + +@misc + { CodeTimeTh1, + author = {Sean Halle}, + key = {CodeTime}, + title = {The CodeTime Parallel Software Platform}, + note = {{\ttfamily http://codetime.sourceforge.net}} + } + + +@misc + { CodeTimeTh2, + author = {Sean Halle}, + key = {CodeTime}, + title = {The CodeTime Parallel Software Platform}, + note = {{\ttfamily http://codetime.sourceforge.net}} + } + + +@misc + { CodeTimeRT, + author = {Sean Halle}, + key = {CodeTime}, + title = {The CodeTime Parallel Software Platform}, + note = {{\ttfamily http://codetime.sourceforge.net}} + } + + +@misc + { CodeTimeWebSite + author = {Sean Halle}, + key = {CodeTime}, + title = {The CodeTime Parallel Software Platform}, + note = {{\ttfamily http://codetime.sourceforge.net}} + } + + +@misc + { CodeTimeBaCTiL, + author = {Sean Halle}, + key = {CodeTime}, + title = {The Base CodeTime Language}, + note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTime\_BaCTiL.pdf}} + } + +@misc + { CodeTimeCert, + author = {Sean Halle}, + key = {CodeTime}, + title = {The CodeTime Certification Strategy}, + note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTime\_Certification.pdf}} + } + + +// Multiple inheritance: explains issues well and references LOOPS and CLOS +@inproceedings{ducournau94, + author = {R. Ducournau and M. Habib and M. Huchard and M. L. Mugnier}, + title = {Proposal for a monotonic multiple inheritance linearization}, + booktitle = {OOPSLA '94: Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications}, + year = {1994}, + pages = {164--175}, + publisher = {ACM Press} +} + + +// 252 Citations, shows equivalence of mu-calculus and (nondeterministic) tree automata, +// so cited as foundation a lot +@article{emerson91, + title={{Tree automata, mu-calculus and determinacy}}, + author={Emerson, EA and Jutla, CS}, + journal={Proceedings of the 32nd Symposium on Foundations of Computer Science}, + pages={368--377}, + year={1991} +} + + +// Introducs PRAM model, at same time, in same conference as +@article{fortune78, + title={{Parallelism in random access machines}}, + author={Fortune, S. and Wyllie, J.}, + journal={STOC '78: Proceedings of the tenth annual ACM symposium on Theory of computing}, + pages={114--118}, + year={1978}, + publisher={ACM Press New York, NY, USA} +} + + + +// Smalltalk reference +@book{goldberg83, + title={{Smalltalk-80: the language and its implementation}}, + author={Goldberg, A. and Robson, D.}, + year={1983}, + publisher={Addison-Wesley} +} + + +// also introduces PRAM model, apparently independently +@inproceedings{goldschlager78, + author = {Leslie M. Goldschlager}, + title = {A unified approach to models of synchronous parallel machines}, + booktitle = {STOC '78: Proceedings of the tenth annual ACM symposium on Theory of computing}, + year = {1978}, + pages = {89--94}, + location = {San Diego, California, United States}, + doi = {http://doi.acm.org/10.1145/800133.804336}, + publisher = {ACM Press}, +} + + +// Java spec +@book + { gosling96, + author = {J. Gosling and B. Joy and G. Steele and G. Bracha}, + title = {The Java Language Specification}, + publisher = {Addison-Wesley}, + year = {1996} + } + + +// Survey of prototyping parallel apps +@article{hasselbring00, + author = {Wilhelm Hasselbring}, + title = {Programming languages and systems for prototyping concurrent applications}, + journal = {ACM Comput. Surv.}, + volume = {32}, + number = {1}, + year = {2000}, + issn = {0360-0300}, + pages = {43--79}, + doi = {http://doi.acm.org/10.1145/349194.349199}, + publisher = {ACM Press}, + address = {New York, NY, USA}, + } + + +// Original CSP paper +@article{hoare78, + author={C. A. R. Hoare}, + title={Communicating Sequential Processes}, + journal={Communications of the ACM}, + year={1978}, + volume={21}, + number={8}, + pages={666-677} +} + + +// 8 citations.. probably from self.. want a paper that ties areas together.. +// This paper does a beautiful job.. +@article{huth, + title={{A Unifying Framework for Model Checking Labeled Kripke Structures, Modal Transition Systems, and Interval Transition Systems}}, + author={Huth, M.}, + journal={Proceedings of the 19th International Conference on the Foundations of Software Technology \& Theoretical Computer Science, Lecture Notes in Computer Science}, + pages={369--380}, + publisher={Springer-Verlag} +} + + +// Dataflow advances survey, includes large grain dataflow +@article + { johnston04, + author = {Wesley M. Johnston and J. R. Paul Hanna and Richard J. Millar}, + title = {Advances in dataflow programming languages}, + journal = {ACM Comput. Surv.}, + volume = {36}, + number = {1}, + year = {2004}, + issn = {0360-0300}, + pages = {1--34}, + doi = {http://doi.acm.org/10.1145/1013208.1013209}, + publisher = {ACM Press}, + address = {New York, NY, USA} + } + + +@book + { koelbel93, + author = {C. H. Koelbel and D. Loveman and R. Schreiber and G. Steele Jr}, + title = {High Performance Fortran Handbook}, + year = {1993}, + publisher = {MIT Press} + } + + +// mu calculus paper with 430 citations +@article{kozen83, + title={{Results on the Propositional mu-Calculus}}, + author={Kozen, D.}, + journal={TCS}, + volume={27}, + pages={333--354}, + year={1983} +} + + +// original kripke structure paper +@article{kripke63, + title={{Semantical analysis of modal logic}}, + author={Kripke, S.}, + journal={Zeitschrift fur Mathematische Logik und Grundlagen der Mathematik}, + volume={9}, + pages={67--96}, + year={1963} +} + + +@book + { mcGraw85, + author = {J McGraw and S. Skedzielewski and S. Allan and R Odefoeft}, + title = {SISAL: Streams and Iteration in a Single-Assignment Language: Reference Manual Version 1.2}, + note = {Manual M-146 Rev. 1}, + publisher = {Lawrence Livermore National Laboratory}, + year = {1985} + } + + +// Milner's own citation to development of CCS +@book{milner80, + title={{A Calculus of Communicating Systems, volume 92 of Lecture Notes in Computer Science}}, + author={Milner, R.}, + year={1980}, + publisher={Springer-Verlag} +} + + +// Milner's own pi-calculus reference +@article{milner92, + title={{A calculus of mobile processes, parts I and II}}, + author={Milner, R. and Parrow, J. and Walker, D.}, + journal={Information and Computation}, + volume={100}, + number={1}, + pages={1--40 and 41--77}, + year={1992}, + publisher={Academic Press} +} + + +// more recent Pi calculus reference +@book + { milner99, + author = {Robin Milner}, + title = {Communicating and Mobile Systems: The pi-Calculus}, + publisher = {Cambridge University Press}, + year = {1999} + } + + +// MPI reference +@book + { MPIForum94, + author = {M. P. I. Forum}, + title = {MPI: A Message-Passing Interface Standard}, + year = {1994} + } + + +// Petri nets original citation +@article{petri62, + title={{Fundamentals of a theory of asynchronous information flow}}, + author={Petri, C.A.}, + journal={Proc. IFIP Congress}, + volume={62}, + pages={386--390}, + year={1962} +} + + +// Pierce Type system book +@book{pierce02, + title={Types and Programming Languages}, + author={Pierce, B. C.}, + year={2002}, + publisher={MIT Press} +} + + +// Survey of Visual programming +@Article + { price, + author = {B. A. Price and R. M. Baecker and L. S. Small}, + title = {A Principled Taxonomy of Software Visualization}, + journal ={Journal of Visual Languages and Computing}, + volume = {4}, + number = {3}, + pages = {211--266} + } + + + +@misc + { pythonWebSite, + key = {Python}, + title = {The Python Software Foundation Mission Statement}, + note = {{\ttfamily http://www.python.org/psf/mission.html}} + } + + +// Roadmap for Revitalization of High End Computing +@unpublished + { reed03, + editor = {Daniel A. Reed}, + title = {Workshop on The Roadmap for the Revitalization of High-End Computing}, + day = {16--18}, + month = {jun}, + year = {2003}, + note = {Available at {\ttfamily http://www.cra.org/reports/supercomputing.web.pdf}} + } + + +// Parallel Pascal +@Article + { reeves84, + author = {A. P. Reeves}, + title = {Parallel Pascal -- An Extended Pascal for Parallel Computers}, + journal = {Journal of Parallel and Distributed Computing}, + volume = {1}, + number = {}, + year = {1984}, + month = {aug}, + pages = {64--80} + } + + +// Survey of parallel langs and models +@article{skillicorn98, + author = {David B. Skillicorn and Domenico Talia}, + title = {Models and languages for parallel computation}, + journal = {ACM Comput. Surv.}, + volume = {30}, + number = {2}, + year = {1998}, + issn = {0360-0300}, + pages = {123--169}, + doi = {http://doi.acm.org/10.1145/280277.280278}, + publisher = {ACM Press}, + address = {New York, NY, USA}, + } + + +// LOOPS ref for multiple inheritance issues +@article{stefik86, + title={Object Oriented Programming: Themes and Variations}, + author={Stefik, M. and Bobrow, D. G.}, + journal={The AI Magazine}, + volume={6}, + number={4}, + year={1986} +} + + +// 240 citations to this book, so seems safe.. covers modal logics which is superset +// of temporal logics +@book{stirling92, + title={{Modal and Temporal Logics}}, + author={Stirling, C.}, + year={1992}, + publisher={University of Edinburgh, Department of Computer Science} +} + + +// Titanium website +@misc + { TitaniumWebSite, + author = {Paul Hilfinger and et. al.}, + title = {The Titanium Project Home Page}, + note = {{\ttfamily http://www.cs.berkeley.edu/projects/titanium}} + } + + +// website with scans of original work by Turing +@misc{turing38, + author={A. Turing}, + note={http://www.turingarchive.org/intro/, and +http://www.turing.org.uk/sources/biblio4.html, and +http://web.comlab.ox.ac.uk/oucl/research/areas/ieg/e-library/sources/tp2-ie.pdf}, + year={1938} +} + + +// First mention of von Neumann's architecture ideas +@book{vonNeumann45, + title={First Draft of a Report on the EDVAC}, + author={J. von Neumann}, + year={1945}, + publisher={United States Army Ordnance Department} +} + + +// The 203 Glynn Winskel book for Formal Semantics +@book{winskel93, + title={{The Formal Semantics of Programming Languages}}, + author={Winskel, G.}, + year={1993}, + publisher={MIT Press} +} + + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/helpers/plain.bst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/helpers/plain.bst Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,1098 @@ +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/helpers/url.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/helpers/url.sty Sun Mar 11 09:26:44 2012 -0700 @@ -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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/helpers/usetex-v1-anon.cls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/helpers/usetex-v1-anon.cls Sun Mar 11 09:26:44 2012 -0700 @@ -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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/helpers/usetex-v1.cls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/helpers/usetex-v1.cls Sun Mar 11 09:26:44 2012 -0700 @@ -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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/latex/11_Dc_27__HW_abstr_for_port_stack.tex Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,1474 @@ +%&latex + + +\documentclass[conference]{../helpers/llncs} +% + +%\usepackage{geometry} %chgs the margins and layout! +\usepackage{makeidx,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{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} + +\maketitle +% + +\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. 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 we 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. + +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. + +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 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 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. + + +\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. + +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{old stuff} + +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} + +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. + + + +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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.aux --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.aux Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,55 @@ +\relax +\bibstyle{plain} +\citation{PStackHome} +\citation{VMSHome} +\citation{PStackHome} +\citation{OpenMPHome} +\citation{TBBHome} +\citation{OpenCLHome} +\citation{Sequioa06} +\citation{SEJITS} +\@writefile{toc}{\contentsline {section}{\numberline {1}Motivation}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {2}Context: PStack}{1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}PStack elements}{1}} +\citation{HolisticHome} +\citation{DKUSourceForge} +\citation{BLISHome} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}How VMS influences the stack}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {3}Requirements}{2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Top Layer: Language Requirements}{2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Middle Layer: Runtime Requirements}{2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Bottom Layer: Abstraction Requirements}{2}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Depiction of PStack, with layers named on the left, and interfaces between layers named on the right. At the top are toolchains plus specializers, in the middle are runtimes connecting languages to hardware, and below that are hardware abstractions that collect similar hardware below a single interface and simplify runtime implementation. }}{3}} +\newlabel{figPStack}{{1}{3}} +\@writefile{toc}{\contentsline {section}{\numberline {4}Relating VMS Details to Requirements}{3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Top-layer}{3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Interface from top to middle}{3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Middle layer}{3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Interface from middle to bottom}{4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Bottom layer}{4}} +\@writefile{toc}{\contentsline {section}{\numberline {5}Experimental Setup}{4}} +\@writefile{toc}{\contentsline {section}{\numberline {6}Results}{4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Performance Results}{4}} +\citation{VMSLCPC} +\bibdata{../helpers/bib_for_papers} +\bibcite{SEJITS}{1} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces ${\begingroup ExecutionTime\endgroup \over WorkTime}$ vs $TaskTime$ on the 1x2 machine. It shows results for Vthread and pthread on the same axes, for 8 through 512 threads. The Vthread curves cluster, appearing as the bottom-most, while the pthread curves for 8, 32, and 128 are above it. The results for pthread with 512 threads land outside the plot. }}{5}} +\newlabel{figCray1Results}{{2}{5}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces ${\begingroup ExecutionTime\endgroup \over WorkTime}$ vs $TaskTime$ on the 1x4 machine. The results are similar to Figure 2\hbox {}. }}{5}} +\newlabel{figVMSResults}{{3}{5}} +\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces ${\begingroup ExecutionTime\endgroup \over WorkTime}$ vs $TaskTime$ on the 4x10 machine. The Vthread results are difficult to see, at the bottom of the plot, while the pthread results appear in the middle. The runs start at 80 threads, which is the number of hardware contexts in the machine. }}{5}} +\newlabel{figXoanonResults}{{4}{5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Implementation Time Results}{5}} +\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Person-days to design, code, and test each of three sets of parallelism constructs. L.O.C. is lines of (original) C code, excluding libraries and comments. }}{5}} +\newlabel{tabPersonDaysLang}{{1}{5}} +\@writefile{toc}{\contentsline {section}{\numberline {7}Conclusion}{5}} +\bibcite{TBBHome}{2} +\bibcite{Sequioa06}{3} +\bibcite{OpenCLHome}{4} +\bibcite{PStackHome}{5} +\bibcite{BLISHome}{6} +\bibcite{DKUSourceForge}{7} +\bibcite{VMSLCPC}{8} +\bibcite{VMSHome}{9} +\bibcite{OpenMPHome}{10} + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.bbl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.bbl Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,61 @@ +\begin{thebibliography}{10} + +\bibitem{SEJITS} +B.~Catanzaro, S.~Kamil, Y.~Lee, K.~Asanovic, J.~Demmel, K.~Keutzer, J.~Shalf, + K.~Yelick, and A.~Fox. +\newblock Sejits: Getting productivity and performance with selective embedded + jit specialization. +\newblock {\em First Workshop on Programmable Models for Emerging Architecture + at the 18th International Conference on Parallel Architectures and + Compilation Techniques}, 2009. + +\bibitem{TBBHome} +Intel Corp. +\newblock {TBB} home page. +\newblock http://www.threadingbuildingblocks.org. + +\bibitem{Sequioa06} +Kayvon Fatahalian, Daniel~Reiter Horn, Timothy~J. Knight, Larkhoon Leem, Mike + Houston, Ji~Young Park, Mattan Erez, Manman Ren, Alex Aiken, William~J. + Dally, and Pat Hanrahan. +\newblock Sequoia: programming the memory hierarchy. +\newblock In {\em SC '06: Proceedings of the 2006 ACM/IEEE conference on + Supercomputing}, page~83, 2006. + +\bibitem{OpenCLHome} +Kronos Group. +\newblock {OpenCL} home page. +\newblock http://www.khronos.org/opencl. + +\bibitem{PStackHome} +Sean Halle. +\newblock {PStack} home page, 2012. +\newblock http://pstack.sourceforge.net. + +\bibitem{BLISHome} +Sean Halle and Albert Cohen. +\newblock {BLIS} website, November 2008. +\newblock http://blisplatform.sourceforge.net. + +\bibitem{DKUSourceForge} +Sean Halle and Albert Cohen. +\newblock {DKU} website, November 2008. +\newblock http://dku.sourceforge.net. + +\bibitem{VMSLCPC} +Sean Halle and Albert Cohen. +\newblock A mutable hardware abstraction to replace threads. +\newblock {\em 24th International Workshop on Languages and Compilers for + Parallel Languages (LCPC11)}, 2011. + +\bibitem{VMSHome} +Sean Halle, Merten Sach, Ben Juurlink, and Albert Cohen. +\newblock {VMS} home page, 2010. +\newblock http://virtualizedmasterslave.org. + +\bibitem{OpenMPHome} +{OpenMP} organization. +\newblock {OpenMP} home page. +\newblock http://www.openmp.org. + +\end{thebibliography} diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.blg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.blg Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,22 @@ +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: 12_Ja_20__HotPar_Abstr_for_PStack.aux +The style file: plain.bst +Database file #1: ../helpers/bib_for_papers.bib +I was expecting a `,' or a `}'---line 889 of file ../helpers/bib_for_papers.bib + : + : author = {Sean Halle}, +(Error may have been on previous line) +I'm skipping whatever remains of this entry +Warning--I didn't find a database entry for "HolisticHome" + +Here's how much of BibTeX's memory you used: + Cites: 10 out of 7500 + Fields: 56 out of 125000 + Hash table: 34850 out of 35000 + Strings: 552 out of 30000 + String pool: 5561 out of 750000 + Wizard functions: 2118 out of 10000 +(There was 1 error message) diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.ddf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.ddf Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,2 @@ +[MakeIndex] +.idx=.ind diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.pdf Binary file 0__Papers/PStack/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.pdf has changed diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.tex Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,346 @@ +% 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{Supporting the Performant-Portability Software Stack with the Virtualized Master-Slave Abstraction} + +\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} +The HotPar 2012 call for papers states that 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 a way to organize players in research and industry to supply the pieces of the stack. + +A recently proposed candidate for such a software stack\cite{PStackHome} relies in part on the assumption that a suitable hardware abstraction exists for the bottom layer of the stack. The abstraction's main purpose is to reduce the effort required in the upper layers. It must reduce the effort of creating language runtimes: by hiding details of synchronization and communication; by regularizing implementation to simplify and encourage reuse across languages; and by reducing the number of runtimes needed by collecting multiple targets below a single interface. It must at the same time enable high performance, by giving the language control over task placement and exposing to the runtime's scheduler the memory hierarchy, communication characteristics, and other major performance-related aspects of the hardware. + +In this paper, we show that an abstraction called Virtualized Master-Slave, or VMS \cite{VMSHome} satisfies these criteria, and we 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." Which are element of the software stack, and normally supplied by multiple players in research and industry. The players need to be organized to supply the pieces of the stack. + +The goal of the stack is to make parallel programming as productive as sequential programming, and to make it as portable onto new generations of hardware as sequential code. + +Reduced cost of parallel software is one major benefit of such a stack. Part of the cost reduction comes from performant portability. This means code is written once then run performantly across hardware targets, including unknown future architectures. + +A recent proposal for achieving this, named PStack\cite{PStackHome}, calls for a software stack having a layer of languages (toolchains) at the top, a layer of runtimes below that, and a hardware abstraction layer at the bottom. + +It is this bottom layer that we focus on in this paper. We begin by giving context for the bottom layer with more information about the software stack, in Section 2. We then explore the requirements for the layers in in Section 3, and show how VMS satisfies the requirements in Section 4. We then move to results, giving our experimental setup in Section 5, and measurements in Section 6. In Section 7 we tie the elements of the paper together in the conclusion. + + +%%%%%%%%%%%%%%%%%%%%% +\section{Context: PStack} + +Many projects are attempting portability \cite{OpenMPHome,TBBHome,OpenCLHome,Sequioa06,SEJITS}. PStack differentiates itself in three ways: 1) it's goal is wider than most: (nearly) all-languages to (nearly) all hardware 2) It's approach is to \emph{organize} -- industry supplies the pieces of the solution, while PStack itself only provides the interfaces and scaffolding, along with the seed of a solution to start 3) PStack has unique approaches for the application interface and the hardware interface that fill fundamental needs. + +The general philosophy is that portability involves too much effort to be solved by a single group. Instead, an industry-wide effort is needed, where each player provides one small piece of the solution. This, though, requires some way to organize it all, and modularize the pieces. + +PStack addresses this by defining a number of interfaces, and providing tools to manage specialization. These result in a simple, decoupled process for adding new solution pieces. So, the solution can grow at its own pace, accumulating the efforts of many. + +\subsection{PStack elements} + +As seen in Figure \ref{figPStack}, at the top, a standard set of information is defined, which must be gathered from the application. Current languages don't capture all the required information. So PStack defines a set of constructs to be added to a language to fill its gaps. The added constructs are denoted ``+P'' appended to the language name. + +In the middle, standard runtimes require too much effort to create, and discourage reusing schedulers across languages. So PStack defines a hardware abstraction that removes as much as possible from the runtime, including concurrency in the runtime itself. The abstraction makes the runtimes all have similar structure, which simplifies reuse of complex scheduler code among languages. + +At the bottom, performance of the runtime itself requires intense low-level hand-tuning and debugging. This is captured inside the implementation of the abstraction. It is done once for each hardware target, then reused across the runtimes from all languages. So the intense hand-tuning is taken out of the runtimes, in the middle layer, while it benefits all languages and hence applications in the higher layers. + +\subsection{How VMS influences the stack} + +VMS was chosen as the abstraction in the bottom layer. However, VMS affects multiple interfaces and layers of the stack. At the top, it determines the way parallel constructs are embedded into base languages, and how custom-syntax languages generate their runtime-interactions. Next, between the top and middle, VMS defines the interface for the language layer to talk to the runtime layer. Then within the middle layer, VMS defines two standard function prototypes, so that a runtime consists of implementations of just these two functions. Between middle and bottom, VMS defines a number of services that runtimes in the middle can call, and also defines the interaction between the VMS-implementation and the two runtime functions. + + +\begin{figure*}[ht] +\center + \includegraphics[width=6in]{Portability_stack_combined.pdf} + \caption + {Depiction of PStack, with layers named on the left, and interfaces between layers named on the right. At the top are toolchains plus specializers, in the middle are runtimes connecting languages to hardware, and below that are hardware abstractions that collect similar hardware below a single interface and simplify runtime implementation. + } +\label{figPStack} + +\end{figure*} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Requirements} + +Although the paper focuses on the bottom abstraction, its requirements are influenced by the layers above. So we present a full picture of the requirements in the stack, to give a complete picture for the bottom abstraction. + +\subsection{Top Layer: Language Requirements} +The languages must be designed to capture all information required to specialize the source for high performance on any target hardware. A computation model, called The Holistic Model\cite{HolisticHome}, suggests that such a canonical set of information exists. + +PStack proposes to develop the constructs that gather the canonical information set, 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{DKUSourceForge}, which demonstrated the success of task-resizing constructs. + +PStack also calls for the use of the BLIS\cite{BLISHome} approach for managing multiple toolchains, where each toolchain specializes to a different target. The management covers 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 fit naturally within the approach. + +\subsection{Middle Layer: Runtime Requirements} + +Below the top layer, a collection of runtime systems acts as a sort of cross-bar switch, connecting the languages above to the hardware abstractions below. Such a ``cross-bar'' switch made up of runtimes implies a large number of runtimes. + +To be practical, the number of runtimes must be reduced; the effort of creating one must be reduced; and reuse of sophisticated runtime code must be encouraged. + +\subsection{Bottom Layer: Abstraction Requirements} + +The primary purpose of the bottom abstraction is to reduce the effort of creating the runtime layer. + +\begin{itemize} +\item The abstraction must hide details, making multiple hardware targets present the same interface and use a common runtime. +\item The abstraction must hide low-level tuning of the runtime itself, like synchronization-related tuning. +\item The asbstraction must provide common services, such as handling internal synchronization of the runtime, creation of tasks, communication, etc. +\item The abstraction must create uniform patterns for runtime implementation, making reuse between runtimes more practical and reducing the effort of making multiple runtimes. + +\end{itemize} + +However, the abstraction must not hide \textit{application}-performance-critical information from the runtime, which holds the scheduler that decides when tasks become ready and where to execute them. The 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 \emph{application} 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 application 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. + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Relating VMS Details to Requirements} + +Given the requirements, how does VMS meet them? We given more detail on VMS, at each place it affects the stack, and show how the details satisfy the requirements. + + +\subsection{Top-layer} + +With VMS, a language is implemented as either a collection of wrapper-library calls embedded into a base language, or as custom syntax. The wrapper-lib functions call a primitive supplied by VMS that suspends the virtual-processor animating the call, and sends a request to the runtime. This same VMS primitive is also used to implement custom syntax, inside the compiler. Thus, the VMS primitive is the means for the language layer to interact with the runtime layer. + + +VMS is invisible to the application, only language constructs are visible -- either wrapper-library calls or custom syntax. From the application-programmer point of view, even an embedded parallelism construct looks like a function call, albeit the data-structure of the virtual-processor animating the code has to be passed as a parameter to the wrapper-lib call. + + +\subsection{Interface from top to middle} + +The interface between application-executable and language-runtime is fixed, as the VMS-primitive that sends a request to the runtime. Even though PStack allows executables to be modified during installation or even runtime, via BLIS management of auto-tuners, multi-stage compilers, or binary re-writers, the VMS-primitive still must be used for the executable to interact with the runtime. + + +Such a standard interaction mechanism serves not only to modularize the stack, cleanly separating runtime from toolchain, but also to decouple executable from VMS implementation. The VMS primitive is naturally a custom instruction, but can also be, a trap to the OS, a message sent on a port, or a function call -- given appropriate executable modification under BLIS. + +\subsection{Middle layer} + + + +VMS causes the middle-layer portion of a runtime to be implemented as two functions. The first is the request-handler, which is the part of a scheduler that handles constraints. It determines which work units (tasks) are ready to be animated (executed). + The other function, sched-assigner, assigns ready work to hardware. This provides uniform patterns for the runtimes. + + + +When a request is ready for the runtime, VMS calls the request-handler function, and when hardware is free for work, VMS calls the scheduler-assign function. Thus, the language portion of the runtime is passive. + +By keeping control-flow inside VMS, the language-supplied portion of the runtime is simplified. Control flow includes any concurrency, and so is inside the VMS-implementation. Hence, the language-supplied runtime functions are sequential code, even though they implement the \textit{semantics} of language-level synchronization constructs. This simplifies runtime implementation. + +This structure is also the reason VMS encourages reuse of scheduler code. Scheduling is sub-divided into distinct modules: constraint-management (IE enforcing dependencies); and assigning work to resources. The assignment module is especially straight-forward to share between languages. + +Because application performance is most strongly influenced by communication within the hardware, the assignment module is critical. For high performance, it also tends to be complex. Thus, simple reuse of it is a significant benefit. + + +\subsection{Interface from middle to bottom} + +VMS's plugin API is the interface between the runtime and the bottom abstraction-implementation. The API has calls to register language-supplied runtime functions with the bottom abstraction, as well as support services. + + +Reduction of the number of runtimes is accomplished this way. Hardware targets with similar structure present the same interface, requiring only one runtime. + +Only structural elements that affect assignment choices are exposed in the API. For example, memory hierarchy is exposed as a VMS-defined data-structure made available to the sched-assign function. The details in the data convey the connectivity, communication, and sizes, which the assigner may use to optimize choices. + +\subsection{Bottom layer} + +The bottom layer consists of implementations of the VMS API and VMS primitives used in the upper levels, as well as the control-flow of the runtimes. Each hardware platform has its own implementation, allowing low-level hand-tweaking. This effort is performed once per hardware target, so is amortized across applications. Pulling this tuning below the interface also simplifies the runtime-portion in the middle layer. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Experimental Setup} +The experiments to measure VMS overhead were run on three machines: a one-socket 2 core 3GHz workstation (``1x2''), a one-socket 4 core SandyBridge 3.3GHz workstation (``1x4''), and a four-socket by 10 core each Westmere EX 2.4GHz server (``4x10''). + +The code consists of two loops: the innermost is a single task, while the outer repeats that task a number of times. The inner does throw-away work entirely within registers, where the number of iterations sets the amount of work in the task. After the inner completes, a synchronization is performed, which pairs each task to a sync operation. The outer then repeats the sequence of task-then-sync a large number of times to gain statistical accuracy and dominate any other sources of overhead. + +Two versions of the code were written: one that used pthread, a second that used a VMS-implemented equivalent called Vthread. Both have the same semantics, differing only in the implementation of scheduling triggered by the construct. Hence, any difference in execution time is due to the difference in scheduling overhead. + +%%%%%%%%%%%%%%%%%%%%%%% +\section{Results} +The new experimental results given in this paper focus on the overhead of the runtime, with the goal of showing that a language based on VMS enjoys low overhead compared to standard pthreads. We illustrate the amount of overhead by plotting a curve whose shape is determined by the overhead. + +The curve compares total CPU time to just work time. The difference is the overhead of scheduling, which consists of: switching from application to scheduler; updating the sync-construct state; choosing a new thread to schedule; and deciding on which core to re-animate it. + +The ratio of total CPU time to work time gets larger as the overhead increases, raising overhead's percent of the total. When the ratio is exactly 2, the work time exactly equals the overhead. Larger ratio indicates overhead dominates, smaller indicates work dominates. + +Hence, to find the size of the overhead, find the size of task where the work in the task exactly equals the overhead of scheduling the task. To do this, we plot the ratio on the y axis and single-task-time on x axis. When the ratio equals 2, the cycles of work in the task equals the overhead of scheduling the task. So the overhead can be read off the graph, as the task-size at the y=2 point. + + +\subsection{Performance Results} + +We executed on each of three machines. On a given machine, we first executed the pthread version, then the Vthread version, with a variety of numbers of threads. Varying the number of threads shows the effect on scheduling time. For a given machine, both sets of curves are plotted on the same graph, to make direct comparison easy. + +\begin{figure}[ht!] + \includegraphics[width=2.3in, angle = -90]{plots_exec_vs_task_size/cray1_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps} + \caption + {$\frac{ExecutionTime} {WorkTime}$ vs $TaskTime$ on the 1x2 machine. It shows results for Vthread and pthread on the same axes, for 8 through 512 threads. The Vthread curves cluster, appearing as the bottom-most, while the pthread curves for 8, 32, and 128 are above it. The results for pthread with 512 threads land outside the plot. + } +\label{figCray1Results} +\end{figure} + +Figure \ref{figCray1Results} shows results for the 1x2 machine. The curves for Vthread cluster together in the lower-left, indicating that overhead is smaller than for pthread. The tight clustering means that overhead remains constant as the number of threads is increased. + +The values for overhead per task is read off the graph by finding where the curve crosses $y=2$. This shows that Vthread has around 700 cycles of overhead, while pthread starts at 3800 for 8 threads, goes up to 8200 for 32 threads, and then into the tens of thousands for 128 threads. Not shown is the curve for 512 threads, which has more than 100,000 cycles of overhead. + + +\begin{figure}[ht!] + \includegraphics[width=2.2in, angle = -90]{plots_exec_vs_task_size/vms_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps} + \caption + {$\frac{ExecutionTime} {WorkTime}$ vs $TaskTime$ on the 1x4 machine. The results are similar to Figure \ref{figCray1Results}. + } +\label{figVMSResults} +\end{figure} + + +Figure \ref{figVMSResults} shows similar characteristics on the 1x4 SandyBridge machine. + + +\begin{figure}[ht!] + \includegraphics[width=2.2in, angle = -90] + {plots_exec_vs_task_size/xoanon_pthread_vthread_40core_80_160_320_640thds__o30000__perfCtrs.eps} + \caption + {$\frac{ExecutionTime} {WorkTime}$ vs $TaskTime$ on the 4x10 machine. The Vthread results are difficult to see, at the bottom of the plot, while the pthread results appear in the middle. The runs start at 80 threads, which is the number of hardware contexts in the machine. + } +\label{figXoanonResults} +\end{figure} + + +However, things change dramatically on the 4 socket by 10 core-each Westmere machine, seen in Figure \ref{figXoanonResults}. Here, inter-socket communication dominates, and VMS gains orders of magnitude advantage. For one thread per hardware context, Vthread's overhead is around 2000 cycles, while pthread starts at around 50,000 and goes up from there. + +The implementation of VMS is different on this machine than the single-socket ones, and demonstrates the effectiveness of pulling hardware details below the abstraction. + +When using the single-socket implementation on the 4x10, the large number of cores and inter-socket communication times causes excessive contention. We solved the problem for the 4x10 machine with an increasing-random-backoff approach. It reduces overhead by an order of magnitude on the 4x10. + + Without an abstraction like VMS, the language implementers would have to discover and solve such problems separately for each language on each machine. Because this required several weeks, the use of advanced tools, and detailed knowledge of the hardware, the savings for the language-runtime implementers is significant. This is evidence of VMS's ability to reduce middle-layer runtime implementation effort. + +%\mbox +% {\subfigure{\includegraphics[width=2.3in, angle = -90] +% {plots_exec_vs_task_size/cray1_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps} +% }} + + +%$\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. + + +\subsection{Implementation Time Results} +As seen in a previous paper on VMS\cite{VMSLCPC}, it makes runtime implementation quick and easy. The results are re-printed in Table \ref{tabPersonDaysLang} to support the claim VMS meets the requirement of reducing runtime implementation effort. + +From previous experience and informal discussions with others, equivalently low-overhead tuned runtimes would take several months. Similar time is also expected to learn the code of a pre-existing multi-threaded highly tuned runtime, then modify, debug and re-tune it. + +\begin{table}[ht!] +\caption + {Person-days to design, code, and test each of three sets of parallelism constructs. L.O.C. is lines of (original) C code, excluding libraries and comments. + } +\label{tabPersonDaysLang} +\begin{center} +\begin{tabular}{|l|l|l|l|} +\cline{1-4} + & SSR & Vthread & VCilk + \\\cline{1-4} + Design & 4 & 1 & 0.5\\ + Code & 2 & 0.5 & 0.5\\ + Test & 1 & 0.5 & 0.5\\ + \cline{1-4} + L.O.C. & 470 & 290 & 310 + \\\cline{1-4} + \end{tabular} +\end{center} +\end{table} + + +%%%%%%%%%%%%%%%%%%%%%% +\section{Conclusion} +We showed that using VMS as the bottom hardware abstraction in a software stack pulls low-level tuning out of the runtimes, reduces the number of runtime implementations, and encourages reuse of scheduler assignment code across languages. + + +%%%%%%%%%%%%%%%%%%%%%%%% + + +\bibliography{../helpers/bib_for_papers} + + +\end{document} + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/latex/Paper_Design.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/latex/Paper_Design.txt Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,21 @@ + + +Outline: + +Motivation: by funnelling from big, broad, already accepted, down to specific of paper. +Added detail: Start with universally accepted goal that all agree with -- the HotPar call for papers statement -- build a golden bridge from there to the specific thing want to talk about -- the bottom layer of the portability stack. +-] state the goal of HotPar +-] Show how that's same as needing a new software stack +-] Say proposal for such stack exists +-] Say paper focuses on bottom layer of stack + +Desire: inject PStack into the paper, as support -- because can't claim it as a contribution as it has no supporting results. +Want to build sub-bridges -- once add structure, there are audience-accepted sub-goals they've seen in practice already. Call those already-known things out, to give audience mental anchors -- then build golden bridges from those to PStack, showing that PStack addresses those anchored concerns/issues/goals + +-] Anchor: Other portability approaches exist (Everyone knows that, asking "so how is this PStack different?" +--] Bridge: how PStack differentiates itself + +Detail: PStack is broader in scope: all langs to all hardware, PStack isn't solution itself, rather it's organizer for all in industry to supply piece by piece the solution; PStack has novel top-level interface and bottom-layer interface that enable all the rest. + + + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/latex/Paper_Design_2.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/latex/Paper_Design_2.txt Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,32 @@ + +====== + +Details of VMS interface, details of its impl on multi-core, details of differences on different machines. + +wrapper-lib calls VMS-supplied primitive that suspends the virtual-processor calling the lib, and sends a request to VMS. VMS calls lang-supplied plugin to handle requests -- this is the part of the scheduler that handles constraints -- it determines which virt-processors must remain suspended, and which are free to be re-animated. + +The language is implemented as either a collection of wrapper-lib calls embedded into the base language, or as custom syntax that uses uses the VMS-supplied primitive to suspend virtual processors and send requests to VMS. + + +VMS is invisible to the application, only language constructs are visible. From the application-programmer point of view, the embedded version looks like a function call, albeit the data-struc of the virtual-processor animating the code has to be passed as a parameter to the wrapper-lib call. + +Hence, VMS is invisible to the application, only language constructs are visible. + +The wrapper-lib call is standard library code that is loaded along with the application executable. + +However, VMS primitives may be hardware-implemented, or loaded as OS modules, or dynamic or static libraries. Rhey are naturally custom instructions, but may be emulated by software. + +The interface between application-executable and language-runtime is the VMS-primitive that sends a request to VMS. The language-runtime receives the request under control of VMS, which calls a language-supplied request-handling function and passes the request as a parameter. This passive behavior of the request handler leaves control-flow inside VMS, which is part of hiding concurrency from the language-runtime implementation. + +The interface between the runtime and VMS is VMS's plugin API. The runtime is implemented as two functions, whose pointers are handed to VMS. VMS then controls the flow of execution. When a request is ready for the runtime, VMS cIalls the request-handler function, and when a spot on hardware is free for work, VMS calls the scheduler-assign function. Hence, the language implements its runtime as two isolated functions. By keeping control-flow inside VMS, the language-specific portion of the runtiem is simplified. + +This structure is also the reason VMS encourages reuse of scheduler code. The VMS API separates out control flow from scheduling, so scheduling code is isolated, with well-defined interfaces. Scheduling is then further sub-divided into modules: constraint-management (IE enforcing dependencies); and choosing physical location to place work. Each has its own well-defined interface, and they communicate to each other via VMS-managed shared state. + +The greatest application performance impact due to the scheduler is communication it causes. + +, management of the memory hierarchy, and the match between work-characteristics and hardware-characteristics (IE, assigning to accelerator vs CPU). Hence, significant work goes into implementing strategies and mechanisms for finding the best assignment-choices. Such implementations are only loosely coupled to language, through the shared state by which the request-handler informs the assigner of what work is ready to be animated. + +Hence, it is straight-forward to reuse the code that assigns work to physical locations. The only language-specific influence on the assigner is the shared constraint-state. + + + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/latex/url.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/latex/url.sty Sun Mar 11 09:26:44 2012 -0700 @@ -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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/latex/usetex-v1-anon.cls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/latex/usetex-v1-anon.cls Sun Mar 11 09:26:44 2012 -0700 @@ -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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/PStack/HotPar_2012/latex/usetex-v1.cls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/PStack/HotPar_2012/latex/usetex-v1.cls Sun Mar 11 09:26:44 2012 -0700 @@ -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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/ExaScale_Paper/First_shot_after_disc_with_Merten_on_Benchmarks/latex/ExaScale_and_Benchmarks_paper.ddf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/ExaScale_Paper/First_shot_after_disc_with_Merten_on_Benchmarks/latex/ExaScale_and_Benchmarks_paper.ddf Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,2 @@ +[Settings] +Script=CP437 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/ExaScale_Paper/First_shot_after_disc_with_Merten_on_Benchmarks/latex/ExaScale_and_Benchmarks_paper.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/ExaScale_Paper/First_shot_after_disc_with_Merten_on_Benchmarks/latex/ExaScale_and_Benchmarks_paper.tex Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,305 @@ +%&latex +%% Derived from: `accept.tex' (from acmconf.dtx), + +\documentclass[submit]{acmconf} + +\CopyrightText{\copyright ACM 2000, ....., used with the \texttt{box} option.} +\IfFileExists{graphicx.sty}{\usepackage{graphicx}}{} +\ConferenceName{1. Conference on Designing a \LaTeX2e Class for + Typesetting ACM Papers, Hawaii 2000} +\ConferenceShortName{CONF-2000} + +\def\XX{More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. More text should follow, but + keep in mind that a limit of 6 pages has been set, including figures + and references. More text should follow, but keep in mind that a + limit of 6 pages has been set, including figures and references. + \par +} + +\usepackage[english]{babel} +\begin{document} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\date{31. December 1999} +\title{ExaScale Pressure and VMS to the Rescue} +\author{\Author{Sean Halle}\\ + \Address{TU Berlin}\\ + \Email{Sean.Halle@tu-berlin.de}\\ + \and + \Author{Donald Duck}\\ + \Address{Entehausen University}\\ + \Email{Donald.Duck@entehausen.org} + } +\maketitle + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{abstract} + This document demonstrates how to use the \LaTeX2e \verb|acmconf| + class by exhibiting itself as an example. You are expected to be + familiar with~\cite{Lam94}. The best way to use this file is to use + it as a template, i.e., replace the prose in it by your + own\footnote{And may use footnotes.}. +\end{abstract} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Introduction} + +The size of a work unit (task) is shrinking as we enter the Exa Scale age. This puts pressure on language implementers to provide low overhead synchronization. + +A work-unit is defined as the work bounded by two successive scheduling decisions. In other words, it is the unit of work that the scheduler makes decisions about. + +Traditionally, when moving to a new generation of super-computer, the extra computation has been consumed by increasing the size of the input. This is known as "weak" scaling. The parallelism identified in the code does not change, but rather the data that the code is applied to. + +The important factor in weak scaling is that the size of a work unit remains relatively constant, or even increases in size. + +For exa-scale computing, this trend is at an end. The reason is the slow-down in main memory growth relative to computation growth. Memory sizes of exa-scale will increase by much less than computation. Hence, the input size cannot be increased in the same proportion. + +As a consequence, work-unit sizes will shrink in exa-scale. + +Smaller work-units will only be productive if the overhead of scheduling them remains much smaller than the work. + +In addition, the power-wall is forcing the largest increase in number of cores between super-computer generations. Exa-scale will have a larger multiplier than previous generation steps. + +That further decreases the size of work units, while simultaneously increasing the number of synchronization operations within a locale of the machine. (? check this) + +Parallelism to keep the extra will have to be found by changing the code itself. + +This makes the time ripe for considering alternative programming approaches that make expressing the extra parallelism simpler, and performant-portable to future generations of super-computer. + +\section{Tech detail} + +Levels of VMS -- down at bare core, have multiple on a chip -- tiny overhead of scheduling a work-unit, so tiny work-units possible + +Surrounding that, have a second level of VMS that goes between sockets + +and another level between boards + +and another between cabinets + +As go up in level, can take more time for VMS overhead -- especially in the plugin. So, upper levels of VMS implement the hardware discovery interface, and perhaps even a resource management dialog interface.. while the lowest is bare-bones -- don't have time for all that.. + +The network slows as get higher, so have more time in plugin to analyze, collect statistics, and figure out high-quality placement of tasks, and task-sizing. + +In super-computers, lowest level expanding, while upper levels staying static -- so, total network bandwidth not improving at higher levels. Just, bottom is bulding down, with BW between cores at that low level. + +Software has to match this trend -- applications written hierarchically, with higher BW at leaves, and BW decreasing as go up in hierarchy. This is same form that all applications are moving towards. + +\section{Directly Measurable Benefits of VMS} + +VMS has benefits in two major categories: +1) Time to implement a language (especially embedded one) +-] implies benefit in time to port lang and therefore apps to new hardware +2) Performance of the language +Due to two factors: +2.1) Overhead of runtime (which is VMS implementation mostly) +2.2) Communication-derived performance, due to placement of work-units and sizing choice of work-units +-] Due to assigner inside plugin (as opposed to VMS implementation details) +-] Due to specialization in toolchain + +\section{Measurements to Show} + +Need benchmarks that show-off the shrinking work-unit size, and demonstrate that VMS does well on them + +Need hierarchical VMS implementation, and show that bench-apps take advantage of the hierarchy + +Need bench's that have tunable work-unit size, so can show how small can make work-units, as will happen in exa-scale, and still get profitable parallelism. + +Show that the overhead of VMS becomes critical when amount of parallelism is fixed, and work-unit size is small, so that making work-units bigger loses parallelism and starves the processors. That's case have with exa-scale and with these benchmarks -- draw pic to illustrate the dynamic system, how the tradeoff works.. + +So, then, show curve on real benchmark as tune the work-unit size, for VMS-based language vs standard implementation of same language.. TBB, OpenMP, StarSs, and so on.. + +Barnes-Hut has the heirarchical pattern of hardware.. and can tune work-unit size by choosing how many points want inside a single cluster.. + +Simple way to see exa-scale case: assume mem-size fixed -- means total work fixed -- but more cores -- so work per core decreases --> work-unit size shrinks.. So, overhead per work-unit has to remain small, to prevent overhead from dominating. + +Illustrate principle with Vthread vs pthread on exe vs size curves.. then show same effect at play in actual benchmarks as tune work-unit size. + + + + +\section{The Story Begins\ldots} +A real article is supposed to have some deep results and good +explanations. That, however, is your job and not mine so you should +replace this text with something more appropriate\footnote{Another a + footnote}.. + +\section{Some often used \LaTeX\ commands} + +\subsection{\texttt{emph}, etc.} +Text may be set as \emph{emph}.\\ +Text may be set as \texttt{texttt}.\\ +Text may be set as \underline{unterline}.\\ +Text may be set as \textbf{textbf}.\\ +Text may be set as \textrm{textrm}.\\ +Text may be set as {\tiny tiny}.\\ +Text may be set as {\scriptsize scriptsize}.\\ +Text may be set as {\footnotesize footnotesize}.\\ +Text may be set as {\normalfont normalsize}.\\ +Text may be set as {\large large}.\\ +Text may be set as {\Large Large}.\\ +Text may be set as {\LARGE LARGE}.\\ +Text may be set as {\huge huge}.\\ +Text may be set as {\Huge Huge}.\\ +Text may have$^{\textrm{super}}$ and$_{\textrm{sub}}$scripts. + +\subsection{\texttt{itemize}} +\begin{itemize} +\item More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. +\item More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. +\end{itemize} + +\subsection{\texttt{enumerate}} +\begin{enumerate} +\item More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. +\item More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. +\end{enumerate} + +\subsection{\texttt{description}} +\begin{description} +\item[Foo] More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. +\item[Bar] More text should follow, but keep in mind that a limit of 6 + pages has been set, including figures and references. More text + should follow, but keep in mind that a limit of 6 pages has been + set, including figures and references. +\end{description} + +\subsection{\texttt{center} and \texttt{tabular}} +\begin{center} +\begin{tabular}{|l|c|r|}\hline +left & center & right \\\hline\hline +AAAAAAAA & BBBBBBBB & CCCCCCCC \\ +AAAAAAAA & BBBBBBBB & CCCCCCCC \\\cline{3-3} +AAAAAAAA & BBBBBBBB & CCCCCCCC \\\cline{2-2} +AAAAAAAA & BBBBBBBB & CCCCCCCC \\\cline{1-2} +AAAAAAAA & BBBBBBBB & CCCCCCCC \\\hline +AAAAAAAA & BBBBBBBB & CCCCCCCC \\\hline +1 & \multicolumn{2}{|c|}{2} \\\hline +\end{tabular} +\end{center} + +\subsection{\texttt{figure} and Postscript pictures} +Have a look to to figure~\ref{fig-1} and~\ref{fig-2}. + +\begin{figure} +\hrule +Nice Postscript, isn't it? +\begin{center} +\includegraphics{body.eps} +\end{center} + +Same, a little bit smaller: +\begin{center} +\IfFileExists{graphicx.sty}{ + \includegraphics[scale=.5]{body.eps} + }{ + Sorry, package \texttt{graphicx} not present. +} +\end{center} +\caption{\label{fig-1}This is a nice floating figure} +\hrule +\end{figure} + +\begin{figure*} +\hrule +This figure uses both columns, using \texttt{figure*} +\begin{center} +\IfFileExists{graphicx.sty}{ + \includegraphics[scale=.5]{body.eps} + \hspace{1cm} + \includegraphics[scale=.5]{body.eps} +}{ + Sorry, package \texttt{graphicx} not present. +} +\end{center} +\caption{\label{fig-2}This is a nice floating figure} +\hrule +\end{figure*} + +\section{The Story Continues 1} + +This is a \verb+\section+. + +\XX\XX + +\subsection{The Story Continues 2} + +This is a \verb+\subsection+. + +\XX\XX + +\subsubsection{The Story Continues 3} + +This is a \verb+\subsubsection+. + +\XX\XX + +\subsubsubsection{The Story Continues 4} + +This is a \verb+\subsubsubsection+. + +\XX\XX + +\subsubsubsubsection{The Story Continues 5} + +This is a \verb+\subsubsubsubsection+. + +\XX\XX + +\paragraph{The Story Continues 6} + +This is a \verb+\paragraph+. +\XX\XX + +\subparagraph{The Story Continues 7} +This is a \verb+\subparagraph+. +\XX\XX\XX + +\section{Conclusion} +The end, at last! In this example there really are no results or +points to summarize but I trust your article has more food for though +and thus will need a conclusion. + +\appendix +\section{Appendices} +If you have any, appendices might go here. Note that appendices +should not be used to circumvent the word count limit. + +This is "doing it by hand" --- you might be better off using BibTeX. + +%+Bibliography +\begin{thebibliography}{X} +\bibitem[1]{Lam94} Leslie Lamport: {\em \LaTeX, A Document + Preparation System,} Addison Wesley~1994. +\end{thebibliography} +%-Bibliography + +\IfPrepare{ + \tableofcontents + \listoffigures + \listoftables +}{} + +\end{document} + + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/Languages/SSR/Jan_2011__SSR_parallelism_constructs.tm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/Languages/SSR/Jan_2011__SSR_parallelism_constructs.tm Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,818 @@ + + + + +<\body> + ||>||>|> + + <\abstract> + Locks and condition variables are difficult to use, and many alternatives + have been proposed. \ This paper presents an additional alternative + motivated by the synchronous send-receive pattern in process-calculi, and + implemented with the new VMS extendable virtualization mechanism. It + includes parallel singletons which are useful when dividing up work among + cores, as well as atomic function execution and a restricted form of + nested transactions. \ More importantly, it includes facilities to query + the nature of the hardware, which allows work to be divided according to + the hardware characteristics. + + We give examples of the use of the constructs, details of their + implementation, and performance numbers. + + + + + \; + + + + \; + + + + + + \; + + \; + + \; + + <\with|par-columns|1> + <\with|par-columns|2> + + + Evidence is mounting that one-stop solutions to performance portability + fail to address critical real-world patterns -- for example, attempting + to place the full specialization into the toolchain + > requires a central entity that updates + all toolchains when new hardware becomes available. \ It also requires + automated re-compile for the new target and automated distribution of + multiple binaries. Otherwise, the software developers would have no way + to get their source code to run on new hardware -- their source has to + be recompiled and the resulting binary distributed. To do this for + thousands of different software development entities requires + centralization. But such a centralized approach has technical and + practical obstacles. + + Pure runtime based approaches > + imply a single binary, with the only change being the runtime system. + Without help from the toolchain to extract relevant information and + prepare it for the runtime, the amount of specialization and its + effectiveness is limited. \ In addition, the runtime has to be + separately implemented for every hardware platform, and for every + language, without much reuse. \ + + Finally, hardware abstraction based approaches, such as JIT + solutions>, place all the work of specializing + into a single place, which makes reuse difficult, forcing extensive + rewrite of JIT internals for each hardware platform, for each language. + This software cost is an issue in the embedded space where new hardware + is introduced often and has a limited market size to amortize the + software cost. \ In addition, this one-stop approach requires a + different JIT for each language, because it has to recognize + language-specific features to specialize -- or else it fails to achieve + good performance. This requires extensive work, making domain-specific + languages time-consuming and difficult to develop, and the multiple + JITs logistically awkward. + + What's needed is a system that leaves hardware free, language designers + free, and software developers free, imposing minimal restrictions on + them, while maximizing reuse of individual efforts and simplifying the + logistics. It would be merely a support system that makes the work of + each of those individual groups easier, and makes their independently + provided pieces naturally support each other. + + We take the position in this paper that such a support system has to + operate at all three levels: the language design plus toolchain level; + the runtime system level; and the hardware abstraction level. \ Sequoia + > does this in a limited way. \ We propose a more + general approach that supports languages without restricting them, has + more freedom to specialize the runtime, \ and reduces the effort to add + new target hardware. It takes advantage of VMS (Virtualized + Master-Slave) [>], which naturally provides pieces for + each level, and acts as an organizing principle. + + Section 2 gives a high-level reveiw of VMS, and Section 3 reviews + performance portability fundamentals. Section 4 then illustrates how + VMS can be used to organize an eco-system in which performance + portability is a reality. Section 5 gives supporing evidence of VMS's + suitability, with measurements of the time to implement three embedded + parallel languages, performance numbers for them, and measurements of + the basic overhead of VMS. + + + + On nomenclature, in this paper we define as a 3-tuple -- 1) + an animation event, 2) a collection of code animated, and 3) a + collection of information instances that code is animated upon. + However, we often refer to just the code plus data as a task, with the + implication that animation will take place in the future. \ This allows + us to say things like ``we create a task'', meaning we create a + combination of code plus data with the intent to animate it, and ``we + assign a task to'' which means we move the code plus data -- but at + some future time the combination shall be animated, exactly once. + + Virtualized Master Slave (VMS) is an + execution model that replaces Threads. \ In effect, it opens up the + thread-scheduler, letting the language supply its own scheduler that is + plugged-in. Along with the scheduler, the plugin also contains a + definition of concurrency constructs, such as publish-subscribe + channel, or send-receive, or spwan-sync -- the scheduler plus + concurrency constructs together complete the runtime for a parallel + language. + + The plugin is supplied separately from the application, as a dynamic + library or a device driver, which makes the runtime separately loaded + onto the hardware, turningit into a new component in the software + stack.\ + + The behavior of the languages's concurrency constructs is implemented + in the plugin using sequential algorithms, reducing implementation time + for the concurrency semantics to a matter of days. \ The plugin also + contains the scheduler, which gives the language control over assigning + virtual processors to physical cores. On multi-core shared-memory + machines, the run-time overhead is low, on the order of a few hundred + nano-seconds per concurrency operation. The VMS model can be + implemented as a user-space library, or existing OS kernels can be + converted to the VMS model by opening up their scheduler, and exposing + the VMS plugin interface. + + What distinguishes VMS is that it doesn't impose its own concurrency + semantics, but rather takes them as plugins. \ Hence VMS isn't a + language, but rather the creation of language runtimes. + Any language level execution model is implementable as a layer on top + of VMS, including: Actors ; Components + ; process calculi like CSP , and + Pi-calculus ; and coordination languages like Linda + . \ Likewise implementable with VMS are systems + like TBB and OpenMP, as well as hybrid languages like Sequioa, and + legacy languages that rely on Threads such as Java, and C/C++ with + pthreads. + + + + Portable performance is achieved by specializing the source code to the + hardware. \ For traditonal sequential source on sequential processors, + the specialization was the translation to machine code and optimization + that took place in the compiler. + + This one-step specialization was sufficient because most of the + performance portability was provided by using micro-architecture + hardware techniques underneath a standard instruction-set abstraction. + This has worked because, before recently, process technology has made + every generation of sequential processor faster, and parallelism could + be found at the granularity of single instructions. Also, CPU producers + have kept their instruction sets relatively fixed. + + Unfortunately, for larger-granularities of parallelism, such a + hardware-based approach to performance portability has proven + infeasible so far. \ We conjecture that the reason is, that larger + granularity parallelism is tied to the language constructs and to + application constructs (whereas instruction-level parallelism is tied + only to the machine-instruction-set constructs). Hence, information + about the language patterns and application patterns must be available + in order to exploit these larger granularities. \ The hardware cannot + make use of the larger granularities because the instruction set + abstraction provides no means to convey the necessary language and + application patterns. + + Following this intuition, we propose that to be effective, a system for + performance portability for parallel software should have a means of + identifying language and application constructs and packaging this + information in a standard format. \ Also, a hardware abstraction should + be provided that accepts such information and uses it to make + high-quality decisions about task creation, task sizing, and task + placement. + + + + VMS fits this proposal by allowing the language toolchain to extract + the application's task patterns and language patterns, and package them + in a standard format that any plugin for that language understands. As + mentioned in the review, the plugin plus VMS implementation represent + the parallel aspects of the hardware, so each language's plugin defines + the format of the task info to be handed to the hardware abstraction. + \ The first step of specializing is thus the extraction of the task + info by the toolchain. + + <\with|par-first|0fn> + |The + three places that specialization occurs. In the top box, the + toolchain extracts task information useful to the scheduler and + packages it into the binary, specializing the source to the plugin's + interface. \ In the middle, the scheduler in the plugin retrives the + info and uses it to make scheduling decisions, specializing the + binary to the hardware abstraction. At the bottom, the VMS-core + implementation hides hardware details behind the interface, + specializing the hardware to the hardware abstraction.> + + + The second step of specialization is the plugin, which uses the task + info to make high quality decisions about size and placement of tasks, + as represented in the middle of figure 2. \ The last step of + specialization is implementing the VMS abstraction on the particular + hardware. \ This combination of plugin plus VMS has the same function + that the instruction set had back in the sequential days -- it provides + a standard hardware abstraction. \ VMS has the advantage that the + abstraction is modifiable by choosing the plugin. + + <\with|par-first|0fn> + <\small-figure|> + \; + + The toolchain is split, the top portion is related to parallelism + and the bottom portion does sequential compilation of C code. In + the top box, source code is transformed into C code that has calls + inserted. They invoke the plugin, during the run, to perform + concurrency operations, such as synchronizations, sends, receives, + publish, and so on. The top box also extracts parallelism + information from the source, and encodes it as implementations of + library calls. These are later invoked by the plugin to retrieve + the information. \ In this way, the generated parallelism + information passes through any standard sequential C compiler, + which is the only hardware-specific portion. + + + + Focusing on the toolchain, we propose breaking it into two sections: + one for parallelism, the other for sequential. \ The parallelism + portion extracts the task and language information needed to make high + quality scheduling decisions. \ The sequential specializes individual + functions to the sequential cores. \ The parallelism portion remains + constant across hardware, only the sequential portion changes when the + instruction-set of the target hardware changes. + + One possible way to achieve this is to make the parallel portion + transform the original source to C code with embedded calls to the + concurrency library functions. \ During this source-to-C-plus-lib-call + transform, the information is packaged into functions in some way. + \ The resulting C-plus-lib-calls source is then compiled with the + sequential C compiler to make a binary, as depicted in Figure X. + + Meanwhile, the plugins for that language know the names of the library + functions the task information has been packaged into. \ Hence, when + the binary is linked to a plugin at load time, the task-info functions + within the binary become available to the plugin. \ They are then + called by the plugin during the run to extract the information, to make + high quality scheduling decisions. + + This scheme allows unmodified sequential compilers to be used to pass + the information along, inside of a standard binary format. \ It also + separates the parallel and sequential portions of the tool chain + cleanly, so only the relatively simple sequential C compiler changes + with hardware. \ This scheme also leaves the language designers in + charge of deciding the nature and definition of the information + carrying functions. + + These properties enable reuse of the same parallel portion of the + toolchain across chips, which is especially valuable in the embedded + market. \ With the inclusion of real-time aspects, such as latency + bounds and deadlines, this could dramatically speed up time to market + and reduce cost of introduction of new embedded chips. + + This begs the question: what kind of task information is sufficient for + parallel performance portability across the array of forseeable + parallel architectures? We propose three kinds of information: 1) + manipulators, which are able to modify the size of tasks and change the + way data is accessed, 2) information about the tasks such as type of + core they run best on, size of data footprint, predicted execution + time, and 3) real-world constraints that relate to the tasks, such as + deadlines, maximum latency for data to pass from one point in the + computation to another, and quality related information. \ Again, it is + up to the language and plugin to agree on what data is extracted, + passed, and then used for scheduling. \ Meanwhile, it is up to VMS to + provide the services and information required by the scheduler to make + use of the information. + + As research progresses, additional types of information may become + necessary, so this flexibility from the plugin system will prove key. + \ Again, the plugin plus VMS implementation are the hardware + abstraction -- the parallel equivalent of what the instruction set used + to be for sequential processors. \ The two define the behavior that the + binary expects to be present. + + This, finally, begs the question: what kind of information and services + must VMS provide to the plugin? It must expose the features of the + hardware that matter the most to performance (computation, energy, and + real-world related performance). We suggest that the memory hierarchy + and communication between the memory pools are the most important + features for parallel performance. \ However, the VMS interface should + only expose the portions of memory affectable by a runtime scheduler + (the register set usage of a sequential processor is fixed by the + binary and so not exposed). + + We suggest that most parallel architectures fall into a small number of + classes, each of which exposes sufficient structure without exposing + chip-specific details. What's important is the type(s) of cores, the + pools of memory, and the nature of communication between them. On + communication, the scheduler can treat the network statistically with + relatively simple models, independently from the topology, without + undue loss of performance >. So the main feature is + coherent memory vs distributed, which determines whether communication + can take place by shared variables in the code vs whether it needs + explicit action. + + Given this, our proposed list includes: 1) multi-core and many-core + that share a single coherent memory 2) one or more SIMD units that + share a single coherent memory 3) collections of those connected by + shared memory 4) distributed collections of those. Each memory pool, + such as a cache or scratchpad, is exposed, with the communication costs + from each pool to each other pool, and whether communication between + them is automated or explicit. Applying this to known architectures: + single-socket multi-core systems fall into 1, while adding a GPGPU puts + them also into 2 and 4. \ The Cell BE is in 1 and 4, as is the SCC. + \ Larrabee would have been in 1, 2, and 3 but may have been more + effectively treated as 1, 2, and 4. \ Traditional supercomputers made + up of shared-memory nodes connected by networks fall into 1 and 4. + + <\with|par-columns|1> + <\big-figure> + + + + + + + Figure 4 depicts how the pieces all fit together. At the top, + independent software developers write applications, in a variety of + languages. Each language defines its own format for conveying + task-related info. Independently, plugins are implemented that accept + that format, one plugin for each hardware class. This allows hardware + manufacturers to supply their own plugins, for unusual hardware + designs, and still take advantage of the existing application binaries + (non-standard instruction sets also need an install-time translator). + + The plugins, in the middle, act as a cross-bar switch, connecting the + binaries to the hardware abstractions. They are separately distributed + and loaded onto the hardware, much the way device drivers are + currently. + + At the bottom, the hardware abstraction implementations standardize the + hardware. They are mainly supplied by the hardware manufacturers, but + open-source implementations will likely also arise. + + Note that the only software developed for a new HW platform is the + VMS-core abstraction, sequential C compiler, and a bare-bones OS. + Existing applications are adpated via the plugin and abstraction. + + We expect that a small number of HW classes will quickly come to + dominate, which will encourage later HW development to fit within the + dominant classes. As a result, a standard set of sequential C compilers + will emerge, allowing software developers to perform a single + compilation pass. For fine tuning of compilation + choices, we expect install-time binary rewriters or run-time binary + optimizations. + + The end-result is that no centralized control is needed. Language + designers are free to innovate, inventing new concurrency constructs + and communication abstractions, and need as little as just the set of + plugins, or just the source-to-C translator to reach all the standard + hardware platforms. Likewise, hardware manufacturers are free to + innovate, needing minimal software development for a new chip to enjoy + access to all the applications.\ + + The set of plugins is the key to this portability, and the funnelling + of many applications to the same parallelism information at the top, + and many hardware platforms to the same abstraction at the bottom. + + + + <\with|par-columns|2> + + + <\with|par-columns|2> + + + As far as a binary is concerned, the parallel behavior of the hardware + is represented by the combination of VMS plus the plugin, while the + \ sequential behavior of the hardware's processing-elements is + represented by the Instruction Set of each core. + + The VMS implementation is made up of a master virtual-processor that + receives and calls the plugin functions, and a ``core-controller'' that + handles transferring the physical-core between animating the master + virtual processor and animating the application's virtual processors, + but according to the decisions the plugin functions make, when called + by the master VP. As part of invoking a concurrency construct, an + application VP attaches to itself a request destined for the master VP, + then suspends. We next review how this request reaches the plugin's + concurrency-construct implementation, called the requestion handler, by + walking through the steps VMS takes during operation. + + <\with|par-first|0fn> + <\with|par-left|0cm> + + + + + Internal elements of VMS + implementation > + + The steps of operation are numbered in + Figure . \ Taking them in order, 1) + scans the scheduling slots to see which ones' + slaves have suspended since the previous scan. \ 2) It hands these to + the request handler plugged-in. \ \ 3) The data in the request causes + manipulation of the data structures within the semantic state. \ These + structures hold all the slaves currently in the blocked state. \ 4) + Requests cause slaves to be moved to the ready-container, which was + implemented as an array of simple queues, one to each physical core. + Which core receives the slave is under plugin control, determined by a + combination of request contents, semantic state and physical state. 5) + During the scan, the also looks for empty slots. + It calls the scheduler plug-in function, which chooses a slave from the + ready container. \ 6) The then places the slave + VP's pointer into the scheduling slot, making it available to the + . \ 7) When done with the scan, + suspends, switching animation back to the . \ 8) + takes slave VPs out of the slots, then 9) switches + animation to them. \ 10) When a slave self-suspends, animation returns + to the , which picks another, until 11) all slots + are empty and the switches animation to the + . + + All of that happens on each core separately, but in this + particular implementation we use a central to + ensure that only one core's can be active at any + time. \ This guarantees non-overlap of trace-segments from different + s, allowing the plugins to use sequential + algorithms, without a performance penalty, as verified in Section 5. + + + Performance> + + We implemented blocked dense matrix multiply and ran on + a Core2Quad 2.4Ghz chip. + + Time to implement the runtime for the + three parallel languages averages 2 days. \ 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. Table summarizes + implementation times. + + |||||||>||||>||||>||||>||||>>>>|Person-days + to design, code, and test the library plus plug-in of each language, in + the order attempted. L.O.C. is lines of (original) code, excluding + libraries and comments.>>>>>> + + \ seen in Table + . + + The code has not been designed for speed, but rather to be easy to + understand and modify. In particular, the schedulers are simple queues + with no optimization for performance. + + <\with|par-mode|left> + |||||||||||||||>||||>|>|||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>>>>|Cycles of overhead, per scheduled + slave, consisting of: A) VMS-only cycles spent in VMS portion of + , B) time in the to switch + between VPs, C) Language-specific cycles spent in the plugin's Request + Handler and Scheduler, and D) obtaining the Master lock. \ ``comp + only'' column is cycles with perfect memory, ``comp + mem'' is actual + cycles. ``Plugin-concur'' is only concurrency related requests, + ``plugin-all'' includes create and malloc requests. Numbers are to two + significant digits due to variability. \ Language overhead was measured + while running Matrix Multiply.>>>>>> + + + We compare our implementation of the and + constructs against the distributed version of Cilk, in + Table , which shows that the same + application code has similar performance. + + ||||||||||||||||>|||>|||>|||>|||>|||>|||>|||>|||>>>>|Head-to-head + comparison of exe time in seconds for VCilk vs Cilk 5.4 on MM. \ VCilk + does 23% worse on large matrices that run for several seconds, but 210% + better on small matrices requiring milliseconds.>>>>>> + + \; + + Versus pthreads, our VMS based implementation has more than an order of + magnitude better overhead per invocation of mutex or condition variable + functionality, as seen in Table . + + <\with|par-mode|left> + |||||||||||||||||>|||||>|||||>|||||>|||||>|||||>|||||>>>>|Rough + measurements of cycles to perform synchronization primitives. \ For + VPThread, the first column shows computation time of plugin when all + memory accesses hit in the cache. The second column is total time, + including , , and the effects + of cache and page misses. Pthread times are deduced from round-trip + experiments. The ratio calculations are pthread vs total + VPThread.>>>>>> + + + Conclusion> + + This is a position paper, merely a suggestion for a large scale + organizing principle by which real-world entities can cooperatively + achieve performance portability. The key pattern is the funnelling of + many applications to the same parallelism information at the top, the + funnelling of many hardware platforms to the same abstraction at the + bottom, and the set of plugins that connect the two ends. + + + <\bibliography|bib|Helpers/plain|Helpers/Bib_for_papers.bib> + \; + + + \; + + \; + + +<\initial> + <\collection> + + + + + + + + + + + + + + +<\references> + <\collection> + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + + + +<\auxiliary> + <\collection> + <\associate|bib> + Hewitt10 + + Actors97 + + ComponentModel00 + + hoare78 + + milner99 + + Gelernter85Linda + + <\associate|figure> + > + + <\tuple|normal> + \; + + The toolchain is split, the top portion is related to parallelism and + the bottom portion does sequential compilation of C code. In the top + box, source code is transformed into C code that has calls inserted. + They invoke the plugin, during the run, to perform concurrency + operations, such as synchronizations, sends, receives, publish, and + so on. The top box also extracts parallelism information from the + source, and encodes it as implementations of library calls. These are + later invoked by the plugin to retrieve the information. \ In this + way, the generated parallelism information passes through any + standard sequential C compiler, which is the only hardware-specific + portion. + > + + > + + Internal elements of VMS + implementation |> + + <\associate|table> + Person-days to design, code, and + test the library plus plug-in of each language, in the order attempted. + L.O.C. is lines of (original) code, excluding libraries and + comments.|> + + Cycles of overhead, per + scheduled slave, consisting of: A) VMS-only cycles spent in VMS portion + of |language||master_loop>, + B) time in the |language||core_loop> + to switch between VPs, C) Language-specific cycles spent in the + plugin's Request Handler and Scheduler, and D) obtaining the Master + lock. \ ``comp only'' column is cycles with perfect memory, ``comp + + mem'' is actual cycles. ``Plugin-concur'' is only concurrency related + requests, ``plugin-all'' includes create and malloc requests. Numbers + are to two significant digits due to variability. \ Language overhead + was measured while running Matrix Multiply.|> + + Head-to-head comparison of exe + time in seconds for VCilk vs Cilk 5.4 on MM. \ VCilk does 23% worse on + large matrices that run for several seconds, but 210% better on small + matrices requiring milliseconds.|> + + Rough measurements of cycles to + perform synchronization primitives. \ For VPThread, the first column + shows computation time of plugin when all memory accesses hit in the + cache. The second column is total time, including + |language||master_loop>, + |language||core_loop>, and + the effects of cache and page misses. Pthread times are deduced from + round-trip experiments. The ratio calculations are pthread vs total + VPThread.|> + + <\associate|toc> + |math-font-series||1Overview + and Motivation> |.>>>>|> + + + |math-font-series||2VMS> + |.>>>>|> + + + |2.1Overview of VMS + \ \ |.>>>>|> + > + + |math-font-series||3Specialization> + |.>>>>|> + + + |3.1Three-step specialization + |.>>>>|> + > + + |math-font-series||4Eco-System> + |.>>>>|> + + + |math-font-series||5> + |.>>>>|> + + + |5.1Internal Workings of VMS + |.>>>>|> + > + + |Steps of Operation: + |.>>>>|> + > + + |Enabling sequential implementation of + concurrency semantics: |.>>>>|> + > + + |math-font-series||6Performance> + |.>>>>|> + + + |Setup: |.>>>>|> + > + + |Implementation-Time: + |.>>>>|> + > + + |Execution Performance: + |.>>>>|> + > + + |Head to Head: VCilk vs Cilk 5.4 \ plus + \ VPThread vs pthread: |.>>>>|> + > + + |math-font-series||7Conclusion> + |.>>>>|> + + + |math-font-series||Bibliography> + |.>>>>|> + + + + \ No newline at end of file diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/Languages/SSR/Jan_2011__SSR_parallelism_constructs.tm~ --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/Languages/SSR/Jan_2011__SSR_parallelism_constructs.tm~ Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,818 @@ + + + + +<\body> + ||>||>|> + + <\abstract> + Locks and condition variables are difficult to use, and many alternatives + have been proposed. \ This paper presents an additional alternative + motivated by the synchronous send-receive pattern in process-calculi, and + implemented with the new VMS extendable virtualization mechanism. It + includes parallel singletons which are useful when dividing up work among + cores, as well as atomic function execution and a restricted form of + nested transactions. \ More importantly, it includes facilities to query + the nature of the hardware, which allows work to be divided according to + the hardware characteristics. + + We give examples of the use of the constructs, details of their + implementation, and performance numbers. + + + + + \; + + + + \; + + + + + + \; + + \; + + \; + + <\with|par-columns|1> + <\with|par-columns|2> + + + Evidence is mounting that one-stop solutions to performance portability + fail to address critical real-world patterns -- for example, attempting + to place the full specialization into the toolchain + > requires a central entity that updates + all toolchains when new hardware becomes available. \ It also requires + automated re-compile for the new target and automated distribution of + multiple binaries. Otherwise, the software developers would have no way + to get their source code to run on new hardware -- their source has to + be recompiled and the resulting binary distributed. To do this for + thousands of different software development entities requires + centralization. But such a centralized approach has technical and + practical obstacles. + + Pure runtime based approaches > + imply a single binary, with the only change being the runtime system. + Without help from the toolchain to extract relevant information and + prepare it for the runtime, the amount of specialization and its + effectiveness is limited. \ In addition, the runtime has to be + separately implemented for every hardware platform, and for every + language, without much reuse. \ + + Finally, hardware abstraction based approaches, such as JIT + solutions>, place all the work of specializing + into a single place, which makes reuse difficult, forcing extensive + rewrite of JIT internals for each hardware platform, for each language. + This software cost is an issue in the embedded space where new hardware + is introduced often and has a limited market size to amortize the + software cost. \ In addition, this one-stop approach requires a + different JIT for each language, because it has to recognize + language-specific features to specialize -- or else it fails to achieve + good performance. This requires extensive work, making domain-specific + languages time-consuming and difficult to develop, and the multiple + JITs logistically awkward. + + What's needed is a system that leaves hardware free, language designers + free, and software developers free, imposing minimal restrictions on + them, while maximizing reuse of individual efforts and simplifying the + logistics. It would be merely a support system that makes the work of + each of those individual groups easier, and makes their independently + provided pieces naturally support each other. + + We take the position in this paper that such a support system has to + operate at all three levels: the language design plus toolchain level; + the runtime system level; and the hardware abstraction level. \ Sequoia + > does this in a limited way. \ We propose a more + general approach that supports languages without restricting them, has + more freedom to specialize the runtime, \ and reduces the effort to add + new target hardware. It takes advantage of VMS (Virtualized + Master-Slave) [>], which naturally provides pieces for + each level, and acts as an organizing principle. + + Section 2 gives a high-level reveiw of VMS, and Section 3 reviews + performance portability fundamentals. Section 4 then illustrates how + VMS can be used to organize an eco-system in which performance + portability is a reality. Section 5 gives supporing evidence of VMS's + suitability, with measurements of the time to implement three embedded + parallel languages, performance numbers for them, and measurements of + the basic overhead of VMS. + + + + On nomenclature, in this paper we define as a 3-tuple -- 1) + an animation event, 2) a collection of code animated, and 3) a + collection of information instances that code is animated upon. + However, we often refer to just the code plus data as a task, with the + implication that animation will take place in the future. \ This allows + us to say things like ``we create a task'', meaning we create a + combination of code plus data with the intent to animate it, and ``we + assign a task to'' which means we move the code plus data -- but at + some future time the combination shall be animated, exactly once. + + Virtualized Master Slave (VMS) is an + execution model that replaces Threads. \ In effect, it opens up the + thread-scheduler, letting the language supply its own scheduler that is + plugged-in. Along with the scheduler, the plugin also contains a + definition of concurrency constructs, such as publish-subscribe + channel, or send-receive, or spwan-sync -- the scheduler plus + concurrency constructs together complete the runtime for a parallel + language. + + The plugin is supplied separately from the application, as a dynamic + library or a device driver, which makes the runtime separately loaded + onto the hardware, turningit into a new component in the software + stack.\ + + The behavior of the languages's concurrency constructs is implemented + in the plugin using sequential algorithms, reducing implementation time + for the concurrency semantics to a matter of days. \ The plugin also + contains the scheduler, which gives the language control over assigning + virtual processors to physical cores. On multi-core shared-memory + machines, the run-time overhead is low, on the order of a few hundred + nano-seconds per concurrency operation. The VMS model can be + implemented as a user-space library, or existing OS kernels can be + converted to the VMS model by opening up their scheduler, and exposing + the VMS plugin interface. + + What distinguishes VMS is that it doesn't impose its own concurrency + semantics, but rather takes them as plugins. \ Hence VMS isn't a + language, but rather the creation of language runtimes. + Any language level execution model is implementable as a layer on top + of VMS, including: Actors ; Components + ; process calculi like CSP , and + Pi-calculus ; and coordination languages like Linda + . \ Likewise implementable with VMS are systems + like TBB and OpenMP, as well as hybrid languages like Sequioa, and + legacy languages that rely on Threads such as Java, and C/C++ with + pthreads. + + + + Portable performance is achieved by specializing the source code to the + hardware. \ For traditonal sequential source on sequential processors, + the specialization was the translation to machine code and optimization + that took place in the compiler. + + This one-step specialization was sufficient because most of the + performance portability was provided by using micro-architecture + hardware techniques underneath a standard instruction-set abstraction. + This has worked because, before recently, process technology has made + every generation of sequential processor faster, and parallelism could + be found at the granularity of single instructions. Also, CPU producers + have kept their instruction sets relatively fixed. + + Unfortunately, for larger-granularities of parallelism, such a + hardware-based approach to performance portability has proven + infeasible so far. \ We conjecture that the reason is, that larger + granularity parallelism is tied to the language constructs and to + application constructs (whereas instruction-level parallelism is tied + only to the machine-instruction-set constructs). Hence, information + about the language patterns and application patterns must be available + in order to exploit these larger granularities. \ The hardware cannot + make use of the larger granularities because the instruction set + abstraction provides no means to convey the necessary language and + application patterns. + + Following this intuition, we propose that to be effective, a system for + performance portability for parallel software should have a means of + identifying language and application constructs and packaging this + information in a standard format. \ Also, a hardware abstraction should + be provided that accepts such information and uses it to make + high-quality decisions about task creation, task sizing, and task + placement. + + + + VMS fits this proposal by allowing the language toolchain to extract + the application's task patterns and language patterns, and package them + in a standard format that any plugin for that language understands. As + mentioned in the review, the plugin plus VMS implementation represent + the parallel aspects of the hardware, so each language's plugin defines + the format of the task info to be handed to the hardware abstraction. + \ The first step of specializing is thus the extraction of the task + info by the toolchain. + + <\with|par-first|0fn> + |The + three places that specialization occurs. In the top box, the + toolchain extracts task information useful to the scheduler and + packages it into the binary, specializing the source to the plugin's + interface. \ In the middle, the scheduler in the plugin retrives the + info and uses it to make scheduling decisions, specializing the + binary to the hardware abstraction. At the bottom, the VMS-core + implementation hides hardware details behind the interface, + specializing the hardware to the hardware abstraction.> + + + The second step of specialization is the plugin, which uses the task + info to make high quality decisions about size and placement of tasks, + as represented in the middle of figure 2. \ The last step of + specialization is implementing the VMS abstraction on the particular + hardware. \ This combination of plugin plus VMS has the same function + that the instruction set had back in the sequential days -- it provides + a standard hardware abstraction. \ VMS has the advantage that the + abstraction is modifiable by choosing the plugin. + + <\with|par-first|0fn> + <\small-figure|> + \; + + The toolchain is split, the top portion is related to parallelism + and the bottom portion does sequential compilation of C code. In + the top box, source code is transformed into C code that has calls + inserted. They invoke the plugin, during the run, to perform + concurrency operations, such as synchronizations, sends, receives, + publish, and so on. The top box also extracts parallelism + information from the source, and encodes it as implementations of + library calls. These are later invoked by the plugin to retrieve + the information. \ In this way, the generated parallelism + information passes through any standard sequential C compiler, + which is the only hardware-specific portion. + + + + Focusing on the toolchain, we propose breaking it into two sections: + one for parallelism, the other for sequential. \ The parallelism + portion extracts the task and language information needed to make high + quality scheduling decisions. \ The sequential specializes individual + functions to the sequential cores. \ The parallelism portion remains + constant across hardware, only the sequential portion changes when the + instruction-set of the target hardware changes. + + One possible way to achieve this is to make the parallel portion + transform the original source to C code with embedded calls to the + concurrency library functions. \ During this source-to-C-plus-lib-call + transform, the information is packaged into functions in some way. + \ The resulting C-plus-lib-calls source is then compiled with the + sequential C compiler to make a binary, as depicted in Figure X. + + Meanwhile, the plugins for that language know the names of the library + functions the task information has been packaged into. \ Hence, when + the binary is linked to a plugin at load time, the task-info functions + within the binary become available to the plugin. \ They are then + called by the plugin during the run to extract the information, to make + high quality scheduling decisions. + + This scheme allows unmodified sequential compilers to be used to pass + the information along, inside of a standard binary format. \ It also + separates the parallel and sequential portions of the tool chain + cleanly, so only the relatively simple sequential C compiler changes + with hardware. \ This scheme also leaves the language designers in + charge of deciding the nature and definition of the information + carrying functions. + + These properties enable reuse of the same parallel portion of the + toolchain across chips, which is especially valuable in the embedded + market. \ With the inclusion of real-time aspects, such as latency + bounds and deadlines, this could dramatically speed up time to market + and reduce cost of introduction of new embedded chips. + + This begs the question: what kind of task information is sufficient for + parallel performance portability across the array of forseeable + parallel architectures? We propose three kinds of information: 1) + manipulators, which are able to modify the size of tasks and change the + way data is accessed, 2) information about the tasks such as type of + core they run best on, size of data footprint, predicted execution + time, and 3) real-world constraints that relate to the tasks, such as + deadlines, maximum latency for data to pass from one point in the + computation to another, and quality related information. \ Again, it is + up to the language and plugin to agree on what data is extracted, + passed, and then used for scheduling. \ Meanwhile, it is up to VMS to + provide the services and information required by the scheduler to make + use of the information. + + As research progresses, additional types of information may become + necessary, so this flexibility from the plugin system will prove key. + \ Again, the plugin plus VMS implementation are the hardware + abstraction -- the parallel equivalent of what the instruction set used + to be for sequential processors. \ The two define the behavior that the + binary expects to be present. + + This, finally, begs the question: what kind of information and services + must VMS provide to the plugin? It must expose the features of the + hardware that matter the most to performance (computation, energy, and + real-world related performance). We suggest that the memory hierarchy + and communication between the memory pools are the most important + features for parallel performance. \ However, the VMS interface should + only expose the portions of memory affectable by a runtime scheduler + (the register set usage of a sequential processor is fixed by the + binary and so not exposed). + + We suggest that most parallel architectures fall into a small number of + classes, each of which exposes sufficient structure without exposing + chip-specific details. What's important is the type(s) of cores, the + pools of memory, and the nature of communication between them. On + communication, the scheduler can treat the network statistically with + relatively simple models, independently from the topology, without + undue loss of performance >. So the main feature is + coherent memory vs distributed, which determines whether communication + can take place by shared variables in the code vs whether it needs + explicit action. + + Given this, our proposed list includes: 1) multi-core and many-core + that share a single coherent memory 2) one or more SIMD units that + share a single coherent memory 3) collections of those connected by + shared memory 4) distributed collections of those. Each memory pool, + such as a cache or scratchpad, is exposed, with the communication costs + from each pool to each other pool, and whether communication between + them is automated or explicit. Applying this to known architectures: + single-socket multi-core systems fall into 1, while adding a GPGPU puts + them also into 2 and 4. \ The Cell BE is in 1 and 4, as is the SCC. + \ Larrabee would have been in 1, 2, and 3 but may have been more + effectively treated as 1, 2, and 4. \ Traditional supercomputers made + up of shared-memory nodes connected by networks fall into 1 and 4. + + <\with|par-columns|1> + <\big-figure> + + + + + + + Figure 4 depicts how the pieces all fit together. At the top, + independent software developers write applications, in a variety of + languages. Each language defines its own format for conveying + task-related info. Independently, plugins are implemented that accept + that format, one plugin for each hardware class. This allows hardware + manufacturers to supply their own plugins, for unusual hardware + designs, and still take advantage of the existing application binaries + (non-standard instruction sets also need an install-time translator). + + The plugins, in the middle, act as a cross-bar switch, connecting the + binaries to the hardware abstractions. They are separately distributed + and loaded onto the hardware, much the way device drivers are + currently. + + At the bottom, the hardware abstraction implementations standardize the + hardware. They are mainly supplied by the hardware manufacturers, but + open-source implementations will likely also arise. + + Note that the only software developed for a new HW platform is the + VMS-core abstraction, sequential C compiler, and a bare-bones OS. + Existing applications are adpated via the plugin and abstraction. + + We expect that a small number of HW classes will quickly come to + dominate, which will encourage later HW development to fit within the + dominant classes. As a result, a standard set of sequential C compilers + will emerge, allowing software developers to perform a single + compilation pass. For fine tuning of compilation + choices, we expect install-time binary rewriters or run-time binary + optimizations. + + The end-result is that no centralized control is needed. Language + designers are free to innovate, inventing new concurrency constructs + and communication abstractions, and need as little as just the set of + plugins, or just the source-to-C translator to reach all the standard + hardware platforms. Likewise, hardware manufacturers are free to + innovate, needing minimal software development for a new chip to enjoy + access to all the applications.\ + + The set of plugins is the key to this portability, and the funnelling + of many applications to the same parallelism information at the top, + and many hardware platforms to the same abstraction at the bottom. + + + + <\with|par-columns|2> + + + <\with|par-columns|2> + + + As far as a binary is concerned, the parallel behavior of the hardware + is represented by the combination of VMS plus the plugin, while the + \ sequential behavior of the hardware's processing-elements is + represented by the Instruction Set of each core. + + The VMS implementation is made up of a master virtual-processor that + receives and calls the plugin functions, and a ``core-controller'' that + handles transferring the physical-core between animating the master + virtual processor and animating the application's virtual processors, + but according to the decisions the plugin functions make, when called + by the master VP. As part of invoking a concurrency construct, an + application VP attaches to itself a request destined for the master VP, + then suspends. We next review how this request reaches the plugin's + concurrency-construct implementation, called the requestion handler, by + walking through the steps VMS takes during operation. + + <\with|par-first|0fn> + <\with|par-left|0cm> + + + + + Internal elements of VMS + implementation > + + The steps of operation are numbered in + Figure . \ Taking them in order, 1) + scans the scheduling slots to see which ones' + slaves have suspended since the previous scan. \ 2) It hands these to + the request handler plugged-in. \ \ 3) The data in the request causes + manipulation of the data structures within the semantic state. \ These + structures hold all the slaves currently in the blocked state. \ 4) + Requests cause slaves to be moved to the ready-container, which was + implemented as an array of simple queues, one to each physical core. + Which core receives the slave is under plugin control, determined by a + combination of request contents, semantic state and physical state. 5) + During the scan, the also looks for empty slots. + It calls the scheduler plug-in function, which chooses a slave from the + ready container. \ 6) The then places the slave + VP's pointer into the scheduling slot, making it available to the + . \ 7) When done with the scan, + suspends, switching animation back to the . \ 8) + takes slave VPs out of the slots, then 9) switches + animation to them. \ 10) When a slave self-suspends, animation returns + to the , which picks another, until 11) all slots + are empty and the switches animation to the + . + + All of that happens on each core separately, but in this + particular implementation we use a central to + ensure that only one core's can be active at any + time. \ This guarantees non-overlap of trace-segments from different + s, allowing the plugins to use sequential + algorithms, without a performance penalty, as verified in Section 5. + + + Performance> + + We implemented blocked dense matrix multiply and ran on + a Core2Quad 2.4Ghz chip. + + Time to implement the runtime for the + three parallel languages averages 2 days. \ 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. Table summarizes + implementation times. + + |||||||>||||>||||>||||>||||>>>>|Person-days + to design, code, and test the library plus plug-in of each language, in + the order attempted. L.O.C. is lines of (original) code, excluding + libraries and comments.>>>>>> + + \ seen in Table + . + + The code has not been designed for speed, but rather to be easy to + understand and modify. In particular, the schedulers are simple queues + with no optimization for performance. + + <\with|par-mode|left> + |||||||||||||||>||||>|>|||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>>>>|Cycles of overhead, per scheduled + slave, consisting of: A) VMS-only cycles spent in VMS portion of + , B) time in the to switch + between VPs, C) Language-specific cycles spent in the plugin's Request + Handler and Scheduler, and D) obtaining the Master lock. \ ``comp + only'' column is cycles with perfect memory, ``comp + mem'' is actual + cycles. ``Plugin-concur'' is only concurrency related requests, + ``plugin-all'' includes create and malloc requests. Numbers are to two + significant digits due to variability. \ Language overhead was measured + while running Matrix Multiply.>>>>>> + + + We compare our implementation of the and + constructs against the distributed version of Cilk, in + Table , which shows that the same + application code has similar performance. + + ||||||||||||||||>|||>|||>|||>|||>|||>|||>|||>|||>>>>|Head-to-head + comparison of exe time in seconds for VCilk vs Cilk 5.4 on MM. \ VCilk + does 23% worse on large matrices that run for several seconds, but 210% + better on small matrices requiring milliseconds.>>>>>> + + \; + + Versus pthreads, our VMS based implementation has more than an order of + magnitude better overhead per invocation of mutex or condition variable + functionality, as seen in Table . + + <\with|par-mode|left> + |||||||||||||||||>|||||>|||||>|||||>|||||>|||||>|||||>>>>|Rough + measurements of cycles to perform synchronization primitives. \ For + VPThread, the first column shows computation time of plugin when all + memory accesses hit in the cache. The second column is total time, + including , , and the effects + of cache and page misses. Pthread times are deduced from round-trip + experiments. The ratio calculations are pthread vs total + VPThread.>>>>>> + + + Conclusion> + + This is a position paper, merely a suggestion for a large scale + organizing principle by which real-world entities can cooperatively + achieve performance portability. The key pattern is the funnelling of + many applications to the same parallelism information at the top, the + funnelling of many hardware platforms to the same abstraction at the + bottom, and the set of plugins that connect the two ends. + + + <\bibliography|bib|Helpers/plain|Helpers/Bib_for_papers.bib> + \; + + + \; + + \; + + +<\initial> + <\collection> + + + + + + + + + + + + + + +<\references> + <\collection> + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + + + +<\auxiliary> + <\collection> + <\associate|bib> + Hewitt10 + + Actors97 + + ComponentModel00 + + hoare78 + + milner99 + + Gelernter85Linda + + <\associate|figure> + > + + <\tuple|normal> + \; + + The toolchain is split, the top portion is related to parallelism and + the bottom portion does sequential compilation of C code. In the top + box, source code is transformed into C code that has calls inserted. + They invoke the plugin, during the run, to perform concurrency + operations, such as synchronizations, sends, receives, publish, and + so on. The top box also extracts parallelism information from the + source, and encodes it as implementations of library calls. These are + later invoked by the plugin to retrieve the information. \ In this + way, the generated parallelism information passes through any + standard sequential C compiler, which is the only hardware-specific + portion. + > + + > + + Internal elements of VMS + implementation |> + + <\associate|table> + Person-days to design, code, and + test the library plus plug-in of each language, in the order attempted. + L.O.C. is lines of (original) code, excluding libraries and + comments.|> + + Cycles of overhead, per + scheduled slave, consisting of: A) VMS-only cycles spent in VMS portion + of |language||master_loop>, + B) time in the |language||core_loop> + to switch between VPs, C) Language-specific cycles spent in the + plugin's Request Handler and Scheduler, and D) obtaining the Master + lock. \ ``comp only'' column is cycles with perfect memory, ``comp + + mem'' is actual cycles. ``Plugin-concur'' is only concurrency related + requests, ``plugin-all'' includes create and malloc requests. Numbers + are to two significant digits due to variability. \ Language overhead + was measured while running Matrix Multiply.|> + + Head-to-head comparison of exe + time in seconds for VCilk vs Cilk 5.4 on MM. \ VCilk does 23% worse on + large matrices that run for several seconds, but 210% better on small + matrices requiring milliseconds.|> + + Rough measurements of cycles to + perform synchronization primitives. \ For VPThread, the first column + shows computation time of plugin when all memory accesses hit in the + cache. The second column is total time, including + |language||master_loop>, + |language||core_loop>, and + the effects of cache and page misses. Pthread times are deduced from + round-trip experiments. The ratio calculations are pthread vs total + VPThread.|> + + <\associate|toc> + |math-font-series||1Overview + and Motivation> |.>>>>|> + + + |math-font-series||2VMS> + |.>>>>|> + + + |2.1Overview of VMS + \ \ |.>>>>|> + > + + |math-font-series||3Specialization> + |.>>>>|> + + + |3.1Three-step specialization + |.>>>>|> + > + + |math-font-series||4Eco-System> + |.>>>>|> + + + |math-font-series||5> + |.>>>>|> + + + |5.1Internal Workings of VMS + |.>>>>|> + > + + |Steps of Operation: + |.>>>>|> + > + + |Enabling sequential implementation of + concurrency semantics: |.>>>>|> + > + + |math-font-series||6Performance> + |.>>>>|> + + + |Setup: |.>>>>|> + > + + |Implementation-Time: + |.>>>>|> + > + + |Execution Performance: + |.>>>>|> + > + + |Head to Head: VCilk vs Cilk 5.4 \ plus + \ VPThread vs pthread: |.>>>>|> + > + + |math-font-series||7Conclusion> + |.>>>>|> + + + |math-font-series||Bibliography> + |.>>>>|> + + + + \ No newline at end of file diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/SSR/Jan_2011__SSR_parallelism_constructs.tm --- a/0__Papers/VMS/SSR/Jan_2011__SSR_parallelism_constructs.tm Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,818 +0,0 @@ - - - - -<\body> - ||>||>|> - - <\abstract> - Locks and condition variables are difficult to use, and many alternatives - have been proposed. \ This paper presents an additional alternative - motivated by the synchronous send-receive pattern in process-calculi, and - implemented with the new VMS extendable virtualization mechanism. It - includes parallel singletons which are useful when dividing up work among - cores, as well as atomic function execution and a restricted form of - nested transactions. \ More importantly, it includes facilities to query - the nature of the hardware, which allows work to be divided according to - the hardware characteristics. - - We give examples of the use of the constructs, details of their - implementation, and performance numbers. - - - - - \; - - - - \; - - - - - - \; - - \; - - \; - - <\with|par-columns|1> - <\with|par-columns|2> - - - Evidence is mounting that one-stop solutions to performance portability - fail to address critical real-world patterns -- for example, attempting - to place the full specialization into the toolchain - > requires a central entity that updates - all toolchains when new hardware becomes available. \ It also requires - automated re-compile for the new target and automated distribution of - multiple binaries. Otherwise, the software developers would have no way - to get their source code to run on new hardware -- their source has to - be recompiled and the resulting binary distributed. To do this for - thousands of different software development entities requires - centralization. But such a centralized approach has technical and - practical obstacles. - - Pure runtime based approaches > - imply a single binary, with the only change being the runtime system. - Without help from the toolchain to extract relevant information and - prepare it for the runtime, the amount of specialization and its - effectiveness is limited. \ In addition, the runtime has to be - separately implemented for every hardware platform, and for every - language, without much reuse. \ - - Finally, hardware abstraction based approaches, such as JIT - solutions>, place all the work of specializing - into a single place, which makes reuse difficult, forcing extensive - rewrite of JIT internals for each hardware platform, for each language. - This software cost is an issue in the embedded space where new hardware - is introduced often and has a limited market size to amortize the - software cost. \ In addition, this one-stop approach requires a - different JIT for each language, because it has to recognize - language-specific features to specialize -- or else it fails to achieve - good performance. This requires extensive work, making domain-specific - languages time-consuming and difficult to develop, and the multiple - JITs logistically awkward. - - What's needed is a system that leaves hardware free, language designers - free, and software developers free, imposing minimal restrictions on - them, while maximizing reuse of individual efforts and simplifying the - logistics. It would be merely a support system that makes the work of - each of those individual groups easier, and makes their independently - provided pieces naturally support each other. - - We take the position in this paper that such a support system has to - operate at all three levels: the language design plus toolchain level; - the runtime system level; and the hardware abstraction level. \ Sequoia - > does this in a limited way. \ We propose a more - general approach that supports languages without restricting them, has - more freedom to specialize the runtime, \ and reduces the effort to add - new target hardware. It takes advantage of VMS (Virtualized - Master-Slave) [>], which naturally provides pieces for - each level, and acts as an organizing principle. - - Section 2 gives a high-level reveiw of VMS, and Section 3 reviews - performance portability fundamentals. Section 4 then illustrates how - VMS can be used to organize an eco-system in which performance - portability is a reality. Section 5 gives supporing evidence of VMS's - suitability, with measurements of the time to implement three embedded - parallel languages, performance numbers for them, and measurements of - the basic overhead of VMS. - - - - On nomenclature, in this paper we define as a 3-tuple -- 1) - an animation event, 2) a collection of code animated, and 3) a - collection of information instances that code is animated upon. - However, we often refer to just the code plus data as a task, with the - implication that animation will take place in the future. \ This allows - us to say things like ``we create a task'', meaning we create a - combination of code plus data with the intent to animate it, and ``we - assign a task to'' which means we move the code plus data -- but at - some future time the combination shall be animated, exactly once. - - Virtualized Master Slave (VMS) is an - execution model that replaces Threads. \ In effect, it opens up the - thread-scheduler, letting the language supply its own scheduler that is - plugged-in. Along with the scheduler, the plugin also contains a - definition of concurrency constructs, such as publish-subscribe - channel, or send-receive, or spwan-sync -- the scheduler plus - concurrency constructs together complete the runtime for a parallel - language. - - The plugin is supplied separately from the application, as a dynamic - library or a device driver, which makes the runtime separately loaded - onto the hardware, turningit into a new component in the software - stack.\ - - The behavior of the languages's concurrency constructs is implemented - in the plugin using sequential algorithms, reducing implementation time - for the concurrency semantics to a matter of days. \ The plugin also - contains the scheduler, which gives the language control over assigning - virtual processors to physical cores. On multi-core shared-memory - machines, the run-time overhead is low, on the order of a few hundred - nano-seconds per concurrency operation. The VMS model can be - implemented as a user-space library, or existing OS kernels can be - converted to the VMS model by opening up their scheduler, and exposing - the VMS plugin interface. - - What distinguishes VMS is that it doesn't impose its own concurrency - semantics, but rather takes them as plugins. \ Hence VMS isn't a - language, but rather the creation of language runtimes. - Any language level execution model is implementable as a layer on top - of VMS, including: Actors ; Components - ; process calculi like CSP , and - Pi-calculus ; and coordination languages like Linda - . \ Likewise implementable with VMS are systems - like TBB and OpenMP, as well as hybrid languages like Sequioa, and - legacy languages that rely on Threads such as Java, and C/C++ with - pthreads. - - - - Portable performance is achieved by specializing the source code to the - hardware. \ For traditonal sequential source on sequential processors, - the specialization was the translation to machine code and optimization - that took place in the compiler. - - This one-step specialization was sufficient because most of the - performance portability was provided by using micro-architecture - hardware techniques underneath a standard instruction-set abstraction. - This has worked because, before recently, process technology has made - every generation of sequential processor faster, and parallelism could - be found at the granularity of single instructions. Also, CPU producers - have kept their instruction sets relatively fixed. - - Unfortunately, for larger-granularities of parallelism, such a - hardware-based approach to performance portability has proven - infeasible so far. \ We conjecture that the reason is, that larger - granularity parallelism is tied to the language constructs and to - application constructs (whereas instruction-level parallelism is tied - only to the machine-instruction-set constructs). Hence, information - about the language patterns and application patterns must be available - in order to exploit these larger granularities. \ The hardware cannot - make use of the larger granularities because the instruction set - abstraction provides no means to convey the necessary language and - application patterns. - - Following this intuition, we propose that to be effective, a system for - performance portability for parallel software should have a means of - identifying language and application constructs and packaging this - information in a standard format. \ Also, a hardware abstraction should - be provided that accepts such information and uses it to make - high-quality decisions about task creation, task sizing, and task - placement. - - - - VMS fits this proposal by allowing the language toolchain to extract - the application's task patterns and language patterns, and package them - in a standard format that any plugin for that language understands. As - mentioned in the review, the plugin plus VMS implementation represent - the parallel aspects of the hardware, so each language's plugin defines - the format of the task info to be handed to the hardware abstraction. - \ The first step of specializing is thus the extraction of the task - info by the toolchain. - - <\with|par-first|0fn> - |The - three places that specialization occurs. In the top box, the - toolchain extracts task information useful to the scheduler and - packages it into the binary, specializing the source to the plugin's - interface. \ In the middle, the scheduler in the plugin retrives the - info and uses it to make scheduling decisions, specializing the - binary to the hardware abstraction. At the bottom, the VMS-core - implementation hides hardware details behind the interface, - specializing the hardware to the hardware abstraction.> - - - The second step of specialization is the plugin, which uses the task - info to make high quality decisions about size and placement of tasks, - as represented in the middle of figure 2. \ The last step of - specialization is implementing the VMS abstraction on the particular - hardware. \ This combination of plugin plus VMS has the same function - that the instruction set had back in the sequential days -- it provides - a standard hardware abstraction. \ VMS has the advantage that the - abstraction is modifiable by choosing the plugin. - - <\with|par-first|0fn> - <\small-figure|> - \; - - The toolchain is split, the top portion is related to parallelism - and the bottom portion does sequential compilation of C code. In - the top box, source code is transformed into C code that has calls - inserted. They invoke the plugin, during the run, to perform - concurrency operations, such as synchronizations, sends, receives, - publish, and so on. The top box also extracts parallelism - information from the source, and encodes it as implementations of - library calls. These are later invoked by the plugin to retrieve - the information. \ In this way, the generated parallelism - information passes through any standard sequential C compiler, - which is the only hardware-specific portion. - - - - Focusing on the toolchain, we propose breaking it into two sections: - one for parallelism, the other for sequential. \ The parallelism - portion extracts the task and language information needed to make high - quality scheduling decisions. \ The sequential specializes individual - functions to the sequential cores. \ The parallelism portion remains - constant across hardware, only the sequential portion changes when the - instruction-set of the target hardware changes. - - One possible way to achieve this is to make the parallel portion - transform the original source to C code with embedded calls to the - concurrency library functions. \ During this source-to-C-plus-lib-call - transform, the information is packaged into functions in some way. - \ The resulting C-plus-lib-calls source is then compiled with the - sequential C compiler to make a binary, as depicted in Figure X. - - Meanwhile, the plugins for that language know the names of the library - functions the task information has been packaged into. \ Hence, when - the binary is linked to a plugin at load time, the task-info functions - within the binary become available to the plugin. \ They are then - called by the plugin during the run to extract the information, to make - high quality scheduling decisions. - - This scheme allows unmodified sequential compilers to be used to pass - the information along, inside of a standard binary format. \ It also - separates the parallel and sequential portions of the tool chain - cleanly, so only the relatively simple sequential C compiler changes - with hardware. \ This scheme also leaves the language designers in - charge of deciding the nature and definition of the information - carrying functions. - - These properties enable reuse of the same parallel portion of the - toolchain across chips, which is especially valuable in the embedded - market. \ With the inclusion of real-time aspects, such as latency - bounds and deadlines, this could dramatically speed up time to market - and reduce cost of introduction of new embedded chips. - - This begs the question: what kind of task information is sufficient for - parallel performance portability across the array of forseeable - parallel architectures? We propose three kinds of information: 1) - manipulators, which are able to modify the size of tasks and change the - way data is accessed, 2) information about the tasks such as type of - core they run best on, size of data footprint, predicted execution - time, and 3) real-world constraints that relate to the tasks, such as - deadlines, maximum latency for data to pass from one point in the - computation to another, and quality related information. \ Again, it is - up to the language and plugin to agree on what data is extracted, - passed, and then used for scheduling. \ Meanwhile, it is up to VMS to - provide the services and information required by the scheduler to make - use of the information. - - As research progresses, additional types of information may become - necessary, so this flexibility from the plugin system will prove key. - \ Again, the plugin plus VMS implementation are the hardware - abstraction -- the parallel equivalent of what the instruction set used - to be for sequential processors. \ The two define the behavior that the - binary expects to be present. - - This, finally, begs the question: what kind of information and services - must VMS provide to the plugin? It must expose the features of the - hardware that matter the most to performance (computation, energy, and - real-world related performance). We suggest that the memory hierarchy - and communication between the memory pools are the most important - features for parallel performance. \ However, the VMS interface should - only expose the portions of memory affectable by a runtime scheduler - (the register set usage of a sequential processor is fixed by the - binary and so not exposed). - - We suggest that most parallel architectures fall into a small number of - classes, each of which exposes sufficient structure without exposing - chip-specific details. What's important is the type(s) of cores, the - pools of memory, and the nature of communication between them. On - communication, the scheduler can treat the network statistically with - relatively simple models, independently from the topology, without - undue loss of performance >. So the main feature is - coherent memory vs distributed, which determines whether communication - can take place by shared variables in the code vs whether it needs - explicit action. - - Given this, our proposed list includes: 1) multi-core and many-core - that share a single coherent memory 2) one or more SIMD units that - share a single coherent memory 3) collections of those connected by - shared memory 4) distributed collections of those. Each memory pool, - such as a cache or scratchpad, is exposed, with the communication costs - from each pool to each other pool, and whether communication between - them is automated or explicit. Applying this to known architectures: - single-socket multi-core systems fall into 1, while adding a GPGPU puts - them also into 2 and 4. \ The Cell BE is in 1 and 4, as is the SCC. - \ Larrabee would have been in 1, 2, and 3 but may have been more - effectively treated as 1, 2, and 4. \ Traditional supercomputers made - up of shared-memory nodes connected by networks fall into 1 and 4. - - <\with|par-columns|1> - <\big-figure> - - - - - - - Figure 4 depicts how the pieces all fit together. At the top, - independent software developers write applications, in a variety of - languages. Each language defines its own format for conveying - task-related info. Independently, plugins are implemented that accept - that format, one plugin for each hardware class. This allows hardware - manufacturers to supply their own plugins, for unusual hardware - designs, and still take advantage of the existing application binaries - (non-standard instruction sets also need an install-time translator). - - The plugins, in the middle, act as a cross-bar switch, connecting the - binaries to the hardware abstractions. They are separately distributed - and loaded onto the hardware, much the way device drivers are - currently. - - At the bottom, the hardware abstraction implementations standardize the - hardware. They are mainly supplied by the hardware manufacturers, but - open-source implementations will likely also arise. - - Note that the only software developed for a new HW platform is the - VMS-core abstraction, sequential C compiler, and a bare-bones OS. - Existing applications are adpated via the plugin and abstraction. - - We expect that a small number of HW classes will quickly come to - dominate, which will encourage later HW development to fit within the - dominant classes. As a result, a standard set of sequential C compilers - will emerge, allowing software developers to perform a single - compilation pass. For fine tuning of compilation - choices, we expect install-time binary rewriters or run-time binary - optimizations. - - The end-result is that no centralized control is needed. Language - designers are free to innovate, inventing new concurrency constructs - and communication abstractions, and need as little as just the set of - plugins, or just the source-to-C translator to reach all the standard - hardware platforms. Likewise, hardware manufacturers are free to - innovate, needing minimal software development for a new chip to enjoy - access to all the applications.\ - - The set of plugins is the key to this portability, and the funnelling - of many applications to the same parallelism information at the top, - and many hardware platforms to the same abstraction at the bottom. - - - - <\with|par-columns|2> - - - <\with|par-columns|2> - - - As far as a binary is concerned, the parallel behavior of the hardware - is represented by the combination of VMS plus the plugin, while the - \ sequential behavior of the hardware's processing-elements is - represented by the Instruction Set of each core. - - The VMS implementation is made up of a master virtual-processor that - receives and calls the plugin functions, and a ``core-controller'' that - handles transferring the physical-core between animating the master - virtual processor and animating the application's virtual processors, - but according to the decisions the plugin functions make, when called - by the master VP. As part of invoking a concurrency construct, an - application VP attaches to itself a request destined for the master VP, - then suspends. We next review how this request reaches the plugin's - concurrency-construct implementation, called the requestion handler, by - walking through the steps VMS takes during operation. - - <\with|par-first|0fn> - <\with|par-left|0cm> - - - - - Internal elements of VMS - implementation > - - The steps of operation are numbered in - Figure . \ Taking them in order, 1) - scans the scheduling slots to see which ones' - slaves have suspended since the previous scan. \ 2) It hands these to - the request handler plugged-in. \ \ 3) The data in the request causes - manipulation of the data structures within the semantic state. \ These - structures hold all the slaves currently in the blocked state. \ 4) - Requests cause slaves to be moved to the ready-container, which was - implemented as an array of simple queues, one to each physical core. - Which core receives the slave is under plugin control, determined by a - combination of request contents, semantic state and physical state. 5) - During the scan, the also looks for empty slots. - It calls the scheduler plug-in function, which chooses a slave from the - ready container. \ 6) The then places the slave - VP's pointer into the scheduling slot, making it available to the - . \ 7) When done with the scan, - suspends, switching animation back to the . \ 8) - takes slave VPs out of the slots, then 9) switches - animation to them. \ 10) When a slave self-suspends, animation returns - to the , which picks another, until 11) all slots - are empty and the switches animation to the - . - - All of that happens on each core separately, but in this - particular implementation we use a central to - ensure that only one core's can be active at any - time. \ This guarantees non-overlap of trace-segments from different - s, allowing the plugins to use sequential - algorithms, without a performance penalty, as verified in Section 5. - - - Performance> - - We implemented blocked dense matrix multiply and ran on - a Core2Quad 2.4Ghz chip. - - Time to implement the runtime for the - three parallel languages averages 2 days. \ 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. Table summarizes - implementation times. - - |||||||>||||>||||>||||>||||>>>>|Person-days - to design, code, and test the library plus plug-in of each language, in - the order attempted. L.O.C. is lines of (original) code, excluding - libraries and comments.>>>>>> - - \ seen in Table - . - - The code has not been designed for speed, but rather to be easy to - understand and modify. In particular, the schedulers are simple queues - with no optimization for performance. - - <\with|par-mode|left> - |||||||||||||||>||||>|>|||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>>>>|Cycles of overhead, per scheduled - slave, consisting of: A) VMS-only cycles spent in VMS portion of - , B) time in the to switch - between VPs, C) Language-specific cycles spent in the plugin's Request - Handler and Scheduler, and D) obtaining the Master lock. \ ``comp - only'' column is cycles with perfect memory, ``comp + mem'' is actual - cycles. ``Plugin-concur'' is only concurrency related requests, - ``plugin-all'' includes create and malloc requests. Numbers are to two - significant digits due to variability. \ Language overhead was measured - while running Matrix Multiply.>>>>>> - - - We compare our implementation of the and - constructs against the distributed version of Cilk, in - Table , which shows that the same - application code has similar performance. - - ||||||||||||||||>|||>|||>|||>|||>|||>|||>|||>|||>>>>|Head-to-head - comparison of exe time in seconds for VCilk vs Cilk 5.4 on MM. \ VCilk - does 23% worse on large matrices that run for several seconds, but 210% - better on small matrices requiring milliseconds.>>>>>> - - \; - - Versus pthreads, our VMS based implementation has more than an order of - magnitude better overhead per invocation of mutex or condition variable - functionality, as seen in Table . - - <\with|par-mode|left> - |||||||||||||||||>|||||>|||||>|||||>|||||>|||||>|||||>>>>|Rough - measurements of cycles to perform synchronization primitives. \ For - VPThread, the first column shows computation time of plugin when all - memory accesses hit in the cache. The second column is total time, - including , , and the effects - of cache and page misses. Pthread times are deduced from round-trip - experiments. The ratio calculations are pthread vs total - VPThread.>>>>>> - - - Conclusion> - - This is a position paper, merely a suggestion for a large scale - organizing principle by which real-world entities can cooperatively - achieve performance portability. The key pattern is the funnelling of - many applications to the same parallelism information at the top, the - funnelling of many hardware platforms to the same abstraction at the - bottom, and the set of plugins that connect the two ends. - - - <\bibliography|bib|Helpers/plain|Helpers/Bib_for_papers.bib> - \; - - - \; - - \; - - -<\initial> - <\collection> - - - - - - - - - - - - - - -<\references> - <\collection> - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - - - -<\auxiliary> - <\collection> - <\associate|bib> - Hewitt10 - - Actors97 - - ComponentModel00 - - hoare78 - - milner99 - - Gelernter85Linda - - <\associate|figure> - > - - <\tuple|normal> - \; - - The toolchain is split, the top portion is related to parallelism and - the bottom portion does sequential compilation of C code. In the top - box, source code is transformed into C code that has calls inserted. - They invoke the plugin, during the run, to perform concurrency - operations, such as synchronizations, sends, receives, publish, and - so on. The top box also extracts parallelism information from the - source, and encodes it as implementations of library calls. These are - later invoked by the plugin to retrieve the information. \ In this - way, the generated parallelism information passes through any - standard sequential C compiler, which is the only hardware-specific - portion. - > - - > - - Internal elements of VMS - implementation |> - - <\associate|table> - Person-days to design, code, and - test the library plus plug-in of each language, in the order attempted. - L.O.C. is lines of (original) code, excluding libraries and - comments.|> - - Cycles of overhead, per - scheduled slave, consisting of: A) VMS-only cycles spent in VMS portion - of |language||master_loop>, - B) time in the |language||core_loop> - to switch between VPs, C) Language-specific cycles spent in the - plugin's Request Handler and Scheduler, and D) obtaining the Master - lock. \ ``comp only'' column is cycles with perfect memory, ``comp + - mem'' is actual cycles. ``Plugin-concur'' is only concurrency related - requests, ``plugin-all'' includes create and malloc requests. Numbers - are to two significant digits due to variability. \ Language overhead - was measured while running Matrix Multiply.|> - - Head-to-head comparison of exe - time in seconds for VCilk vs Cilk 5.4 on MM. \ VCilk does 23% worse on - large matrices that run for several seconds, but 210% better on small - matrices requiring milliseconds.|> - - Rough measurements of cycles to - perform synchronization primitives. \ For VPThread, the first column - shows computation time of plugin when all memory accesses hit in the - cache. The second column is total time, including - |language||master_loop>, - |language||core_loop>, and - the effects of cache and page misses. Pthread times are deduced from - round-trip experiments. The ratio calculations are pthread vs total - VPThread.|> - - <\associate|toc> - |math-font-series||1Overview - and Motivation> |.>>>>|> - - - |math-font-series||2VMS> - |.>>>>|> - - - |2.1Overview of VMS - \ \ |.>>>>|> - > - - |math-font-series||3Specialization> - |.>>>>|> - - - |3.1Three-step specialization - |.>>>>|> - > - - |math-font-series||4Eco-System> - |.>>>>|> - - - |math-font-series||5> - |.>>>>|> - - - |5.1Internal Workings of VMS - |.>>>>|> - > - - |Steps of Operation: - |.>>>>|> - > - - |Enabling sequential implementation of - concurrency semantics: |.>>>>|> - > - - |math-font-series||6Performance> - |.>>>>|> - - - |Setup: |.>>>>|> - > - - |Implementation-Time: - |.>>>>|> - > - - |Execution Performance: - |.>>>>|> - > - - |Head to Head: VCilk vs Cilk 5.4 \ plus - \ VPThread vs pthread: |.>>>>|> - > - - |math-font-series||7Conclusion> - |.>>>>|> - - - |math-font-series||Bibliography> - |.>>>>|> - - - - \ No newline at end of file diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/SSR/Jan_2011__SSR_parallelism_constructs.tm~ --- a/0__Papers/VMS/SSR/Jan_2011__SSR_parallelism_constructs.tm~ Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,818 +0,0 @@ - - - - -<\body> - ||>||>|> - - <\abstract> - Locks and condition variables are difficult to use, and many alternatives - have been proposed. \ This paper presents an additional alternative - motivated by the synchronous send-receive pattern in process-calculi, and - implemented with the new VMS extendable virtualization mechanism. It - includes parallel singletons which are useful when dividing up work among - cores, as well as atomic function execution and a restricted form of - nested transactions. \ More importantly, it includes facilities to query - the nature of the hardware, which allows work to be divided according to - the hardware characteristics. - - We give examples of the use of the constructs, details of their - implementation, and performance numbers. - - - - - \; - - - - \; - - - - - - \; - - \; - - \; - - <\with|par-columns|1> - <\with|par-columns|2> - - - Evidence is mounting that one-stop solutions to performance portability - fail to address critical real-world patterns -- for example, attempting - to place the full specialization into the toolchain - > requires a central entity that updates - all toolchains when new hardware becomes available. \ It also requires - automated re-compile for the new target and automated distribution of - multiple binaries. Otherwise, the software developers would have no way - to get their source code to run on new hardware -- their source has to - be recompiled and the resulting binary distributed. To do this for - thousands of different software development entities requires - centralization. But such a centralized approach has technical and - practical obstacles. - - Pure runtime based approaches > - imply a single binary, with the only change being the runtime system. - Without help from the toolchain to extract relevant information and - prepare it for the runtime, the amount of specialization and its - effectiveness is limited. \ In addition, the runtime has to be - separately implemented for every hardware platform, and for every - language, without much reuse. \ - - Finally, hardware abstraction based approaches, such as JIT - solutions>, place all the work of specializing - into a single place, which makes reuse difficult, forcing extensive - rewrite of JIT internals for each hardware platform, for each language. - This software cost is an issue in the embedded space where new hardware - is introduced often and has a limited market size to amortize the - software cost. \ In addition, this one-stop approach requires a - different JIT for each language, because it has to recognize - language-specific features to specialize -- or else it fails to achieve - good performance. This requires extensive work, making domain-specific - languages time-consuming and difficult to develop, and the multiple - JITs logistically awkward. - - What's needed is a system that leaves hardware free, language designers - free, and software developers free, imposing minimal restrictions on - them, while maximizing reuse of individual efforts and simplifying the - logistics. It would be merely a support system that makes the work of - each of those individual groups easier, and makes their independently - provided pieces naturally support each other. - - We take the position in this paper that such a support system has to - operate at all three levels: the language design plus toolchain level; - the runtime system level; and the hardware abstraction level. \ Sequoia - > does this in a limited way. \ We propose a more - general approach that supports languages without restricting them, has - more freedom to specialize the runtime, \ and reduces the effort to add - new target hardware. It takes advantage of VMS (Virtualized - Master-Slave) [>], which naturally provides pieces for - each level, and acts as an organizing principle. - - Section 2 gives a high-level reveiw of VMS, and Section 3 reviews - performance portability fundamentals. Section 4 then illustrates how - VMS can be used to organize an eco-system in which performance - portability is a reality. Section 5 gives supporing evidence of VMS's - suitability, with measurements of the time to implement three embedded - parallel languages, performance numbers for them, and measurements of - the basic overhead of VMS. - - - - On nomenclature, in this paper we define as a 3-tuple -- 1) - an animation event, 2) a collection of code animated, and 3) a - collection of information instances that code is animated upon. - However, we often refer to just the code plus data as a task, with the - implication that animation will take place in the future. \ This allows - us to say things like ``we create a task'', meaning we create a - combination of code plus data with the intent to animate it, and ``we - assign a task to'' which means we move the code plus data -- but at - some future time the combination shall be animated, exactly once. - - Virtualized Master Slave (VMS) is an - execution model that replaces Threads. \ In effect, it opens up the - thread-scheduler, letting the language supply its own scheduler that is - plugged-in. Along with the scheduler, the plugin also contains a - definition of concurrency constructs, such as publish-subscribe - channel, or send-receive, or spwan-sync -- the scheduler plus - concurrency constructs together complete the runtime for a parallel - language. - - The plugin is supplied separately from the application, as a dynamic - library or a device driver, which makes the runtime separately loaded - onto the hardware, turningit into a new component in the software - stack.\ - - The behavior of the languages's concurrency constructs is implemented - in the plugin using sequential algorithms, reducing implementation time - for the concurrency semantics to a matter of days. \ The plugin also - contains the scheduler, which gives the language control over assigning - virtual processors to physical cores. On multi-core shared-memory - machines, the run-time overhead is low, on the order of a few hundred - nano-seconds per concurrency operation. The VMS model can be - implemented as a user-space library, or existing OS kernels can be - converted to the VMS model by opening up their scheduler, and exposing - the VMS plugin interface. - - What distinguishes VMS is that it doesn't impose its own concurrency - semantics, but rather takes them as plugins. \ Hence VMS isn't a - language, but rather the creation of language runtimes. - Any language level execution model is implementable as a layer on top - of VMS, including: Actors ; Components - ; process calculi like CSP , and - Pi-calculus ; and coordination languages like Linda - . \ Likewise implementable with VMS are systems - like TBB and OpenMP, as well as hybrid languages like Sequioa, and - legacy languages that rely on Threads such as Java, and C/C++ with - pthreads. - - - - Portable performance is achieved by specializing the source code to the - hardware. \ For traditonal sequential source on sequential processors, - the specialization was the translation to machine code and optimization - that took place in the compiler. - - This one-step specialization was sufficient because most of the - performance portability was provided by using micro-architecture - hardware techniques underneath a standard instruction-set abstraction. - This has worked because, before recently, process technology has made - every generation of sequential processor faster, and parallelism could - be found at the granularity of single instructions. Also, CPU producers - have kept their instruction sets relatively fixed. - - Unfortunately, for larger-granularities of parallelism, such a - hardware-based approach to performance portability has proven - infeasible so far. \ We conjecture that the reason is, that larger - granularity parallelism is tied to the language constructs and to - application constructs (whereas instruction-level parallelism is tied - only to the machine-instruction-set constructs). Hence, information - about the language patterns and application patterns must be available - in order to exploit these larger granularities. \ The hardware cannot - make use of the larger granularities because the instruction set - abstraction provides no means to convey the necessary language and - application patterns. - - Following this intuition, we propose that to be effective, a system for - performance portability for parallel software should have a means of - identifying language and application constructs and packaging this - information in a standard format. \ Also, a hardware abstraction should - be provided that accepts such information and uses it to make - high-quality decisions about task creation, task sizing, and task - placement. - - - - VMS fits this proposal by allowing the language toolchain to extract - the application's task patterns and language patterns, and package them - in a standard format that any plugin for that language understands. As - mentioned in the review, the plugin plus VMS implementation represent - the parallel aspects of the hardware, so each language's plugin defines - the format of the task info to be handed to the hardware abstraction. - \ The first step of specializing is thus the extraction of the task - info by the toolchain. - - <\with|par-first|0fn> - |The - three places that specialization occurs. In the top box, the - toolchain extracts task information useful to the scheduler and - packages it into the binary, specializing the source to the plugin's - interface. \ In the middle, the scheduler in the plugin retrives the - info and uses it to make scheduling decisions, specializing the - binary to the hardware abstraction. At the bottom, the VMS-core - implementation hides hardware details behind the interface, - specializing the hardware to the hardware abstraction.> - - - The second step of specialization is the plugin, which uses the task - info to make high quality decisions about size and placement of tasks, - as represented in the middle of figure 2. \ The last step of - specialization is implementing the VMS abstraction on the particular - hardware. \ This combination of plugin plus VMS has the same function - that the instruction set had back in the sequential days -- it provides - a standard hardware abstraction. \ VMS has the advantage that the - abstraction is modifiable by choosing the plugin. - - <\with|par-first|0fn> - <\small-figure|> - \; - - The toolchain is split, the top portion is related to parallelism - and the bottom portion does sequential compilation of C code. In - the top box, source code is transformed into C code that has calls - inserted. They invoke the plugin, during the run, to perform - concurrency operations, such as synchronizations, sends, receives, - publish, and so on. The top box also extracts parallelism - information from the source, and encodes it as implementations of - library calls. These are later invoked by the plugin to retrieve - the information. \ In this way, the generated parallelism - information passes through any standard sequential C compiler, - which is the only hardware-specific portion. - - - - Focusing on the toolchain, we propose breaking it into two sections: - one for parallelism, the other for sequential. \ The parallelism - portion extracts the task and language information needed to make high - quality scheduling decisions. \ The sequential specializes individual - functions to the sequential cores. \ The parallelism portion remains - constant across hardware, only the sequential portion changes when the - instruction-set of the target hardware changes. - - One possible way to achieve this is to make the parallel portion - transform the original source to C code with embedded calls to the - concurrency library functions. \ During this source-to-C-plus-lib-call - transform, the information is packaged into functions in some way. - \ The resulting C-plus-lib-calls source is then compiled with the - sequential C compiler to make a binary, as depicted in Figure X. - - Meanwhile, the plugins for that language know the names of the library - functions the task information has been packaged into. \ Hence, when - the binary is linked to a plugin at load time, the task-info functions - within the binary become available to the plugin. \ They are then - called by the plugin during the run to extract the information, to make - high quality scheduling decisions. - - This scheme allows unmodified sequential compilers to be used to pass - the information along, inside of a standard binary format. \ It also - separates the parallel and sequential portions of the tool chain - cleanly, so only the relatively simple sequential C compiler changes - with hardware. \ This scheme also leaves the language designers in - charge of deciding the nature and definition of the information - carrying functions. - - These properties enable reuse of the same parallel portion of the - toolchain across chips, which is especially valuable in the embedded - market. \ With the inclusion of real-time aspects, such as latency - bounds and deadlines, this could dramatically speed up time to market - and reduce cost of introduction of new embedded chips. - - This begs the question: what kind of task information is sufficient for - parallel performance portability across the array of forseeable - parallel architectures? We propose three kinds of information: 1) - manipulators, which are able to modify the size of tasks and change the - way data is accessed, 2) information about the tasks such as type of - core they run best on, size of data footprint, predicted execution - time, and 3) real-world constraints that relate to the tasks, such as - deadlines, maximum latency for data to pass from one point in the - computation to another, and quality related information. \ Again, it is - up to the language and plugin to agree on what data is extracted, - passed, and then used for scheduling. \ Meanwhile, it is up to VMS to - provide the services and information required by the scheduler to make - use of the information. - - As research progresses, additional types of information may become - necessary, so this flexibility from the plugin system will prove key. - \ Again, the plugin plus VMS implementation are the hardware - abstraction -- the parallel equivalent of what the instruction set used - to be for sequential processors. \ The two define the behavior that the - binary expects to be present. - - This, finally, begs the question: what kind of information and services - must VMS provide to the plugin? It must expose the features of the - hardware that matter the most to performance (computation, energy, and - real-world related performance). We suggest that the memory hierarchy - and communication between the memory pools are the most important - features for parallel performance. \ However, the VMS interface should - only expose the portions of memory affectable by a runtime scheduler - (the register set usage of a sequential processor is fixed by the - binary and so not exposed). - - We suggest that most parallel architectures fall into a small number of - classes, each of which exposes sufficient structure without exposing - chip-specific details. What's important is the type(s) of cores, the - pools of memory, and the nature of communication between them. On - communication, the scheduler can treat the network statistically with - relatively simple models, independently from the topology, without - undue loss of performance >. So the main feature is - coherent memory vs distributed, which determines whether communication - can take place by shared variables in the code vs whether it needs - explicit action. - - Given this, our proposed list includes: 1) multi-core and many-core - that share a single coherent memory 2) one or more SIMD units that - share a single coherent memory 3) collections of those connected by - shared memory 4) distributed collections of those. Each memory pool, - such as a cache or scratchpad, is exposed, with the communication costs - from each pool to each other pool, and whether communication between - them is automated or explicit. Applying this to known architectures: - single-socket multi-core systems fall into 1, while adding a GPGPU puts - them also into 2 and 4. \ The Cell BE is in 1 and 4, as is the SCC. - \ Larrabee would have been in 1, 2, and 3 but may have been more - effectively treated as 1, 2, and 4. \ Traditional supercomputers made - up of shared-memory nodes connected by networks fall into 1 and 4. - - <\with|par-columns|1> - <\big-figure> - - - - - - - Figure 4 depicts how the pieces all fit together. At the top, - independent software developers write applications, in a variety of - languages. Each language defines its own format for conveying - task-related info. Independently, plugins are implemented that accept - that format, one plugin for each hardware class. This allows hardware - manufacturers to supply their own plugins, for unusual hardware - designs, and still take advantage of the existing application binaries - (non-standard instruction sets also need an install-time translator). - - The plugins, in the middle, act as a cross-bar switch, connecting the - binaries to the hardware abstractions. They are separately distributed - and loaded onto the hardware, much the way device drivers are - currently. - - At the bottom, the hardware abstraction implementations standardize the - hardware. They are mainly supplied by the hardware manufacturers, but - open-source implementations will likely also arise. - - Note that the only software developed for a new HW platform is the - VMS-core abstraction, sequential C compiler, and a bare-bones OS. - Existing applications are adpated via the plugin and abstraction. - - We expect that a small number of HW classes will quickly come to - dominate, which will encourage later HW development to fit within the - dominant classes. As a result, a standard set of sequential C compilers - will emerge, allowing software developers to perform a single - compilation pass. For fine tuning of compilation - choices, we expect install-time binary rewriters or run-time binary - optimizations. - - The end-result is that no centralized control is needed. Language - designers are free to innovate, inventing new concurrency constructs - and communication abstractions, and need as little as just the set of - plugins, or just the source-to-C translator to reach all the standard - hardware platforms. Likewise, hardware manufacturers are free to - innovate, needing minimal software development for a new chip to enjoy - access to all the applications.\ - - The set of plugins is the key to this portability, and the funnelling - of many applications to the same parallelism information at the top, - and many hardware platforms to the same abstraction at the bottom. - - - - <\with|par-columns|2> - - - <\with|par-columns|2> - - - As far as a binary is concerned, the parallel behavior of the hardware - is represented by the combination of VMS plus the plugin, while the - \ sequential behavior of the hardware's processing-elements is - represented by the Instruction Set of each core. - - The VMS implementation is made up of a master virtual-processor that - receives and calls the plugin functions, and a ``core-controller'' that - handles transferring the physical-core between animating the master - virtual processor and animating the application's virtual processors, - but according to the decisions the plugin functions make, when called - by the master VP. As part of invoking a concurrency construct, an - application VP attaches to itself a request destined for the master VP, - then suspends. We next review how this request reaches the plugin's - concurrency-construct implementation, called the requestion handler, by - walking through the steps VMS takes during operation. - - <\with|par-first|0fn> - <\with|par-left|0cm> - - - - - Internal elements of VMS - implementation > - - The steps of operation are numbered in - Figure . \ Taking them in order, 1) - scans the scheduling slots to see which ones' - slaves have suspended since the previous scan. \ 2) It hands these to - the request handler plugged-in. \ \ 3) The data in the request causes - manipulation of the data structures within the semantic state. \ These - structures hold all the slaves currently in the blocked state. \ 4) - Requests cause slaves to be moved to the ready-container, which was - implemented as an array of simple queues, one to each physical core. - Which core receives the slave is under plugin control, determined by a - combination of request contents, semantic state and physical state. 5) - During the scan, the also looks for empty slots. - It calls the scheduler plug-in function, which chooses a slave from the - ready container. \ 6) The then places the slave - VP's pointer into the scheduling slot, making it available to the - . \ 7) When done with the scan, - suspends, switching animation back to the . \ 8) - takes slave VPs out of the slots, then 9) switches - animation to them. \ 10) When a slave self-suspends, animation returns - to the , which picks another, until 11) all slots - are empty and the switches animation to the - . - - All of that happens on each core separately, but in this - particular implementation we use a central to - ensure that only one core's can be active at any - time. \ This guarantees non-overlap of trace-segments from different - s, allowing the plugins to use sequential - algorithms, without a performance penalty, as verified in Section 5. - - - Performance> - - We implemented blocked dense matrix multiply and ran on - a Core2Quad 2.4Ghz chip. - - Time to implement the runtime for the - three parallel languages averages 2 days. \ 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. Table summarizes - implementation times. - - |||||||>||||>||||>||||>||||>>>>|Person-days - to design, code, and test the library plus plug-in of each language, in - the order attempted. L.O.C. is lines of (original) code, excluding - libraries and comments.>>>>>> - - \ seen in Table - . - - The code has not been designed for speed, but rather to be easy to - understand and modify. In particular, the schedulers are simple queues - with no optimization for performance. - - <\with|par-mode|left> - |||||||||||||||>||||>|>|||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>||||>>>>|Cycles of overhead, per scheduled - slave, consisting of: A) VMS-only cycles spent in VMS portion of - , B) time in the to switch - between VPs, C) Language-specific cycles spent in the plugin's Request - Handler and Scheduler, and D) obtaining the Master lock. \ ``comp - only'' column is cycles with perfect memory, ``comp + mem'' is actual - cycles. ``Plugin-concur'' is only concurrency related requests, - ``plugin-all'' includes create and malloc requests. Numbers are to two - significant digits due to variability. \ Language overhead was measured - while running Matrix Multiply.>>>>>> - - - We compare our implementation of the and - constructs against the distributed version of Cilk, in - Table , which shows that the same - application code has similar performance. - - ||||||||||||||||>|||>|||>|||>|||>|||>|||>|||>|||>>>>|Head-to-head - comparison of exe time in seconds for VCilk vs Cilk 5.4 on MM. \ VCilk - does 23% worse on large matrices that run for several seconds, but 210% - better on small matrices requiring milliseconds.>>>>>> - - \; - - Versus pthreads, our VMS based implementation has more than an order of - magnitude better overhead per invocation of mutex or condition variable - functionality, as seen in Table . - - <\with|par-mode|left> - |||||||||||||||||>|||||>|||||>|||||>|||||>|||||>|||||>>>>|Rough - measurements of cycles to perform synchronization primitives. \ For - VPThread, the first column shows computation time of plugin when all - memory accesses hit in the cache. The second column is total time, - including , , and the effects - of cache and page misses. Pthread times are deduced from round-trip - experiments. The ratio calculations are pthread vs total - VPThread.>>>>>> - - - Conclusion> - - This is a position paper, merely a suggestion for a large scale - organizing principle by which real-world entities can cooperatively - achieve performance portability. The key pattern is the funnelling of - many applications to the same parallelism information at the top, the - funnelling of many hardware platforms to the same abstraction at the - bottom, and the set of plugins that connect the two ends. - - - <\bibliography|bib|Helpers/plain|Helpers/Bib_for_papers.bib> - \; - - - \; - - \; - - -<\initial> - <\collection> - - - - - - - - - - - - - - -<\references> - <\collection> - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - - - -<\auxiliary> - <\collection> - <\associate|bib> - Hewitt10 - - Actors97 - - ComponentModel00 - - hoare78 - - milner99 - - Gelernter85Linda - - <\associate|figure> - > - - <\tuple|normal> - \; - - The toolchain is split, the top portion is related to parallelism and - the bottom portion does sequential compilation of C code. In the top - box, source code is transformed into C code that has calls inserted. - They invoke the plugin, during the run, to perform concurrency - operations, such as synchronizations, sends, receives, publish, and - so on. The top box also extracts parallelism information from the - source, and encodes it as implementations of library calls. These are - later invoked by the plugin to retrieve the information. \ In this - way, the generated parallelism information passes through any - standard sequential C compiler, which is the only hardware-specific - portion. - > - - > - - Internal elements of VMS - implementation |> - - <\associate|table> - Person-days to design, code, and - test the library plus plug-in of each language, in the order attempted. - L.O.C. is lines of (original) code, excluding libraries and - comments.|> - - Cycles of overhead, per - scheduled slave, consisting of: A) VMS-only cycles spent in VMS portion - of |language||master_loop>, - B) time in the |language||core_loop> - to switch between VPs, C) Language-specific cycles spent in the - plugin's Request Handler and Scheduler, and D) obtaining the Master - lock. \ ``comp only'' column is cycles with perfect memory, ``comp + - mem'' is actual cycles. ``Plugin-concur'' is only concurrency related - requests, ``plugin-all'' includes create and malloc requests. Numbers - are to two significant digits due to variability. \ Language overhead - was measured while running Matrix Multiply.|> - - Head-to-head comparison of exe - time in seconds for VCilk vs Cilk 5.4 on MM. \ VCilk does 23% worse on - large matrices that run for several seconds, but 210% better on small - matrices requiring milliseconds.|> - - Rough measurements of cycles to - perform synchronization primitives. \ For VPThread, the first column - shows computation time of plugin when all memory accesses hit in the - cache. The second column is total time, including - |language||master_loop>, - |language||core_loop>, and - the effects of cache and page misses. Pthread times are deduced from - round-trip experiments. The ratio calculations are pthread vs total - VPThread.|> - - <\associate|toc> - |math-font-series||1Overview - and Motivation> |.>>>>|> - - - |math-font-series||2VMS> - |.>>>>|> - - - |2.1Overview of VMS - \ \ |.>>>>|> - > - - |math-font-series||3Specialization> - |.>>>>|> - - - |3.1Three-step specialization - |.>>>>|> - > - - |math-font-series||4Eco-System> - |.>>>>|> - - - |math-font-series||5> - |.>>>>|> - - - |5.1Internal Workings of VMS - |.>>>>|> - > - - |Steps of Operation: - |.>>>>|> - > - - |Enabling sequential implementation of - concurrency semantics: |.>>>>|> - > - - |math-font-series||6Performance> - |.>>>>|> - - - |Setup: |.>>>>|> - > - - |Implementation-Time: - |.>>>>|> - > - - |Execution Performance: - |.>>>>|> - > - - |Head to Head: VCilk vs Cilk 5.4 \ plus - \ VPThread vs pthread: |.>>>>|> - > - - |math-font-series||7Conclusion> - |.>>>>|> - - - |math-font-series||Bibliography> - |.>>>>|> - - - - \ No newline at end of file diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Portability_stack_combined.pdf Binary file 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Portability_stack_combined.pdf has changed diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Portability_stack_combined.svg --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/Portability_stack_combined.svg Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2693 +0,0 @@ - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Lang Syntax - - - - Request Intf - - - - VMS Intf - - - - ISA - - - - - - - - - Interface - Layer - - - - - - - Toolchain - - - - Specializer - - - - - Specializer - - - - - - - - - Toolchain - - - - Specializer - - - - - Specializer - - - - - - - - - Toolchain - - - - Specializer - - - - - Specializer - - - - - - diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/cray1_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/cray1_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1135 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: cray1_pthreads_vthread_8_32_128_512thds__o30000__perfCtrs.meas.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:06:46 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (cray1_pthreads_vthread_8_32_128_512thds__o30000__perfCtrs.meas.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:06:46 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 -602 448 M -63 0 V -stroke -518 448 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] -] -46.7 MRshow -1.000 UL -LTb -602 715 M -63 0 V -stroke -518 715 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] -] -46.7 MRshow -1.000 UL -LTb -602 983 M -63 0 V -stroke -518 983 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] -] -46.7 MRshow -1.000 UL -LTb -602 1250 M -63 0 V -stroke -518 1250 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] -] -46.7 MRshow -1.000 UL -LTb -602 1518 M -63 0 V -stroke -518 1518 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] -] -46.7 MRshow -1.000 UL -LTb -602 1785 M -63 0 V -stroke -518 1785 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] -] -46.7 MRshow -1.000 UL -LTb -602 2053 M -63 0 V -stroke -518 2053 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] -] -46.7 MRshow -1.000 UL -LTb -602 2320 M -63 0 V -stroke -518 2320 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] -] -46.7 MRshow -1.000 UL -LTb -602 2588 M -63 0 V -stroke -518 2588 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 9)] -] -46.7 MRshow -1.000 UL -LTb -602 2855 M -63 0 V -stroke -518 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] -] -46.7 MRshow -1.000 UL -LTb -602 448 M -0 63 V -stroke -602 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1035 448 M -0 63 V -stroke -1035 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1468 448 M -0 63 V -stroke -1468 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1901 448 M -0 63 V -stroke -1901 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2335 448 M -0 63 V -stroke -2335 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2768 448 M -0 63 V -stroke -2768 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3201 448 M -0 63 V -stroke -3201 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3634 448 M -0 63 V -stroke -3634 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -602 2855 M -602 448 L -3465 0 V -0 2407 R --3465 0 R -stroke -LCb setrgbcolor -112 1651 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 -2334 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -LCb setrgbcolor -3538 2919 M -[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] -] -46.7 MCshow -LTb -1.000 UL -LTb -2793 2289 N -0 700 V -1491 0 V -0 -700 V --1491 0 V -Z stroke -2793 2849 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT5 -LC7 setrgbcolor -LCb setrgbcolor -3717 2779 M -[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] -] -46.7 MRshow -LT5 -LC7 setrgbcolor -3801 2779 M -399 0 V -775 2855 M -28 -401 V -924 1709 L -249 -553 V -1658 827 L -2629 643 L -4067 572 L -% End plot #1 -% Begin plot #2 -stroke -LT6 -LCb setrgbcolor -3717 2639 M -[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] -] -46.7 MRshow -LT6 -3801 2639 M -399 0 V -1064 2855 M -111 -618 V -488 -826 V -2631 949 L -4067 767 L -% End plot #2 -% Begin plot #3 -stroke -LT7 -LC1 setrgbcolor -LCb setrgbcolor -3717 2499 M -[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] -] -46.7 MRshow -LT7 -LC1 setrgbcolor -3801 2499 M -399 0 V -2210 2855 M -429 -685 V -4067 1557 L -% End plot #3 -% Begin plot #4 -stroke -LT8 -LCb setrgbcolor -3717 2359 M -[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] -] -46.7 MRshow -LT8 -3801 2359 M -399 0 V -% End plot #4 -stroke -1.000 UL -LTb -602 2855 M -602 448 L -3465 0 V -0 2407 R --3465 0 R -1.000 UP -602 448 M -63 0 V -stroke -518 448 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] -] -46.7 MRshow -1.000 UL -LTb -602 715 M -63 0 V -stroke -518 715 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] -] -46.7 MRshow -1.000 UL -LTb -602 983 M -63 0 V -stroke -518 983 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] -] -46.7 MRshow -1.000 UL -LTb -602 1250 M -63 0 V -stroke -518 1250 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] -] -46.7 MRshow -1.000 UL -LTb -602 1518 M -63 0 V -stroke -518 1518 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] -] -46.7 MRshow -1.000 UL -LTb -602 1785 M -63 0 V -stroke -518 1785 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] -] -46.7 MRshow -1.000 UL -LTb -602 2053 M -63 0 V -stroke -518 2053 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] -] -46.7 MRshow -1.000 UL -LTb -602 2320 M -63 0 V -stroke -518 2320 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] -] -46.7 MRshow -1.000 UL -LTb -602 2588 M -63 0 V -stroke -518 2588 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 9)] -] -46.7 MRshow -1.000 UL -LTb -602 2855 M -63 0 V -stroke -518 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] -] -46.7 MRshow -1.000 UL -LTb -602 448 M -0 63 V -stroke -602 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1035 448 M -0 63 V -stroke -1035 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1468 448 M -0 63 V -stroke -1468 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1901 448 M -0 63 V -stroke -1901 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2335 448 M -0 63 V -stroke -2335 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2768 448 M -0 63 V -stroke -2768 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3201 448 M -0 63 V -stroke -3201 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3634 448 M -0 63 V -stroke -3634 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -602 2855 M -602 448 L -3465 0 V -0 2407 R --3465 0 R -stroke -LCb setrgbcolor -112 1651 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 -2334 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -LCb setrgbcolor -2022 2919 M -[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] -] -46.7 MCshow -LTb -1.000 UL -LTb -1277 2289 N -0 700 V -1491 0 V -0 -700 V --1491 0 V -Z stroke -1277 2849 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT1 -LCa setrgbcolor -602 715 M -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -% End plot #1 -% Begin plot #2 -stroke -LT0 -LCb setrgbcolor -2201 2779 M -[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] -] -46.7 MRshow -LT0 -2285 2779 M -399 0 V -692 1306 M -18 -111 V -31 -149 V -801 842 L -922 697 L -1172 589 L -486 -65 V -970 -37 V -4067 473 L -% End plot #2 -% Begin plot #3 -stroke -LT2 -LCb setrgbcolor -2201 2639 M -[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] -] -46.7 MRshow -LT2 -2285 2639 M -399 0 V -692 1319 M -18 -134 V -30 -176 V -801 845 L -922 690 L -1173 582 L -485 -60 V -970 -36 V -4067 472 L -% End plot #3 -% Begin plot #4 -stroke -LT3 -LCb setrgbcolor -2201 2499 M -[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] -] -46.7 MRshow -LT3 -2285 2499 M -399 0 V -693 1386 M -18 -167 V -30 -161 V -801 865 L -923 711 L -1173 595 L -485 -67 V -970 -39 V -4067 474 L -% End plot #4 -% Begin plot #5 -stroke -LT4 -LCb setrgbcolor -2201 2359 M -[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] -] -46.7 MRshow -LT4 -2285 2359 M -399 0 V -692 1425 M -19 -158 V -30 -179 V -802 892 L -923 725 L -1173 602 L -485 -70 V -970 -40 V -4067 476 L -% End plot #5 -stroke -1.000 UL -LTb -602 2855 M -602 448 L -3465 0 V -0 2407 R --3465 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,818 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:08:51 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:08:51 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 -stroke -434 448 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] -] -46.7 MRshow -1.000 UL -LTb -518 792 M -63 0 V -stroke -434 792 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] -] -46.7 MRshow -1.000 UL -LTb -518 1136 M -63 0 V -stroke -434 1136 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] -] -46.7 MRshow -1.000 UL -LTb -518 1480 M -63 0 V -stroke -434 1480 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] -] -46.7 MRshow -1.000 UL -LTb -518 1823 M -63 0 V -stroke -434 1823 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] -] -46.7 MRshow -1.000 UL -LTb -518 2167 M -63 0 V -stroke -434 2167 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] -] -46.7 MRshow -1.000 UL -LTb -518 2511 M -63 0 V -stroke -434 2511 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] -] -46.7 MRshow -1.000 UL -LTb -518 2855 M -63 0 V -stroke -434 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] -] -46.7 MRshow -1.000 UL -LTb -518 448 M -0 63 V -stroke -518 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -962 448 M -0 63 V -stroke -962 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1405 448 M -0 63 V -stroke -1405 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1849 448 M -0 63 V -stroke -1849 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2293 448 M -0 63 V -stroke -2293 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2736 448 M -0 63 V -stroke -2736 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3180 448 M -0 63 V -stroke -3180 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3623 448 M -0 63 V -stroke -3623 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -518 2855 M -518 448 L -3549 0 V -0 2407 R --3549 0 R -stroke -LCb setrgbcolor -112 1651 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 -2292 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -1.000 UL -LTb -2798 2538 N -0 420 V -1491 0 V -0 -420 V --1491 0 V -Z stroke -2798 2958 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT1 -LCa setrgbcolor -518 792 M -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -% End plot #1 -% Begin plot #2 -stroke -LT1 -LCb setrgbcolor -3722 2888 M -[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] -] -46.7 MRshow -LT1 -3806 2888 M -399 0 V -746 2855 M -848 2069 L -255 -711 V -1600 935 L -2594 699 L -4067 607 L -% End plot #2 -% Begin plot #3 -stroke -LT2 -LCb setrgbcolor -3722 2748 M -[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] -] -46.7 MRshow -LT2 -3806 2748 M -399 0 V -1089 2855 M -15 -106 V -1605 1686 L -991 -594 V -4067 858 L -% End plot #3 -% Begin plot #4 -stroke -LT3 -LCb setrgbcolor -3722 2608 M -[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] -] -46.7 MRshow -LT3 -3806 2608 M -399 0 V -2508 2855 M -97 -193 V -4067 1874 L -% End plot #4 -stroke -1.000 UL -LTb -518 2855 M -518 448 L -3549 0 V -0 2407 R --3549 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/cray1_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/cray1_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,851 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: cray1_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:09:54 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (cray1_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:09:54 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 -stroke -434 448 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] -] -46.7 MRshow -1.000 UL -LTb -518 792 M -63 0 V -stroke -434 792 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] -] -46.7 MRshow -1.000 UL -LTb -518 1136 M -63 0 V -stroke -434 1136 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] -] -46.7 MRshow -1.000 UL -LTb -518 1480 M -63 0 V -stroke -434 1480 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] -] -46.7 MRshow -1.000 UL -LTb -518 1823 M -63 0 V -stroke -434 1823 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] -] -46.7 MRshow -1.000 UL -LTb -518 2167 M -63 0 V -stroke -434 2167 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] -] -46.7 MRshow -1.000 UL -LTb -518 2511 M -63 0 V -stroke -434 2511 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] -] -46.7 MRshow -1.000 UL -LTb -518 2855 M -63 0 V -stroke -434 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] -] -46.7 MRshow -1.000 UL -LTb -518 448 M -0 63 V -stroke -518 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -962 448 M -0 63 V -stroke -962 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1405 448 M -0 63 V -stroke -1405 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1849 448 M -0 63 V -stroke -1849 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2293 448 M -0 63 V -stroke -2293 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2736 448 M -0 63 V -stroke -2736 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3180 448 M -0 63 V -stroke -3180 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3623 448 M -0 63 V -stroke -3623 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -518 2855 M -518 448 L -3549 0 V -0 2407 R --3549 0 R -stroke -LCb setrgbcolor -112 1651 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 -2292 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -1.000 UL -LTb -2492 2232 N -0 560 V -1491 0 V -0 -560 V --1491 0 V -Z stroke -2492 2792 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT1 -LCa setrgbcolor -518 792 M -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -% End plot #1 -% Begin plot #2 -stroke -LT1 -LCb setrgbcolor -3416 2722 M -[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] -] -46.7 MRshow -LT1 -3500 2722 M -399 0 V -610 1551 M -19 -143 V -31 -191 V -722 955 L -846 769 L -1102 629 L -497 -83 V -994 -48 V -4067 480 L -% End plot #2 -% Begin plot #3 -stroke -LT2 -LCb setrgbcolor -3416 2582 M -[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] -] -46.7 MRshow -LT2 -3500 2582 M -399 0 V -610 1568 M -19 -173 V -31 -226 V -722 958 L -846 759 L -1102 621 L -497 -78 V -994 -46 V -4067 479 L -% End plot #3 -% Begin plot #4 -stroke -LT3 -LCb setrgbcolor -3416 2442 M -[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] -] -46.7 MRshow -LT3 -3500 2442 M -399 0 V -611 1654 M -18 -214 V -31 -208 V -722 984 L -847 786 L -1103 636 L -496 -85 V -994 -50 V -4067 482 L -% End plot #4 -% Begin plot #5 -stroke -LT4 -LCb setrgbcolor -3416 2302 M -[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] -] -46.7 MRshow -LT4 -3500 2302 M -399 0 V -611 1704 M -18 -203 V -31 -230 V -63 -252 V -846 804 L -1103 645 L -497 -89 V -993 -52 V -4067 484 L -% End plot #5 -stroke -1.000 UL -LTb -518 2855 M -518 448 L -3549 0 V -0 2407 R --3549 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/vms_pthreads_8_32_128thds__o30000__perfCtrs.result.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/vms_pthreads_8_32_128thds__o30000__perfCtrs.result.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,819 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: vms_pthreads_8_32_128thds__o30000__perfCtrs.result.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:11:43 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (vms_pthreads_8_32_128thds__o30000__perfCtrs.result.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:11:43 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 -stroke -434 448 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] -] -46.7 MRshow -1.000 UL -LTb -518 792 M -63 0 V -stroke -434 792 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] -] -46.7 MRshow -1.000 UL -LTb -518 1136 M -63 0 V -stroke -434 1136 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] -] -46.7 MRshow -1.000 UL -LTb -518 1480 M -63 0 V -stroke -434 1480 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] -] -46.7 MRshow -1.000 UL -LTb -518 1823 M -63 0 V -stroke -434 1823 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] -] -46.7 MRshow -1.000 UL -LTb -518 2167 M -63 0 V -stroke -434 2167 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] -] -46.7 MRshow -1.000 UL -LTb -518 2511 M -63 0 V -stroke -434 2511 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] -] -46.7 MRshow -1.000 UL -LTb -518 2855 M -63 0 V -stroke -434 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] -] -46.7 MRshow -1.000 UL -LTb -518 448 M -0 63 V -stroke -518 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -962 448 M -0 63 V -stroke -962 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1405 448 M -0 63 V -stroke -1405 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1849 448 M -0 63 V -stroke -1849 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2293 448 M -0 63 V -stroke -2293 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2736 448 M -0 63 V -stroke -2736 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3180 448 M -0 63 V -stroke -3180 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3623 448 M -0 63 V -stroke -3623 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -518 2855 M -518 448 L -3549 0 V -0 2407 R --3549 0 R -stroke -LCb setrgbcolor -112 1651 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 -2292 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -1.000 UL -LTb -2492 2372 N -0 420 V -1491 0 V -0 -420 V --1491 0 V -Z stroke -2492 2792 M -1491 0 V -% Begin plot #1 -stroke -3.000 UL -LT1 -LCa setrgbcolor -518 792 M -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -% End plot #1 -% Begin plot #2 -stroke -4.000 UL -LT1 -LCb setrgbcolor -3416 2722 M -[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] -] -46.7 MRshow -LT1 -3500 2722 M -399 0 V -715 2855 M -58 -684 V -984 1411 L -1411 947 L -2263 700 L -3965 573 L -% End plot #2 -% Begin plot #3 -stroke -LT2 -LCb setrgbcolor -3416 2582 M -[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] -] -46.7 MRshow -LT2 -3500 2582 M -399 0 V -947 2855 M -38 -338 V -427 -979 V -849 -507 V -3969 747 L -% End plot #3 -% Begin plot #4 -stroke -LT3 -LCb setrgbcolor -3416 2442 M -[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] -] -46.7 MRshow -LT3 -3500 2442 M -399 0 V -2070 2855 M -197 -434 V -3969 1446 L -% End plot #4 -stroke -1.000 UL -LTb -518 2855 M -518 448 L -3549 0 V -0 2407 R --3549 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/vms_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/vms_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,852 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: vms_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:12:20 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (vms_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:12:20 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 -stroke -434 448 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] -] -46.7 MRshow -1.000 UL -LTb -518 792 M -63 0 V -stroke -434 792 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] -] -46.7 MRshow -1.000 UL -LTb -518 1136 M -63 0 V -stroke -434 1136 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] -] -46.7 MRshow -1.000 UL -LTb -518 1480 M -63 0 V -stroke -434 1480 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] -] -46.7 MRshow -1.000 UL -LTb -518 1823 M -63 0 V -stroke -434 1823 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] -] -46.7 MRshow -1.000 UL -LTb -518 2167 M -63 0 V -stroke -434 2167 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] -] -46.7 MRshow -1.000 UL -LTb -518 2511 M -63 0 V -stroke -434 2511 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] -] -46.7 MRshow -1.000 UL -LTb -518 2855 M -63 0 V -stroke -434 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] -] -46.7 MRshow -1.000 UL -LTb -518 448 M -0 63 V -stroke -518 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -962 448 M -0 63 V -stroke -962 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1405 448 M -0 63 V -stroke -1405 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1849 448 M -0 63 V -stroke -1849 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2293 448 M -0 63 V -stroke -2293 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2736 448 M -0 63 V -stroke -2736 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3180 448 M -0 63 V -stroke -3180 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3623 448 M -0 63 V -stroke -3623 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -518 2855 M -518 448 L -3549 0 V -0 2407 R --3549 0 R -stroke -LCb setrgbcolor -112 1651 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 -2292 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -1.000 UL -LTb -2492 2232 N -0 560 V -1491 0 V -0 -560 V --1491 0 V -Z stroke -2492 2792 M -1491 0 V -% Begin plot #1 -stroke -3.000 UL -LT1 -LCa setrgbcolor -518 792 M -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -% End plot #1 -% Begin plot #2 -stroke -4.000 UL -LT1 -LCb setrgbcolor -3416 2722 M -[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] -] -46.7 MRshow -LT1 -3500 2722 M -399 0 V -572 2677 M -16 -429 V -24 -559 V -55 -454 V -774 920 L -987 706 L -1411 563 L -852 -54 V -3966 478 L -% End plot #2 -% Begin plot #3 -stroke -LT2 -LCb setrgbcolor -3416 2582 M -[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] -] -46.7 MRshow -LT2 -3500 2582 M -399 0 V -571 2168 M -17 -436 V -24 -217 V -55 -464 V -774 801 L -986 651 L -1412 549 L -852 -55 V -3966 472 L -% End plot #3 -% Begin plot #4 -stroke -LT3 -LCb setrgbcolor -3416 2442 M -[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] -] -46.7 MRshow -LT3 -3500 2442 M -399 0 V -572 2234 M -16 -381 V -26 -417 V -53 -317 V -773 823 L -987 656 L -1412 553 L -852 -51 V -3968 472 L -% End plot #4 -% Begin plot #5 -stroke -LT4 -LCb setrgbcolor -3416 2302 M -[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] -] -46.7 MRshow -LT4 -3500 2302 M -399 0 V -572 2389 M -14 -445 V -27 -449 V -54 -383 V -772 837 L -985 659 L -1411 552 L -853 -52 V -3968 473 L -% End plot #5 -stroke -1.000 UL -LTb -518 2855 M -518 448 L -3549 0 V -0 2407 R --3549 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,699 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: xoanon_pthreads_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:22:29 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (xoanon_pthreads_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:22:29 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 922 M -63 0 V -stroke -602 922 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] -] -46.7 MRshow -1.000 UL -LTb -686 1405 M -63 0 V -stroke -602 1405 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] -] -46.7 MRshow -1.000 UL -LTb -686 1888 M -63 0 V -stroke -602 1888 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] -] -46.7 MRshow -1.000 UL -LTb -686 2372 M -63 0 V -stroke -602 2372 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] -] -46.7 MRshow -1.000 UL -LTb -686 2855 M -63 0 V -stroke -602 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] -] -46.7 MRshow -1.000 UL -LTb -686 448 M -0 63 V -stroke -686 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1109 448 M -0 63 V -stroke -1109 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1531 448 M -0 63 V -stroke -1531 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1954 448 M -0 63 V -stroke -1954 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2377 448 M -0 63 V -stroke -2377 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2799 448 M -0 63 V -stroke -2799 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3222 448 M -0 63 V -stroke -3222 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3644 448 M -0 63 V -stroke -3644 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -stroke -LCb setrgbcolor -112 1651 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 -2376 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -1.000 UL -LTb -770 511 N -0 560 V -1491 0 V -0 -560 V -770 511 L -Z stroke -770 1071 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT0 -LCb setrgbcolor -1694 1001 M -[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] -] -46.7 MRshow -LT0 -1778 1001 M -399 0 V -1735 2855 M -662 -919 V -4067 1238 L -% End plot #1 -% Begin plot #2 -stroke -LT1 -LCb setrgbcolor -1694 861 M -[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] -] -46.7 MRshow -LT1 -1778 861 M -399 0 V -1748 2855 M -2555 1723 L -4067 1065 L -% End plot #2 -% Begin plot #3 -stroke -LT2 -LCb setrgbcolor -1694 721 M -[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] -] -46.7 MRshow -LT2 -1778 721 M -399 0 V -1420 2855 M -170 -542 V -784 -867 V -3986 870 L -% End plot #3 -% Begin plot #4 -stroke -LT3 -LCb setrgbcolor -1694 581 M -[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] -] -46.7 MRshow -LT3 -1778 581 M -399 0 V -1802 2855 M -572 -574 V -4007 1207 L -% End plot #4 -stroke -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,695 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: xoanon_pthreads_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:23:26 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (xoanon_pthreads_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:23:26 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 922 M -63 0 V -stroke -602 922 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] -] -46.7 MRshow -1.000 UL -LTb -686 1405 M -63 0 V -stroke -602 1405 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] -] -46.7 MRshow -1.000 UL -LTb -686 1888 M -63 0 V -stroke -602 1888 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] -] -46.7 MRshow -1.000 UL -LTb -686 2372 M -63 0 V -stroke -602 2372 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] -] -46.7 MRshow -1.000 UL -LTb -686 2855 M -63 0 V -stroke -602 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] -] -46.7 MRshow -1.000 UL -LTb -686 448 M -0 63 V -stroke -686 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1109 448 M -0 63 V -stroke -1109 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1531 448 M -0 63 V -stroke -1531 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1954 448 M -0 63 V -stroke -1954 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2377 448 M -0 63 V -stroke -2377 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2799 448 M -0 63 V -stroke -2799 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3222 448 M -0 63 V -stroke -3222 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3644 448 M -0 63 V -stroke -3644 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -stroke -LCb setrgbcolor -112 1651 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 -2376 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -1.000 UL -LTb -770 511 N -0 560 V -1491 0 V -0 -560 V -770 511 L -Z stroke -770 1071 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT0 -LCb setrgbcolor -1694 1001 M -[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] -] -46.7 MRshow -LT0 -1778 1001 M -399 0 V -154 1854 R -25 -124 V -3985 1744 L -% End plot #1 -% Begin plot #2 -stroke -LT1 -LCb setrgbcolor -1694 861 M -[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] -] -46.7 MRshow -LT1 -1778 861 M -399 0 V -% End plot #2 -% Begin plot #3 -stroke -LT2 -LCb setrgbcolor -1694 721 M -[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] -] -46.7 MRshow -LT2 -1778 721 M -399 0 V -618 2134 R -476 -856 V -796 -271 V -% End plot #3 -% Begin plot #4 -stroke -LT3 -LCb setrgbcolor -1694 581 M -[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] -] -46.7 MRshow -LT3 -1778 581 M -399 0 V -166 2274 R -586 -716 V -4067 1495 L -% End plot #4 -stroke -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-dist.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-dist.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,948 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-dist.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:30:24 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-dist.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:30:24 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 922 M -63 0 V -stroke -602 922 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] -] -46.7 MRshow -1.000 UL -LTb -686 1405 M -63 0 V -stroke -602 1405 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] -] -46.7 MRshow -1.000 UL -LTb -686 1888 M -63 0 V -stroke -602 1888 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] -] -46.7 MRshow -1.000 UL -LTb -686 2372 M -63 0 V -stroke -602 2372 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] -] -46.7 MRshow -1.000 UL -LTb -686 2855 M -63 0 V -stroke -602 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] -] -46.7 MRshow -1.000 UL -LTb -686 448 M -0 63 V -stroke -686 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1109 448 M -0 63 V -stroke -1109 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1531 448 M -0 63 V -stroke -1531 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1954 448 M -0 63 V -stroke -1954 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2377 448 M -0 63 V -stroke -2377 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2799 448 M -0 63 V -stroke -2799 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3222 448 M -0 63 V -stroke -3222 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3644 448 M -0 63 V -stroke -3644 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -stroke -LCb setrgbcolor -112 1651 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 -2376 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -LCb setrgbcolor -3532 2882 M -[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] -] -46.7 MCshow -LTb -1.000 UL -LTb -2787 2252 N -0 700 V -1491 0 V -0 -700 V --1491 0 V -Z stroke -2787 2812 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT5 -LC7 setrgbcolor -LCb setrgbcolor -3711 2742 M -[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] -] -46.7 MRshow -LT5 -LC7 setrgbcolor -3795 2742 M -399 0 V -1735 2855 M -662 -919 V -4067 1238 L -% End plot #1 -% Begin plot #2 -stroke -LT6 -LCb setrgbcolor -3711 2602 M -[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] -] -46.7 MRshow -LT6 -3795 2602 M -399 0 V -1748 2855 M -2555 1723 L -4067 1065 L -% End plot #2 -% Begin plot #3 -stroke -LT7 -LC1 setrgbcolor -LCb setrgbcolor -3711 2462 M -[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] -] -46.7 MRshow -LT7 -LC1 setrgbcolor -3795 2462 M -399 0 V -1420 2855 M -170 -542 V -784 -867 V -3986 870 L -% End plot #3 -% Begin plot #4 -stroke -LT8 -LCb setrgbcolor -3711 2322 M -[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] -] -46.7 MRshow -LT8 -3795 2322 M -399 0 V -1802 2855 M -572 -574 V -4007 1207 L -% End plot #4 -stroke -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -1.000 UP -686 922 M -63 0 V -stroke -602 922 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] -] -46.7 MRshow -1.000 UL -LTb -686 1405 M -63 0 V -stroke -602 1405 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] -] -46.7 MRshow -1.000 UL -LTb -686 1888 M -63 0 V -stroke -602 1888 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] -] -46.7 MRshow -1.000 UL -LTb -686 2372 M -63 0 V -stroke -602 2372 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] -] -46.7 MRshow -1.000 UL -LTb -686 2855 M -63 0 V -stroke -602 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] -] -46.7 MRshow -1.000 UL -LTb -686 448 M -0 63 V -stroke -686 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1109 448 M -0 63 V -stroke -1109 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1531 448 M -0 63 V -stroke -1531 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1954 448 M -0 63 V -stroke -1954 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2377 448 M -0 63 V -stroke -2377 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2799 448 M -0 63 V -stroke -2799 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3222 448 M -0 63 V -stroke -3222 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3644 448 M -0 63 V -stroke -3644 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -stroke -LCb setrgbcolor -112 1651 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 -2376 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -LCb setrgbcolor -1546 1238 M -[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] -] -46.7 MCshow -LTb -1.000 UL -LTb -801 608 N -0 700 V -1491 0 V -0 -700 V -801 608 L -Z stroke -801 1168 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT0 -LCb setrgbcolor -1725 1098 M -[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] -] -46.7 MRshow -LT0 -1809 1098 M -399 0 V -743 626 M -22 -61 V -39 -36 V -75 -37 V -154 -17 V -303 -13 V -609 -7 V -1218 -2 V -904 -1 V -% End plot #1 -% Begin plot #2 -stroke -LT2 -LCb setrgbcolor -1725 958 M -[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] -] -46.7 MRshow -LT2 -1809 958 M -399 0 V -743 575 M -24 4 V -36 -82 V -76 -20 V -153 -6 V -303 -12 V -609 -4 V -1217 -4 V -906 -1 V -% End plot #2 -% Begin plot #3 -stroke -LT3 -LCb setrgbcolor -1725 818 M -[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] -] -46.7 MRshow -LT3 -1809 818 M -399 0 V -742 581 M -24 -38 V -39 -9 V -76 -41 V -151 -19 V -304 -11 V -610 -7 V -1216 -5 V -905 -1 V -% End plot #3 -% Begin plot #4 -stroke -LT4 -LCb setrgbcolor -1725 678 M -[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] -] -46.7 MRshow -LT4 -1809 678 M -399 0 V -743 589 M -23 -41 V -38 -29 V -77 -20 V -151 -28 V -303 -12 V -610 -4 V -1217 -4 V -905 0 V -% End plot #4 -stroke -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-out.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-out.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,884 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-out.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:45:12 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-out.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:45:12 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 922 M -63 0 V -stroke -602 922 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] -] -46.7 MRshow -1.000 UL -LTb -686 1405 M -63 0 V -stroke -602 1405 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] -] -46.7 MRshow -1.000 UL -LTb -686 1888 M -63 0 V -stroke -602 1888 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] -] -46.7 MRshow -1.000 UL -LTb -686 2372 M -63 0 V -stroke -602 2372 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] -] -46.7 MRshow -1.000 UL -LTb -686 2855 M -63 0 V -stroke -602 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] -] -46.7 MRshow -1.000 UL -LTb -686 448 M -0 63 V -stroke -686 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1159 448 M -0 63 V -stroke -1159 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1631 448 M -0 63 V -stroke -1631 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2104 448 M -0 63 V -stroke -2104 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -2576 448 M -0 63 V -stroke -2576 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -686 2855 M -686 448 L -1890 0 V -0 2407 R --1890 0 R -stroke -LCb setrgbcolor -112 1651 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 -1631 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -LCb setrgbcolor -3489 2785 M -[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] -] -46.7 MCshow -LTb -1.000 UL -LTb -2744 2155 N -0 700 V -1491 0 V -0 -700 V --1491 0 V -Z stroke -2744 2715 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT5 -LC7 setrgbcolor -LCb setrgbcolor -3668 2645 M -[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] -] -46.7 MRshow -LT5 -LC7 setrgbcolor -3752 2645 M -399 0 V -1272 2855 M -371 -919 V -933 -698 V -% End plot #1 -% Begin plot #2 -stroke -LT6 -LCb setrgbcolor -3668 2505 M -[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] -] -46.7 MRshow -LT6 -3752 2505 M -399 0 V -1280 2855 M -1731 1723 L -845 -658 V -% End plot #2 -% Begin plot #3 -stroke -LT7 -LC1 setrgbcolor -LCb setrgbcolor -3668 2365 M -[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] -] -46.7 MRshow -LT7 -LC1 setrgbcolor -3752 2365 M -399 0 V -1096 2855 M -95 -542 V -439 -867 V -2531 870 L -% End plot #3 -% Begin plot #4 -stroke -LT8 -LCb setrgbcolor -3668 2225 M -[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] -] -46.7 MRshow -LT8 -3752 2225 M -399 0 V -1310 2855 M -320 -574 V -2543 1207 L -% End plot #4 -stroke -1.000 UL -LTb -686 2855 M -686 448 L -1890 0 V -0 2407 R --1890 0 R -1.000 UP -686 922 M -63 0 V -stroke -602 922 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] -] -46.7 MRshow -1.000 UL -LTb -686 1405 M -63 0 V -stroke -602 1405 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] -] -46.7 MRshow -1.000 UL -LTb -686 1888 M -63 0 V -stroke -602 1888 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] -] -46.7 MRshow -1.000 UL -LTb -686 2372 M -63 0 V -stroke -602 2372 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] -] -46.7 MRshow -1.000 UL -LTb -686 2855 M -63 0 V -stroke -602 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] -] -46.7 MRshow -1.000 UL -LTb -686 448 M -0 63 V -stroke -686 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1159 448 M -0 63 V -stroke -1159 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1631 448 M -0 63 V -stroke -1631 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2104 448 M -0 63 V -stroke -2104 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -2576 448 M -0 63 V -stroke -2576 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -686 2855 M -686 448 L -1890 0 V -0 2407 R --1890 0 R -stroke -LCb setrgbcolor -112 1651 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 -1631 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -LCb setrgbcolor -3489 1931 M -[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] -] -46.7 MCshow -LTb -1.000 UL -LTb -2744 1301 N -0 700 V -1491 0 V -0 -700 V --1491 0 V -Z stroke -2744 1861 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT0 -LCb setrgbcolor -3668 1791 M -[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] -] -46.7 MRshow -LT0 -3752 1791 M -399 0 V -718 626 M -12 -61 V -22 -36 V -42 -37 V -86 -17 V -169 -13 V -341 -7 V -681 -2 V -505 -1 V -% End plot #1 -% Begin plot #2 -stroke -LT2 -LCb setrgbcolor -3668 1651 M -[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] -] -46.7 MRshow -LT2 -3752 1651 M -399 0 V -718 575 M -13 4 V -20 -82 V -43 -20 V -85 -6 V -170 -12 V -340 -4 V -681 -4 V -506 -1 V -% End plot #2 -% Begin plot #3 -stroke -LT3 -LCb setrgbcolor -3668 1511 M -[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] -] -46.7 MRshow -LT3 -3752 1511 M -399 0 V -717 581 M -13 -38 V -23 -9 V -42 -41 V -85 -19 V -169 -11 V -341 -7 V -680 -5 V -506 -1 V -% End plot #3 -% Begin plot #4 -stroke -LT4 -LCb setrgbcolor -3668 1371 M -[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] -] -46.7 MRshow -LT4 -3752 1371 M -399 0 V -718 589 M -13 -41 V -21 -29 V -43 -20 V -85 -28 V -169 -12 V -341 -4 V -680 -4 V -506 0 V -% End plot #4 -stroke -1.000 UL -LTb -686 2855 M -686 448 L -1890 0 V -0 2407 R --1890 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-right.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-right.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,948 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-right.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:32:06 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-right.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:32:06 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 922 M -63 0 V -stroke -602 922 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] -] -46.7 MRshow -1.000 UL -LTb -686 1405 M -63 0 V -stroke -602 1405 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] -] -46.7 MRshow -1.000 UL -LTb -686 1888 M -63 0 V -stroke -602 1888 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] -] -46.7 MRshow -1.000 UL -LTb -686 2372 M -63 0 V -stroke -602 2372 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] -] -46.7 MRshow -1.000 UL -LTb -686 2855 M -63 0 V -stroke -602 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] -] -46.7 MRshow -1.000 UL -LTb -686 448 M -0 63 V -stroke -686 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1109 448 M -0 63 V -stroke -1109 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1531 448 M -0 63 V -stroke -1531 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1954 448 M -0 63 V -stroke -1954 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2377 448 M -0 63 V -stroke -2377 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2799 448 M -0 63 V -stroke -2799 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3222 448 M -0 63 V -stroke -3222 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3644 448 M -0 63 V -stroke -3644 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -stroke -LCb setrgbcolor -112 1651 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 -2376 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -LCb setrgbcolor -3532 2882 M -[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] -] -46.7 MCshow -LTb -1.000 UL -LTb -2787 2252 N -0 700 V -1491 0 V -0 -700 V --1491 0 V -Z stroke -2787 2812 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT5 -LC7 setrgbcolor -LCb setrgbcolor -3711 2742 M -[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] -] -46.7 MRshow -LT5 -LC7 setrgbcolor -3795 2742 M -399 0 V -1735 2855 M -662 -919 V -4067 1238 L -% End plot #1 -% Begin plot #2 -stroke -LT6 -LCb setrgbcolor -3711 2602 M -[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] -] -46.7 MRshow -LT6 -3795 2602 M -399 0 V -1748 2855 M -2555 1723 L -4067 1065 L -% End plot #2 -% Begin plot #3 -stroke -LT7 -LC1 setrgbcolor -LCb setrgbcolor -3711 2462 M -[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] -] -46.7 MRshow -LT7 -LC1 setrgbcolor -3795 2462 M -399 0 V -1420 2855 M -170 -542 V -784 -867 V -3986 870 L -% End plot #3 -% Begin plot #4 -stroke -LT8 -LCb setrgbcolor -3711 2322 M -[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] -] -46.7 MRshow -LT8 -3795 2322 M -399 0 V -1802 2855 M -572 -574 V -4007 1207 L -% End plot #4 -stroke -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -1.000 UP -686 922 M -63 0 V -stroke -602 922 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] -] -46.7 MRshow -1.000 UL -LTb -686 1405 M -63 0 V -stroke -602 1405 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] -] -46.7 MRshow -1.000 UL -LTb -686 1888 M -63 0 V -stroke -602 1888 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] -] -46.7 MRshow -1.000 UL -LTb -686 2372 M -63 0 V -stroke -602 2372 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] -] -46.7 MRshow -1.000 UL -LTb -686 2855 M -63 0 V -stroke -602 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] -] -46.7 MRshow -1.000 UL -LTb -686 448 M -0 63 V -stroke -686 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1109 448 M -0 63 V -stroke -1109 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1531 448 M -0 63 V -stroke -1531 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1954 448 M -0 63 V -stroke -1954 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2377 448 M -0 63 V -stroke -2377 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2799 448 M -0 63 V -stroke -2799 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3222 448 M -0 63 V -stroke -3222 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3644 448 M -0 63 V -stroke -3644 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -stroke -LCb setrgbcolor -112 1651 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 -2376 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -LCb setrgbcolor -3532 2108 M -[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] -] -46.7 MCshow -LTb -1.000 UL -LTb -2787 1478 N -0 700 V -1491 0 V -0 -700 V --1491 0 V -Z stroke -2787 2038 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT0 -LCb setrgbcolor -3711 1968 M -[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] -] -46.7 MRshow -LT0 -3795 1968 M -399 0 V -743 626 M -22 -61 V -39 -36 V -75 -37 V -154 -17 V -303 -13 V -609 -7 V -1218 -2 V -904 -1 V -% End plot #1 -% Begin plot #2 -stroke -LT2 -LCb setrgbcolor -3711 1828 M -[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] -] -46.7 MRshow -LT2 -3795 1828 M -399 0 V -743 575 M -24 4 V -36 -82 V -76 -20 V -153 -6 V -303 -12 V -609 -4 V -1217 -4 V -906 -1 V -% End plot #2 -% Begin plot #3 -stroke -LT3 -LCb setrgbcolor -3711 1688 M -[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] -] -46.7 MRshow -LT3 -3795 1688 M -399 0 V -742 581 M -24 -38 V -39 -9 V -76 -41 V -151 -19 V -304 -11 V -610 -7 V -1216 -5 V -905 -1 V -% End plot #3 -% Begin plot #4 -stroke -LT4 -LCb setrgbcolor -3711 1548 M -[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] -] -46.7 MRshow -LT4 -3795 1548 M -399 0 V -743 589 M -23 -41 V -38 -29 V -77 -20 V -151 -28 V -303 -12 V -610 -4 V -1217 -4 V -905 0 V -% End plot #4 -stroke -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_vthread_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_vthread_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,844 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: xoanon_vthread_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:23:52 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (xoanon_vthread_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:23:52 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 -stroke -434 448 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] -] -46.7 MRshow -1.000 UL -LTb -518 792 M -63 0 V -stroke -434 792 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] -] -46.7 MRshow -1.000 UL -LTb -518 1136 M -63 0 V -stroke -434 1136 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] -] -46.7 MRshow -1.000 UL -LTb -518 1480 M -63 0 V -stroke -434 1480 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] -] -46.7 MRshow -1.000 UL -LTb -518 1823 M -63 0 V -stroke -434 1823 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] -] -46.7 MRshow -1.000 UL -LTb -518 2167 M -63 0 V -stroke -434 2167 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] -] -46.7 MRshow -1.000 UL -LTb -518 2511 M -63 0 V -stroke -434 2511 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] -] -46.7 MRshow -1.000 UL -LTb -518 2855 M -63 0 V -stroke -434 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] -] -46.7 MRshow -1.000 UL -LTb -518 448 M -0 63 V -stroke -518 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -962 448 M -0 63 V -stroke -962 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1405 448 M -0 63 V -stroke -1405 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1849 448 M -0 63 V -stroke -1849 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2293 448 M -0 63 V -stroke -2293 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2736 448 M -0 63 V -stroke -2736 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3180 448 M -0 63 V -stroke -3180 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3623 448 M -0 63 V -stroke -3623 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -518 2855 M -518 448 L -3549 0 V -0 2407 R --3549 0 R -stroke -LCb setrgbcolor -112 1651 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 -2292 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -1.000 UL -LTb -2492 2232 N -0 560 V -1491 0 V -0 -560 V --1491 0 V -Z stroke -2492 2792 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT1 -LCa setrgbcolor -518 792 M -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -% End plot #1 -% Begin plot #2 -stroke -LT1 -LCb setrgbcolor -3416 2722 M -[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] -] -46.7 MRshow -LT1 -3500 2722 M -399 0 V -670 2855 M -51 -852 V -882 1405 L -1200 930 L -1839 705 L -3118 625 L -949 -39 V -% End plot #2 -% Begin plot #3 -stroke -LT2 -LCb setrgbcolor -3416 2582 M -[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] -] -46.7 MRshow -LT2 -3500 2582 M -399 0 V -632 2855 M -8 -651 V -80 -714 V -881 1280 L -1200 856 L -1839 682 L -3116 544 L -951 -19 V -% End plot #3 -% Begin plot #4 -stroke -LT3 -LCb setrgbcolor -3416 2442 M -[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] -] -46.7 MRshow -LT3 -3500 2442 M -399 0 V -678 2855 M -45 -823 V -882 1374 L -1200 997 L -1840 716 L -3117 544 L -950 -16 V -% End plot #4 -% Begin plot #5 -stroke -LT4 -LCb setrgbcolor -3416 2302 M -[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] -] -46.7 MRshow -LT4 -3500 2302 M -399 0 V -656 2855 M -67 -607 V -881 1260 L -1200 822 L -1840 687 L -3117 564 L -950 -21 V -% End plot #5 -stroke -1.000 UL -LTb -518 2855 M -518 448 L -3549 0 V -0 2407 R --3549 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_vthread_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/not_used/xoanon_vthread_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,821 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: xoanon_vthread_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:25:10 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (xoanon_vthread_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:25:10 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 -stroke -434 448 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] -] -46.7 MRshow -1.000 UL -LTb -518 792 M -63 0 V -stroke -434 792 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] -] -46.7 MRshow -1.000 UL -LTb -518 1136 M -63 0 V -stroke -434 1136 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] -] -46.7 MRshow -1.000 UL -LTb -518 1480 M -63 0 V -stroke -434 1480 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] -] -46.7 MRshow -1.000 UL -LTb -518 1823 M -63 0 V -stroke -434 1823 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] -] -46.7 MRshow -1.000 UL -LTb -518 2167 M -63 0 V -stroke -434 2167 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] -] -46.7 MRshow -1.000 UL -LTb -518 2511 M -63 0 V -stroke -434 2511 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] -] -46.7 MRshow -1.000 UL -LTb -518 2855 M -63 0 V -stroke -434 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] -] -46.7 MRshow -1.000 UL -LTb -518 448 M -0 63 V -stroke -518 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -962 448 M -0 63 V -stroke -962 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1405 448 M -0 63 V -stroke -1405 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1849 448 M -0 63 V -stroke -1849 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2293 448 M -0 63 V -stroke -2293 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2736 448 M -0 63 V -stroke -2736 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3180 448 M -0 63 V -stroke -3180 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3623 448 M -0 63 V -stroke -3623 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -518 2855 M -518 448 L -3549 0 V -0 2407 R --3549 0 R -stroke -LCb setrgbcolor -112 1651 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 -2292 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -1.000 UL -LTb -2492 2372 N -0 420 V -1491 0 V -0 -420 V --1491 0 V -Z stroke -2492 2792 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT1 -LCa setrgbcolor -518 792 M -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -36 0 V -36 0 V -35 0 V -36 0 V -36 0 V -36 0 V -% End plot #1 -% Begin plot #2 -stroke -LT1 -LCb setrgbcolor -3416 2722 M -[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] -] -46.7 MRshow -LT1 -3500 2722 M -399 0 V -1143 2855 M -119 -356 V -1884 1393 L -3173 986 L -4067 875 L -% End plot #2 -% Begin plot #3 -stroke -LT2 -LCb setrgbcolor -3416 2582 M -[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] -] -46.7 MRshow -LT2 -3500 2582 M -399 0 V -938 2855 M -11 -154 V -298 -610 V -661 -716 V -3205 912 L -862 -78 V -% End plot #3 -% Begin plot #4 -stroke -LT3 -LCb setrgbcolor -3416 2442 M -[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] -] -46.7 MRshow -LT3 -3500 2442 M -399 0 V -933 2855 M -7 -106 V -316 -533 V -639 -908 V -3183 912 L -884 -75 V -% End plot #4 -stroke -1.000 UL -LTb -518 2855 M -518 448 L -3549 0 V -0 2407 R --3549 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/vms_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/vms_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1319 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: vms_pthreads_vthread_8_32_128_512thds__o30000__perfCtrs.meas.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:20:37 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (vms_pthreads_vthread_8_32_128_512thds__o30000__perfCtrs.meas.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (msach) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Thu Jan 26 18:20:37 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 -602 448 M -63 0 V -stroke -518 448 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] -] -46.7 MRshow -1.000 UL -LTb -602 715 M -63 0 V -stroke -518 715 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] -] -46.7 MRshow -1.000 UL -LTb -602 983 M -63 0 V -stroke -518 983 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] -] -46.7 MRshow -1.000 UL -LTb -602 1250 M -63 0 V -stroke -518 1250 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] -] -46.7 MRshow -1.000 UL -LTb -602 1518 M -63 0 V -stroke -518 1518 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] -] -46.7 MRshow -1.000 UL -LTb -602 1785 M -63 0 V -stroke -518 1785 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] -] -46.7 MRshow -1.000 UL -LTb -602 2053 M -63 0 V -stroke -518 2053 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] -] -46.7 MRshow -1.000 UL -LTb -602 2320 M -63 0 V -stroke -518 2320 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] -] -46.7 MRshow -1.000 UL -LTb -602 2588 M -63 0 V -stroke -518 2588 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 9)] -] -46.7 MRshow -1.000 UL -LTb -602 2855 M -63 0 V -stroke -518 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] -] -46.7 MRshow -1.000 UL -LTb -602 448 M -0 63 V -stroke -602 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1035 448 M -0 63 V -stroke -1035 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1468 448 M -0 63 V -stroke -1468 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1901 448 M -0 63 V -stroke -1901 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2335 448 M -0 63 V -stroke -2335 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2768 448 M -0 63 V -stroke -2768 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3201 448 M -0 63 V -stroke -3201 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3634 448 M -0 63 V -stroke -3634 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -602 2855 M -602 448 L -3465 0 V -0 2407 R --3465 0 R -stroke -LCb setrgbcolor -112 1651 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 -2334 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -% Begin plot #1 -3.000 UL -LT1 -LCa setrgbcolor -602 715 M -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -35 0 V -% End plot #1 -stroke -1.000 UL -LTb -602 2855 M -602 448 L -3465 0 V -0 2407 R --3465 0 R -1.000 UP -602 448 M -63 0 V -stroke -518 448 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] -] -46.7 MRshow -1.000 UL -LTb -602 715 M -63 0 V -stroke -518 715 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] -] -46.7 MRshow -1.000 UL -LTb -602 983 M -63 0 V -stroke -518 983 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] -] -46.7 MRshow -1.000 UL -LTb -602 1250 M -63 0 V -stroke -518 1250 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] -] -46.7 MRshow -1.000 UL -LTb -602 1518 M -63 0 V -stroke -518 1518 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] -] -46.7 MRshow -1.000 UL -LTb -602 1785 M -63 0 V -stroke -518 1785 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] -] -46.7 MRshow -1.000 UL -LTb -602 2053 M -63 0 V -stroke -518 2053 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] -] -46.7 MRshow -1.000 UL -LTb -602 2320 M -63 0 V -stroke -518 2320 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] -] -46.7 MRshow -1.000 UL -LTb -602 2588 M -63 0 V -stroke -518 2588 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 9)] -] -46.7 MRshow -1.000 UL -LTb -602 2855 M -63 0 V -stroke -518 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] -] -46.7 MRshow -1.000 UL -LTb -602 448 M -0 63 V -stroke -602 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1035 448 M -0 63 V -stroke -1035 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1468 448 M -0 63 V -stroke -1468 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1901 448 M -0 63 V -stroke -1901 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2335 448 M -0 63 V -stroke -2335 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2768 448 M -0 63 V -stroke -2768 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3201 448 M -0 63 V -stroke -3201 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3634 448 M -0 63 V -stroke -3634 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -602 2855 M -602 448 L -3465 0 V -0 2407 R --3465 0 R -stroke -LCb setrgbcolor -112 1651 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 -2334 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -LCb setrgbcolor -3538 2919 M -[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] -] -46.7 MCshow -LTb -1.000 UL -LTb -2793 2289 N -0 700 V -1491 0 V -0 -700 V --1491 0 V -Z stroke -2793 2849 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT5 -LC7 setrgbcolor -LCb setrgbcolor -3717 2779 M -[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] -] -46.7 MRshow -LT5 -LC7 setrgbcolor -3801 2779 M -399 0 V -742 2855 M -2 -67 V -851 1788 L -206 -591 V -1473 836 L -2306 644 L -3967 545 L -% End plot #1 -% Begin plot #2 -stroke -LT6 -LCb setrgbcolor -3717 2639 M -[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] -] -46.7 MRshow -LT6 -3801 2639 M -399 0 V -946 2855 M -112 -798 V -417 -761 V -2304 901 L -3971 681 L -% End plot #2 -% Begin plot #3 -stroke -LT7 -LC1 setrgbcolor -LCb setrgbcolor -3717 2499 M -[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] -] -46.7 MRshow -LT7 -LC1 setrgbcolor -3801 2499 M -399 0 V -1813 2855 M -496 -872 V -3972 1224 L -% End plot #3 -% Begin plot #4 -stroke -LT8 -LCb setrgbcolor -3717 2359 M -[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] -] -46.7 MRshow -LT8 -3801 2359 M -399 0 V -% End plot #4 -stroke -1.000 UL -LTb -602 2855 M -602 448 L -3465 0 V -0 2407 R --3465 0 R -1.000 UP -602 448 M -63 0 V -stroke -518 448 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] -] -46.7 MRshow -1.000 UL -LTb -602 715 M -63 0 V -stroke -518 715 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] -] -46.7 MRshow -1.000 UL -LTb -602 983 M -63 0 V -stroke -518 983 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] -] -46.7 MRshow -1.000 UL -LTb -602 1250 M -63 0 V -stroke -518 1250 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] -] -46.7 MRshow -1.000 UL -LTb -602 1518 M -63 0 V -stroke -518 1518 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] -] -46.7 MRshow -1.000 UL -LTb -602 1785 M -63 0 V -stroke -518 1785 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6)] -] -46.7 MRshow -1.000 UL -LTb -602 2053 M -63 0 V -stroke -518 2053 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7)] -] -46.7 MRshow -1.000 UL -LTb -602 2320 M -63 0 V -stroke -518 2320 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8)] -] -46.7 MRshow -1.000 UL -LTb -602 2588 M -63 0 V -stroke -518 2588 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 9)] -] -46.7 MRshow -1.000 UL -LTb -602 2855 M -63 0 V -stroke -518 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 10)] -] -46.7 MRshow -1.000 UL -LTb -602 448 M -0 63 V -stroke -602 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1035 448 M -0 63 V -stroke -1035 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1468 448 M -0 63 V -stroke -1468 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1901 448 M -0 63 V -stroke -1901 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2335 448 M -0 63 V -stroke -2335 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2768 448 M -0 63 V -stroke -2768 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3201 448 M -0 63 V -stroke -3201 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3634 448 M -0 63 V -stroke -3634 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -602 2855 M -602 448 L -3465 0 V -0 2407 R --3465 0 R -stroke -LCb setrgbcolor -112 1651 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 -2334 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -LCb setrgbcolor -2022 2919 M -[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] -] -46.7 MCshow -LTb -1.000 UL -LTb -1277 2289 N -0 700 V -1491 0 V -0 -700 V --1491 0 V -Z stroke -1277 2849 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT0 -LCb setrgbcolor -2201 2779 M -[ [(Helvetica) 140.0 0.0 true true 0 (8 Threads)] -] -46.7 MRshow -LT0 -2285 2779 M -399 0 V -654 2182 M -16 -334 V -24 -434 V -54 -354 V -852 815 L -1060 648 L -1474 537 L -832 -41 V -3969 471 L -% End plot #1 -% Begin plot #2 -stroke -LT2 -LCb setrgbcolor -2201 2639 M -[ [(Helvetica) 140.0 0.0 true true 0 (32 Threads)] -] -46.7 MRshow -LT2 -2285 2639 M -399 0 V -654 1786 M -16 -339 V -24 -169 V -748 917 L -852 723 L -1059 606 L -416 -79 V -832 -43 V -3969 467 L -% End plot #2 -% Begin plot #3 -stroke -LT3 -LCb setrgbcolor -2201 2499 M -[ [(Helvetica) 140.0 0.0 true true 0 (128 Threads)] -] -46.7 MRshow -LT3 -2285 2499 M -399 0 V -654 1837 M -16 -296 V -26 -324 V -748 970 L -851 740 L -1059 610 L -416 -81 V -832 -39 V -3970 466 L -% End plot #3 -% Begin plot #4 -stroke -LT4 -LCb setrgbcolor -2201 2359 M -[ [(Helvetica) 140.0 0.0 true true 0 (512 Threads)] -] -46.7 MRshow -LT4 -2285 2359 M -399 0 V -654 1958 M -14 -347 V -26 -349 V -748 965 L -850 751 L -1058 612 L -416 -83 V -833 -41 V -3970 467 L -% End plot #4 -stroke -1.000 UL -LTb -602 2855 M -602 448 L -3465 0 V -0 2407 R --3465 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/xoanon_pthread_vthread_40core_80_160_320_640thds__o30000__perfCtrs.eps --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/figures/plots_exec_vs_task_size/xoanon_pthread_vthread_40core_80_160_320_640thds__o30000__perfCtrs.eps Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,948 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Thu Jan 26 18:27:40 2012 -%%DocumentFonts: (atend) -%%BoundingBox: 251 50 554 482 -%%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 (xoanon_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 (Thu Jan 26 18:27:40 2012) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 251 50 moveto 554 50 lineto 554 482 lineto 251 482 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 922 M -63 0 V -stroke -602 922 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] -] -46.7 MRshow -1.000 UL -LTb -686 1405 M -63 0 V -stroke -602 1405 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] -] -46.7 MRshow -1.000 UL -LTb -686 1888 M -63 0 V -stroke -602 1888 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] -] -46.7 MRshow -1.000 UL -LTb -686 2372 M -63 0 V -stroke -602 2372 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] -] -46.7 MRshow -1.000 UL -LTb -686 2855 M -63 0 V -stroke -602 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] -] -46.7 MRshow -1.000 UL -LTb -686 448 M -0 63 V -stroke -686 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1109 448 M -0 63 V -stroke -1109 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1531 448 M -0 63 V -stroke -1531 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1954 448 M -0 63 V -stroke -1954 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2377 448 M -0 63 V -stroke -2377 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2799 448 M -0 63 V -stroke -2799 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3222 448 M -0 63 V -stroke -3222 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3644 448 M -0 63 V -stroke -3644 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -stroke -LCb setrgbcolor -112 1651 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 -2376 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -LCb setrgbcolor -3532 2882 M -[ [(Helvetica) 140.0 0.0 true true 0 (pthreads)] -] -46.7 MCshow -LTb -1.000 UL -LTb -2787 2252 N -0 700 V -1491 0 V -0 -700 V --1491 0 V -Z stroke -2787 2812 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT5 -LC7 setrgbcolor -LCb setrgbcolor -3711 2742 M -[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] -] -46.7 MRshow -LT5 -LC7 setrgbcolor -3795 2742 M -399 0 V -1735 2855 M -662 -919 V -4067 1238 L -% End plot #1 -% Begin plot #2 -stroke -LT6 -LCb setrgbcolor -3711 2602 M -[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] -] -46.7 MRshow -LT6 -3795 2602 M -399 0 V -1748 2855 M -2555 1723 L -4067 1065 L -% End plot #2 -% Begin plot #3 -stroke -LT7 -LC1 setrgbcolor -LCb setrgbcolor -3711 2462 M -[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] -] -46.7 MRshow -LT7 -LC1 setrgbcolor -3795 2462 M -399 0 V -1420 2855 M -170 -542 V -784 -867 V -3986 870 L -% End plot #3 -% Begin plot #4 -stroke -LT8 -LCb setrgbcolor -3711 2322 M -[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] -] -46.7 MRshow -LT8 -3795 2322 M -399 0 V -1802 2855 M -572 -574 V -4007 1207 L -% End plot #4 -stroke -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -1.000 UP -686 922 M -63 0 V -stroke -602 922 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 50)] -] -46.7 MRshow -1.000 UL -LTb -686 1405 M -63 0 V -stroke -602 1405 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 100)] -] -46.7 MRshow -1.000 UL -LTb -686 1888 M -63 0 V -stroke -602 1888 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 150)] -] -46.7 MRshow -1.000 UL -LTb -686 2372 M -63 0 V -stroke -602 2372 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 200)] -] -46.7 MRshow -1.000 UL -LTb -686 2855 M -63 0 V -stroke -602 2855 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 250)] -] -46.7 MRshow -1.000 UL -LTb -686 448 M -0 63 V -stroke -686 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1109 448 M -0 63 V -stroke -1109 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 1000)] -] -46.7 MCshow -1.000 UL -LTb -1531 448 M -0 63 V -stroke -1531 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 2000)] -] -46.7 MCshow -1.000 UL -LTb -1954 448 M -0 63 V -stroke -1954 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 3000)] -] -46.7 MCshow -1.000 UL -LTb -2377 448 M -0 63 V -stroke -2377 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 4000)] -] -46.7 MCshow -1.000 UL -LTb -2799 448 M -0 63 V -stroke -2799 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 5000)] -] -46.7 MCshow -1.000 UL -LTb -3222 448 M -0 63 V -stroke -3222 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 6000)] -] -46.7 MCshow -1.000 UL -LTb -3644 448 M -0 63 V -stroke -3644 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 7000)] -] -46.7 MCshow -1.000 UL -LTb -4067 448 M -0 63 V -stroke -4067 308 M -[ [(Helvetica) 140.0 0.0 true true 0 ( 8000)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -stroke -LCb setrgbcolor -112 1651 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 -2376 98 M -[ [(Helvetica) 140.0 0.0 true true 0 (Cycles in one Task)] -] -46.7 MCshow -LTb -1.000 UP -1.000 UL -LTb -LCb setrgbcolor -2011 2882 M -[ [(Helvetica) 140.0 0.0 true true 0 (Vthread)] -] -46.7 MCshow -LTb -1.000 UL -LTb -1266 2252 N -0 700 V -1491 0 V -0 -700 V --1491 0 V -Z stroke -1266 2812 M -1491 0 V -% Begin plot #1 -stroke -4.000 UL -LT0 -LCb setrgbcolor -2190 2742 M -[ [(Helvetica) 140.0 0.0 true true 0 (80 Threads)] -] -46.7 MRshow -LT0 -2274 2742 M -399 0 V -743 626 M -22 -61 V -39 -36 V -75 -37 V -154 -17 V -303 -13 V -609 -7 V -1218 -2 V -904 -1 V -% End plot #1 -% Begin plot #2 -stroke -LT2 -LCb setrgbcolor -2190 2602 M -[ [(Helvetica) 140.0 0.0 true true 0 (160 Threads)] -] -46.7 MRshow -LT2 -2274 2602 M -399 0 V -743 575 M -24 4 V -36 -82 V -76 -20 V -153 -6 V -303 -12 V -609 -4 V -1217 -4 V -906 -1 V -% End plot #2 -% Begin plot #3 -stroke -LT3 -LCb setrgbcolor -2190 2462 M -[ [(Helvetica) 140.0 0.0 true true 0 (320 Threads)] -] -46.7 MRshow -LT3 -2274 2462 M -399 0 V -742 581 M -24 -38 V -39 -9 V -76 -41 V -151 -19 V -304 -11 V -610 -7 V -1216 -5 V -905 -1 V -% End plot #3 -% Begin plot #4 -stroke -LT4 -LCb setrgbcolor -2190 2322 M -[ [(Helvetica) 140.0 0.0 true true 0 (640 Threads)] -] -46.7 MRshow -LT4 -2274 2322 M -399 0 V -743 589 M -23 -41 V -38 -29 V -77 -20 V -151 -28 V -303 -12 V -610 -4 V -1217 -4 V -905 0 V -% End plot #4 -stroke -1.000 UL -LTb -686 2855 M -686 448 L -3381 0 V -0 2407 R --3381 0 R -1.000 UP -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Helvetica -%%Pages: 1 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/helpers/07_F_26__The_Questions__blank.txt --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/helpers/07_F_26__The_Questions__blank.txt Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ - - -1) What are the problems the authors are trying to solve? - When done, for each problem, how does one decide the value of a proposed solution? Suggest a priority domain for deciding whether to use a proposed solution. - -The problem is - -A priority domain for deciding the value of some proposed solution to this problem is - -The value of this solution is determined by - - - -2) What "things" does the proposed solution to this problem enable? - What benefit to reader is bought by each "thing", & what related to the "thing", gives the benefit. - What details are unique about the proposed solution that enables the thing that gives benefit? - How does that uniqueness enable or achieve the thing? - -It enables - -The benefit to me is - -Unique details of solution that enable the thing gives benefit are - -The uniqueness enables the thing that gives benefit by - - - -3) What are the fundamentals underlying the problem? - What makes this problem hard? - What are the basic elements and forces of the problem that the proposed solution has to be in terms of, avoid, use to advantage? ie: gravity, invariant relationships, market forces, human capacity (avg level of real programmers, hubris, legacy is held onto, barriers to adoption), and so on -How does the proposed solution work within/relate to/address/take advantage of/deal with the fundamentals underlying the problem? - -The fundamentals are - -The hard part is - -The basic elements are - -The proposed solution - - - -4) What are other approaches and conventional wisdom to solving these problems? - What benefits enabled by the proposed solution are not enabled by other work, and vice versa? - How does each approach address something the others miss? - Try to suggest groupings or categories for the various approaches. - Try to suggest ways multiple approaches may be combined to get more pros with fewer cons. - -Other approaches are - -A benefit enabled by the proposed that is not enabled by other work is - -Categories: - -Combining: - - - -5) What is/are the unique main "things" that enable what the proposed solution does? - Sketch the details of each of these "things". - Did you detect any drawbacks, not stated in the paper, from the details? - Did you see any really cool techniques? - -Unique main "things" are - -Drawbacks from details: - -Idea of - - - -6) What aspects of the implementation/proof/design need results given in order to convince you that the proposed solution delivers the stated benefits? - -They have to show - - - -7) What results did they show? - Did they show results in all the needed aspects (which were left out)? - Were the testing method and results shown good enough to convince you? - Did you detect any cons, not stated in the paper, from the results? - -They showed - -Con.. - - - -8) How do you think this work may provide some value to you in your future research? - -The work my provide value for me - - - -3 or more comments/questions: (pick out the most important things to you from the discussion you gave above, or add things that were not brought out by the above questions. I am asking for these as things to bring up during class). - -1) - - \ No newline at end of file diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/helpers/bib_for_papers.bib --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/helpers/bib_for_papers.bib Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1257 +0,0 @@ - - - -"" -@Article{, - author = {}, - title = {}, - journal = {}, - volume = {}, - number = {}, - year = {}, - pages = {} -} - - - -"" -@Book{, - author = {}, - title = {}, - publisher = {}, - year = {}, - pages = {} -} - - - -"" -@misc{, - author = {}, - title = {}, - url = {} -} - - -"Lamport paper with clock sync" -@article{Lamport78, - author = {Lamport, Leslie}, - title = {Time, clocks, and the ordering of events in a distributed system}, - journal = {Commun. ACM}, - volume = {21}, - issue = {7}, - year = {1978}, - pages = {558--565}, - } - -"Lamport paper with mutex lock algorithm" -@article{Lamport87, - author = {Lamport, Leslie}, - title = {A fast mutual exclusion algorithm}, - journal = {ACM Trans. Comput. Syst.}, - volume = {5}, - issue = {1}, - year = {1987}, - pages = {1--11} -} - -"Dijkstra semaphore definition paper" -@inproceedings{Dijkstra67, - author = {Dijkstra, Edsger W.}, - title = {The structure of the "{THE}"-multiprogramming system}, - booktitle = {Proceedings of the first ACM symposium on Operating System Principles}, - series = {SOSP '67}, - year = {1967}, - pages = {10.1--10.6} - } - -"Original coroutine paper" -@article{Conway63, - author = {Conway, Melvin E.}, - title = {Design of a separable transition-diagram compiler}, - journal = {Commun. ACM}, - volume = {6}, - issue = {7}, - year = {1963}, - pages = {396--408} -} - -"Component model book Leavens G, Sitaraman M(eds.). Foundations of Component-Based Systems. Cambridge University Press: Cambridge, 2000" -@Book{ComponentModel00, - author = {G Leavens and M Sitaraman (eds)}, - title = {Foundations of Component-Based Systems}, - publisher = {Cambridge University Press}, - year = {2000} -} - - -"Hewitt Actors Ref on ArXiv" -@misc{Hewitt10, - author = {Carl Hewitt}, - title = {Actor Model of Computation}, - year = {2010}, - note = {http://arxiv.org/abs/1008.1459} -} - -"Actors paper -- AGHA has a 1985 tech report looks like it introduces Actors as an execution model..?" -@article{Actors97, -author = {Agha,G. and Mason,I. and Smith,S. and Talcott,C.}, -title = {A foundation for actor computation}, -journal = {Journal of Functional Programming}, -volume = {7}, -number = {01}, -pages = {1-72}, -year = {1997}, -} - -"Scheduler Activations: M onto N thread technique" -@article{SchedActivations, - author = {Anderson, Thomas E. and Bershad, Brian N. and Lazowska, Edward D. and Levy, Henry M.}, - title = {Scheduler activations: effective kernel support for the user-level management of parallelism}, - journal = {ACM Trans. Comput. Syst.}, - volume = {10}, - issue = {1}, - month = {February}, - year = {1992}, - pages = {53--79} -} - -"BOM in Manticore project: functional language for scheduling and concurrency" -@inproceedings{BOMinManticore, - author = {Fluet, Matthew and Rainey, Mike and Reppy, John and Shaw, Adam and Xiao, Yingqi}, - title = {Manticore: a heterogeneous parallel language}, - booktitle = {Proceedings of the 2007 workshop on Declarative aspects of multicore programming}, - series = {DAMP '07}, - year = {2007}, - pages = {37--44}, - numpages = {8} -} - - -//===================================== -"Gain from Chaos tech report" -@techreport - {Halle92, - Author = {Halle, K.S. and Chua, Leon O. and Anishchenko, V.S. and Safonova, M.A.}, - Title = {Signal Amplification via Chaos: Experimental Evidence}, - Institution = {EECS Department, University of California, Berkeley}, - Year = {1992}, - URL = {http://www.eecs.berkeley.edu/Pubs/TechRpts/1992/2223.html}, - Number = {UCB/ERL M92/130} -} - - -Reprinted in: -Madan, R. N. (1993) Chua’s Circuit : A Paradigm for Chaos, World Scientific, Singapore. -"Signal Amplification via Chaos: Experimental Evidence" -K.S. Halle, Leon O. Chua, V.S. Anishchenko and M.A. Safonova -pgs 290-308 - - -"Spread Spectrum Communication Through Modulation of Chaos" -Halle K.S., Wu C.W., Itoh M., Chua L.O. Spread Spectrum Communication Through Modulation of Chaos. Int. J. of Bifur. and Chaos, (3):469–477. 1993. -cited by 232 - - -"Experimental Demonstration of Secure Communications Via Chaotic Synchronization" -Kocarev V, Halle K.S., Eckert K., Chua L.O., Parlitz V. Experimental Demonstration of Secure Communications Via Chaotic Synchronization. Int. J. Bifur. and Chaos, (2):709 713. 1992. - - -//========================================== - -"BLIS 2010 HotPar: Leveraging Semantics Attached to Function Calls to Isolate Applications from Hardware" -@inproceedings - {BLISInHotPar, - author = {Sean Halle and Albert Cohen}, - booktitle = {HOTPAR '10: USENIX Workshop on Hot Topics in Parallelism}, - month = {June}, - title = {Leveraging Semantics Attached to Function Calls to Isolate Applications from Hardware}, - year = {2010} - } - -"2011 HotPar: " -@inproceedings - {HotPar11, - author = {Sean Halle and Albert Cohen}, - booktitle = {HOTPAR '11: USENIX Workshop on Hot Topics in Parallelism}, - month = {May}, - title = {}, - year = {2011} - } - -"VMS in LCPC 2011" -@article{VMSLCPC, - author = {Sean Halle and Albert Cohen}, - title = {A Mutable Hardware Abstraction to Replace Threads}, - journal = {24th International Workshop on Languages and Compilers for Parallel Languages (LCPC11)}, - year = {2011} -} - - -"A Framework to Support Research on Portable High Performance Parallelism" -@misc{FrameworkTechRep, - Author = {Halle, Sean and Nadezhkin, Dmitry and Cohen, Albert}, - Note = {http://www.soe.ucsc.edu/share/technical-reports/2010/ucsc-soe-10-02.pdf}, - Title = {A Framework to Support Research on Portable High Performance Parallelism}, - Year = 2010 -} - -"DKU Pattern for Performance Portable Parallel Software" -@misc{DKUTechRep, - Author = {Halle, Sean and Cohen, Albert}, - Note = {http://www.soe.ucsc.edu/share/technical-reports/2009/ucsc-soe-09-06.pdf}, - Title = {DKU Pattern for Performance Portable Parallel Software}, - Year = 2009 -} - -"An Extensible Parallel Language" -@misc{EQNLangTechRep, - Author = {Halle, Sean}, - Note = {http://www.soe.ucsc.edu/share/technical-reports/2009/ucsc-soe-09-16.pdf}, - Title = {An Extensible Parallel Language}, - Year = 2009 -} - -"A Hardware-Independent Parallel Operating System Abstraction Layer" -@misc{CTOSTechRep, - Author = {Halle, Sean}, - Note = {http://www.soe.ucsc.edu/share/technical-reports/2009/ucsc-soe-09-15.pdf}, - Title = {A Hardware-Independent Parallel Operating System Abstraction LayerParallelism}, - Year = 2009 -} - -"Parallel Language Extensions for Side Effects" -@misc{SideEffectsTechRep, - Author = {Halle, Sean and Cohen, Albert}, - Note = {http://www.soe.ucsc.edu/share/technical-reports/2009/ucsc-soe-09-14.pdf}, - Title = {Parallel Language Extensions for Side Effects}, - Year = 2009 -} - - -"BaCTiL: Base CodeTime Language" -@misc{BaCTiLTechRep, - Author = {Halle, Sean}, - Note = {http://www.soe.ucsc.edu/share/technical-reports/2006/ucsc-crl-06-08.pdf}, - Title = {BaCTiL: Base CodeTime Language}, - Year = 2006 -} - - -"The Elements of the CodeTime Software Platform" -@misc{CTPlatformTechRep, - Author = {Halle, Sean}, - Note = {http://www.soe.ucsc.edu/share/technical-reports/2006/ucsc-crl-06-09.pdf}, - Title = {The Elements of the CodeTime Software Platform}, - Year = 2006 -} - - -"A Scalable and Efficient Peer-to-Peer Run-Time System for a Hardware Independent Software Platform" -@misc{CTRTTechRep, - Author = {Halle, Sean}, - Note = {http://www.soe.ucsc.edu/share/technical-reports/2006/ucsc-crl-06-10.pdf}, - Title = {A Scalable and Efficient Peer-to-Peer Run-Time System for a Hardware Independent Software Platform}, - Year = 2006 -} - - -"The Big-Step Operational Semantics of CodeTime Circuits" -@misc{FrameworkTechRep, - Author = {Halle, Sean}, - Note = {http://www.soe.ucsc.edu/share/technical-reports/2006/ucsc-crl-06-11.pdf}, - Title = {The Big-Step Operational Semantics of CodeTime Circuits}, - Year = 2006 -} - - -"A Mental Framework for use in Creating Hardware Independent Parallel Languages" -@misc{FrameworkTechRep, - Author = {Halle, Sean}, - Note = {http://www.soe.ucsc.edu/share/technical-reports/2006/ucsc-crl-06-12.pdf}, - Title = {A Mental Framework for use in Creating Hardware Independent Parallel Languages}, - Year = 2006 -} - - -"The Case for an Integrated Software Platform for HEC Illustrated Using the CodeTime Platform" -@misc{CIPTechRep, - Author = {Halle, Sean}, - Note = {http://www.soe.ucsc.edu/share/technical-reports/2005/ucsc-crl-05-05.pdf}, - Title = {The Case for an Integrated Software Platform for HEC Illustrated Using the CodeTime Platform}, - Year = 2005 -} - -//========================================== - - -"OMP Hompe page" -@misc{OMPHome, - Note = {http://www.openmediaplatform.eu/}, - Title = {{Open Media Platform} homepage}, -} - -"The OMP infrastructure site" -@misc{Halle2008, - Author = {Sean Halle and Albert Cohen}, - Note = {http://omp.musictwodotoh.com}, - Title = {{DKU} infrastructure server} -} - - - -"The DKU sourceforge site" -@misc{DKUSourceForge, - Author = {Sean Halle and Albert Cohen}, - Month = {November}, - Note = {http://dku.sourceforge.net}, - Title = {{DKU} website}, - Year = {2008} -} - - -"The BLIS sourceforge site" -@misc{BLISHome, - Author = {Sean Halle and Albert Cohen}, - Month = {November}, - Note = {http://blisplatform.sourceforge.net}, - Title = {{BLIS} website}, - Year = {2008} -} - - -"The VMS Home page" -@misc{VMSHome, - Author = {Sean Halle and Merten Sach and Ben Juurlink and Albert Cohen}, - Note = {http://virtualizedmasterslave.org}, - Title = {{VMS} Home Page}, - Year = {2010} -} - - -"The PStack Home page" -@misc{PStackHome, - Author = {Sean Halle}, - Note = {http://pstack.sourceforge.net}, - Title = {{PStack} Home Page}, - Year = {2012} -} - - -"Deblocking code in SVN" -@misc{DeblockingCode, - Note = {http://dku.svn.sourceforge.net/viewvc/dku/branches/DKU\_C\_\_Deblocking\_\_orig/}, - Title ={{DKU-ized Deblocking Filter} code} -} - - - -"Sample code on BLIS site" -@misc{SampleBLISCode, - Note = {http://dku.sourceforge.net/SampleCode.htm}, - Title ={{Sample BLIS Code}} -} - -"Framework Technical Report" -@misc{FrameworkTechRep, - Author = {Halle, Sean and Nadezhkin, Dmitry and Cohen, Albert}, - Note = {http://www.soe.ucsc.edu/share/technical-reports/2010/ucsc-soe-10-02.pdf}, - Title = {A Framework to Support Research on Portable High Performance Parallelism} -} - -"Map reduce" -@misc{MapReduceHome, - Author = {Google Corp.}, - Note = {http://labs.google.com/papers/mapreduce.html}, - Title = {{MapReduce} Home page}, -} - - -"TBB Thread Building Blocks" -@misc{TBBHome, - Author = {Intel Corp.}, - Note = {http://www.threadingbuildingblocks.org}, - Title = {{TBB} Home page}, -} - - -"HPF Wikipedia entry" -@misc{HPFWikipedia, - Author = {Wikipedia}, - Note = {http://en.wikipedia.org/wiki/High_Performance_Fortran}, - Title = {{HPF} wikipedia page}, -} - - -"OpenMP Home page" -@misc{OpenMPHome, - Author = {{OpenMP} organization}, - Note = {http://www.openmp.org}, - Title = {{OpenMP} Home page} -} - - - -"Open MPI Home page" -@misc{MPIHome, - Author = {open-mpi organization}, - Note = {http://www.open-mpi.org}, - Title = {{Open MPI} Home page} -} - -"OpenCL Home page" -@misc{OpenCLHome, - Author = {Kronos Group}, - Note = {http://www.khronos.org/opencl}, - Title = {{OpenCL} Home page} -} - - -"CILK Hompe page" -@misc{CILKHome, - Author = {Cilk group at MIT}, - Note = {http://supertech.csail.mit.edu/cilk/}, - Title = {{CILK} homepage}, -} - -@InProceedings{Fri98, - author = {M. Frigo and C. E. Leiserson and K. H. Randall}, - title = {The Implementation of the Cilk-5 Multithreaded Language}, - booktitle = {PLDI '98: Proceedings of the 1998 ACM SIGPLAN conference on Programming language design and implementation}, - pages = {212--223}, - year = 1998, - address = {Montreal, Quebec}, - month = jun -} - - -"Titanium Hompe page" -@misc{TitaniumHome, - Note = {http://titanium.cs.berkeley.edu}, - Title = {{Titanium} homepage} -} - - -"CnC in HotPar" -@inproceedings{CnCInHotPar, - author = {Knobe, Kathleen}, - booktitle = {HOTPAR '09: USENIX Workshop on Hot Topics in Parallelism}, - month = {March}, - title = {Ease of Use with Concurrent Collections {(CnC)}}, - year = {2009} -} - - -"CnC Hompe page" -@misc{CnCHome, - Author = {Intel Corp.}, - Note = {http://software.intel.com/en-us/articles/intel-concurrent-collections-for-cc/}, - Title = {{CnC} homepage}, -} - -"Spiral Home page" -@misc{SpiralHome, - Author = {Spiral Group at CMU}, - Note = {http://www.spiral.net}, - Title = {{Spiral} homepage}, -} - - -"Scala Hompe page" -@misc{ScalaHome, - Author = {Scala organization}, - Note = {http://www.scala-lang.org/}, - Title = {{Scala} homepage}, -} - - - - -"UPC Hompe page" -@misc{UPCHome, - Author = {UPC group at UC Berkeley}, - Note = {http://upc.lbl.gov/}, - Title = {{Unified Parallel C} homepage}, -} - - -"Suif Hompe page" -@misc{SuifHome, - Note = {http://suif.stanford.edu}, - Title = {{Suif} Parallelizing compiler homepage}, -} - - - -"SEJITS" -@article{SEJITS, - author = {B. Catanzaro and S. Kamil and Y. Lee and K. Asanovic and J. Demmel and K. Keutzer and J. Shalf and K. Yelick and A. Fox}, - title = {SEJITS: Getting Productivity AND Performance With Selective Embedded JIT Specialization}, - journal = {First Workshop on Programmable Models for Emerging Architecture at the 18th International Conference on Parallel Architectures and Compilation Techniques }, - year = {2009} -} - - -"Arnaldo 3D parallel on NXP chip" -@inproceedings{Arnaldo3D, - author = {Azevedo, Arnaldo and Meenderinck, Cor and Juurlink, Ben and Terechko, Andrei and Hoogerbrugge, Jan and Alvarez, Mauricio and Ramirez, Alex}, - title = {Parallel H.264 Decoding on an Embedded Multicore Processor}, - booktitle = {HiPEAC '09: Proceedings of the 4th International Conference on High Performance Embedded Architectures and Compilers}, - year = {2009}, - pages = {404--418} - } - - -"Narayanan's GPU scheduling tool" -@article{NarayananGPUSched, - author = {Narayanan Sundaram and Anand Raghunathan and Srimat T. Chakradhar}, - title = {A framework for efficient and scalable execution of domain-specific templates on GPUs}, - journal ={International Parallel and Distributed Processing Symposium {(IPDPS)}}, - year = {2009}, - pages = {1-12}, -} - -"Polyhedral for GPU from Ohio State" -@inproceedings{PolyForGPU, - author = {Baskaran, Muthu Manikandan and Bondhugula, Uday and Krishnamoorthy, Sriram and Ramanujam, J. and Rountev, Atanas and Sadayappan, P.}, - title = {A compiler framework for optimization of affine loop nests for gpgpus}, - booktitle = {ICS '08: Proceedings of the 22nd annual international conference on Supercomputing}, - year = {2008}, - pages = {225--234}, - } - -"Loulou's Polyhedral loop-nest optimization paper in PLDI 08" -@inproceedings{Loulou08, - author = {Pouchet, Louis-No\"{e}l and Bastoul, C\'{e}dric and Cohen, Albert and Cavazos, John}, - title = {Iterative optimization in the polyhedral model: part ii, multidimensional time}, - booktitle = {ACM SIGPLAN conference on Programming language design and implementation {(PLDI)} }, - year = {2008}, - pages = {90--100}, - } - - -"Merge in HotPar" -@inproceedings{MergeInHotPar, - author = {Michael D. Linderman and James Balfour and Teresa H. Meng and William J. Dally}, - booktitle = {HOTPAR '09: USENIX Workshop on Hot Topics in Parallelism}, - month = {March}, - title = {Embracing Heterogeneity \- Parallel Programming for Changing Hardware}, - year = {2009} -} - - -"Galois system for irregular problems" -@inproceedings{GaloisRef, - author = {Kulkarni, Milind and Pingali, Keshav and Walter, Bruce and Ramanarayanan, Ganesh and Bala, Kavita and Chew, L. Paul}, - title = {Optimistic parallelism requires abstractions}, - booktitle = {PLDI '07: Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation}, - year = {2007}, - pages = {211--222} -} - -"Cool compiler book that talks about balancing task size with machine characteristics.. the one Amit had" -@book{Allen2002, - author = {Kennedy, Ken and Allen, John R.}, - title = {Optimizing compilers for modern architectures: a dependence-based approach}, - year = {2002}, - publisher = {Morgan Kaufmann Publishers Inc.} - } - - -"Streaming languages and tools survery paper" -@MISC{Stephens95, - author = {R. Stephens}, - title = {A Survey Of Stream Processing}, - year = {1995} -} - - -"Capsule" -@INPROCEEDINGS{Palatin06, - author = {P Palatin and Y Lhuillier and O Temam}, - title = {CAPSULE: Hardware-assisted parallel execution of componentbased programs}, - booktitle = {In Proceedings of the 39th Annual International Symposium on Microarchitecture}, - year = {2006}, - pages = {247--258} -} - -"Sequioa" -@inproceedings{Sequioa06, - author = {Fatahalian,, Kayvon and Horn,, Daniel Reiter and Knight,, Timothy J. and Leem,, Larkhoon and Houston,, Mike and Park,, Ji Young and Erez,, Mattan and Ren,, Manman and Aiken,, Alex and Dally,, William J. and Hanrahan,, Pat}, - title = {Sequoia: programming the memory hierarchy}, - booktitle = {SC '06: Proceedings of the 2006 ACM/IEEE conference on Supercomputing}, - year = {2006}, - pages = {83} - } - - - - -"Cole meta skeletons book" -@Book{Cole89, - author = {M Cole}, - title = {Algorithmic skeletons: Structured management of parallel computation}, - publisher = {Pitman}, - year = {1989} -} - - -"Meta programming skeletons example" -@INPROCEEDINGS{Ginhac98, - author = {Dominique Ginhac and Jocelyn Serot and Jean Pierre Derutin}, - title = {Fast prototyping of image processing applications using functional skeletons on a MIMD-DM architecture}, - booktitle = {In IAPR Workshop on Machine Vision and Applications}, - year = {1998}, - pages = {468--471} -} - - -"Parallel Skeletons meta programming" -@inproceedings{Serot08MetaParallel, - author = {Serot, Jocelyn and Falcou, Joel}, - title = {Functional Meta-programming for Parallel Skeletons}, - booktitle = {ICCS '08: Proceedings of the 8th international conference on Computational Science, Part I}, - year = {2008}, - pages = {154--163} - } - - -"Random skeletons for parallel programming article with lots of citations" -@INPROCEEDINGS{Darlington93, - author = {J. Darlington and A. J. Field and P. G. Harrison and P. H. J. Kelly and D. W. N. Sharp and Q. Wu}, - title = {Parallel programming using skeleton functions}, - booktitle = {}, - year = {1993}, - pages = {146--160}, - publisher = {Springer-Verlag} -} - - -"View from Berkeley paper" -@article{Asanovic06BerkeleyView, - title={{The landscape of parallel computing research: A view from berkeley}}, - author={Asanovic, K. and Bodik, R. and Catanzaro, B.C. and Gebis, J.J. and Husbands, P. and Keutzer, K. and Patterson, D.A. and Plishker, W.L. and Shalf, J. and Williams, S.W. and others}, - journal={Electrical Engineering and Computer Sciences, University of California at Berkeley, Technical Report No. UCB/EECS-2006-183, December}, - volume={18}, - number={2006-183}, - pages={19}, - year={2006}, -} - - - - -"Berkeley Pattern Language" -@misc{BerkeleyPattLang, - Note = {http://parlab.eecs.berkeley.edu/wiki/patterns}, - Title = {{Berkeley Pattern Language}} -} - - -"Keutzer reccomended Parallel Prog Patterns book" -@book{Mattson04Patterns, - title={{Patterns for parallel programming}}, - author={Mattson, T. and Sanders, B. and Massingill, B.}, - year={2004}, - publisher={Addison-Wesley Professional} -} - - -"Skillicorn Parallel Languages Survery book" -@article{Skillicorn98, - title={{Models and languages for parallel computation}}, - author={Skillicorn, D.B. and Talia, D.}, - journal={ACM Computing Surveys (CSUR)}, - volume={30}, - number={2}, - pages={123--169}, - year={1998} -} - - - -"NESL language" -@conference{Blelloch93NESL, - title={{Implementation of a portable nested data-parallel language}}, - author={Blelloch, G.E. and Hardwick, J.C. and Chatterjee, S. and Sipelstein, J. and Zagha, M.}, - booktitle={Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming}, - pages={102--111}, - year={1993}, - organization={ACM New York, NY, USA} -} - - -"Sisal" -@article{McgrawSisal, - title={{SISAL: Streams and iteration in a single assignment language: Reference manual version 1.2}}, - author={McGraw, J. and Skedzielewski, SK and Allan, SJ and Oldehoeft, RR and Glauert, J. and Kirkham, C. and Noyce, B. and Thomas, R.}, - journal={Manual M-146, Rev}, - volume={1} -} - - -"Linda" -@article{Gelernter85Linda, - title={{Generative communication in Linda}}, - author={Gelernter, D.}, - journal={ACM Transactions on Programming Languages and Systems (TOPLAS)}, - volume={7}, - number={1}, - pages={80--112}, - year={1985} -} - - -"ZPL" -@article{Lin94ZPL, - title={{ZPL: An array sublanguage}}, - author={Lin, C. and Snyder, L.}, - journal={Lecture Notes in Computer Science}, - volume={768}, - pages={96--114}, - year={1994} -} - - - - -// Visual programming -@article - { baecker97, - author = {Ron Baecker and Chris DiGiano and Aaron Marcus}, - title = {Software visualization for debugging}, - journal = {Communications of the ACM}, - volume = {40}, - number = {4}, - year = {1997}, - issn = {0001-0782}, - pages = {44--54}, - publisher = {ACM Press} - } - - -// Visual programming -@article - { ball96, - author = {T. A. Ball and S. G. Eick}, - title = {Software Visualization in the Large}, - journal ={IEEE Computer}, - volume = {29}, - number = {4}, - year = {1996}, - month = {apr}, - pages = {33--43} - } - - -// Milner references this, Chemical Abstract Machine -@book - {berry89, - title={{The chemical abstract machine}}, - author={Berry, G. and Boudol, G.}, - year={1989}, - publisher={ACM Press} -} - - -// Cilk reference -@article - {blumofe95, - author = {Robert D. Blumofe and Christopher F. Joerg and Bradley C. Kuszmaul and Charles E. Leiserson and Keith H. Randall and Yuli Zhou}, - title = {Cilk: an efficient multithreaded runtime system}, - journal = {SIGPLAN Not.}, - volume = {30}, - number = {8}, - year = {1995}, - pages = {207--216} - } - - -// this has 1440 citations, so throwing it in.. -// The complexity of symbolic checking of program correctness -@article - {burch90, - title={{Symbolic model checking: 10^{20} states and beyond}}, - author={Burch, JR and Clarke, EM and McMillan, KL and Dill, DL and Hwang, LJ}, - journal={Logic in Computer Science, 1990. LICS'90, Proceedings}, - pages={428--439}, - year={1990} -} - -@article - {chamberlain98, -author = {B. Chamberlain and S. Choi and E. Lewis and C. Lin and L. Snyder and W. Weathersby}, -title = {ZPL's WYSIWYG Performance Model}, -journal = {hips}, -volume = {00}, -year = {1998}, -isbn = {0-8186-8412-7}, -pages = {50} -} - - - -// from http://libweb.princeton.edu/libraries/firestone/rbsc/aids/church/church1.html#1 -@article{church41, - author={A. Church}, - title={The Calculi of Lambda-Conversion}, - journal={Annals of Mathematics Studies}, - number={6}, - year={1941}, - publisher={Princeton University} -} - - -@misc - { CodeTimeSite, - author = {Sean Halle}, - key = {CodeTime}, - title = {Homepage for The CodeTime Parallel Software Platform}, - note = {{\ttfamily http://codetime.sourceforge.net}} - } - - - -@misc - { CodeTimePlatform, - author = {Sean Halle}, - key = {CodeTime}, - title = {The CodeTime Parallel Software Platform}, - note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTime\_Platform.pdf}} - } - - -@misc - { CodeTimeVS, - author = {Sean Halle}, - key = {CodeTime}, - title = {The Specification of the CodeTime Platform's Virtual Server}, - note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTime\_Virtual\_Server.pdf}} - } - - -@misc - { CodeTimeOS, - author = {Sean Halle}, - key = {CodeTime}, - title = {A Hardware Independent OS}, - note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTime\_OS.pdf}} - } - - -@misc - { CodeTimeSem, - author = {Sean Halle}, - key = {CodeTime}, - title = {The Big-Step Operational Semantics of the CodeTime Computational Model}, - note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTime\_Semantics.pdf}} - } - - -@misc - { CodeTimeTh, - author = {Sean Halle}, - key = {CodeTime}, - title = {A Mental Framework for Use in Creating Hardware-Independent Parallel Languages}, - note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTiime\_Theoretical\_Framework.pdf}} - } - - -@misc - { CodeTimeTh1, - author = {Sean Halle}, - key = {CodeTime}, - title = {The CodeTime Parallel Software Platform}, - note = {{\ttfamily http://codetime.sourceforge.net}} - } - - -@misc - { CodeTimeTh2, - author = {Sean Halle}, - key = {CodeTime}, - title = {The CodeTime Parallel Software Platform}, - note = {{\ttfamily http://codetime.sourceforge.net}} - } - - -@misc - { CodeTimeRT, - author = {Sean Halle}, - key = {CodeTime}, - title = {The CodeTime Parallel Software Platform}, - note = {{\ttfamily http://codetime.sourceforge.net}} - } - - -@misc - { CodeTimeWebSite - author = {Sean Halle}, - key = {CodeTime}, - title = {The CodeTime Parallel Software Platform}, - note = {{\ttfamily http://codetime.sourceforge.net}} - } - - -@misc - { CodeTimeBaCTiL, - author = {Sean Halle}, - key = {CodeTime}, - title = {The Base CodeTime Language}, - note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTime\_BaCTiL.pdf}} - } - -@misc - { CodeTimeCert, - author = {Sean Halle}, - key = {CodeTime}, - title = {The CodeTime Certification Strategy}, - note = {{\ttfamily http://codetime.sourceforge.net/content/CodeTime\_Certification.pdf}} - } - - -// Multiple inheritance: explains issues well and references LOOPS and CLOS -@inproceedings{ducournau94, - author = {R. Ducournau and M. Habib and M. Huchard and M. L. Mugnier}, - title = {Proposal for a monotonic multiple inheritance linearization}, - booktitle = {OOPSLA '94: Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications}, - year = {1994}, - pages = {164--175}, - publisher = {ACM Press} -} - - -// 252 Citations, shows equivalence of mu-calculus and (nondeterministic) tree automata, -// so cited as foundation a lot -@article{emerson91, - title={{Tree automata, mu-calculus and determinacy}}, - author={Emerson, EA and Jutla, CS}, - journal={Proceedings of the 32nd Symposium on Foundations of Computer Science}, - pages={368--377}, - year={1991} -} - - -// Introducs PRAM model, at same time, in same conference as -@article{fortune78, - title={{Parallelism in random access machines}}, - author={Fortune, S. and Wyllie, J.}, - journal={STOC '78: Proceedings of the tenth annual ACM symposium on Theory of computing}, - pages={114--118}, - year={1978}, - publisher={ACM Press New York, NY, USA} -} - - - -// Smalltalk reference -@book{goldberg83, - title={{Smalltalk-80: the language and its implementation}}, - author={Goldberg, A. and Robson, D.}, - year={1983}, - publisher={Addison-Wesley} -} - - -// also introduces PRAM model, apparently independently -@inproceedings{goldschlager78, - author = {Leslie M. Goldschlager}, - title = {A unified approach to models of synchronous parallel machines}, - booktitle = {STOC '78: Proceedings of the tenth annual ACM symposium on Theory of computing}, - year = {1978}, - pages = {89--94}, - location = {San Diego, California, United States}, - doi = {http://doi.acm.org/10.1145/800133.804336}, - publisher = {ACM Press}, -} - - -// Java spec -@book - { gosling96, - author = {J. Gosling and B. Joy and G. Steele and G. Bracha}, - title = {The Java Language Specification}, - publisher = {Addison-Wesley}, - year = {1996} - } - - -// Survey of prototyping parallel apps -@article{hasselbring00, - author = {Wilhelm Hasselbring}, - title = {Programming languages and systems for prototyping concurrent applications}, - journal = {ACM Comput. Surv.}, - volume = {32}, - number = {1}, - year = {2000}, - issn = {0360-0300}, - pages = {43--79}, - doi = {http://doi.acm.org/10.1145/349194.349199}, - publisher = {ACM Press}, - address = {New York, NY, USA}, - } - - -// Original CSP paper -@article{hoare78, - author={C. A. R. Hoare}, - title={Communicating Sequential Processes}, - journal={Communications of the ACM}, - year={1978}, - volume={21}, - number={8}, - pages={666-677} -} - - -// 8 citations.. probably from self.. want a paper that ties areas together.. -// This paper does a beautiful job.. -@article{huth, - title={{A Unifying Framework for Model Checking Labeled Kripke Structures, Modal Transition Systems, and Interval Transition Systems}}, - author={Huth, M.}, - journal={Proceedings of the 19th International Conference on the Foundations of Software Technology \& Theoretical Computer Science, Lecture Notes in Computer Science}, - pages={369--380}, - publisher={Springer-Verlag} -} - - -// Dataflow advances survey, includes large grain dataflow -@article - { johnston04, - author = {Wesley M. Johnston and J. R. Paul Hanna and Richard J. Millar}, - title = {Advances in dataflow programming languages}, - journal = {ACM Comput. Surv.}, - volume = {36}, - number = {1}, - year = {2004}, - issn = {0360-0300}, - pages = {1--34}, - doi = {http://doi.acm.org/10.1145/1013208.1013209}, - publisher = {ACM Press}, - address = {New York, NY, USA} - } - - -@book - { koelbel93, - author = {C. H. Koelbel and D. Loveman and R. Schreiber and G. Steele Jr}, - title = {High Performance Fortran Handbook}, - year = {1993}, - publisher = {MIT Press} - } - - -// mu calculus paper with 430 citations -@article{kozen83, - title={{Results on the Propositional mu-Calculus}}, - author={Kozen, D.}, - journal={TCS}, - volume={27}, - pages={333--354}, - year={1983} -} - - -// original kripke structure paper -@article{kripke63, - title={{Semantical analysis of modal logic}}, - author={Kripke, S.}, - journal={Zeitschrift fur Mathematische Logik und Grundlagen der Mathematik}, - volume={9}, - pages={67--96}, - year={1963} -} - - -@book - { mcGraw85, - author = {J McGraw and S. Skedzielewski and S. Allan and R Odefoeft}, - title = {SISAL: Streams and Iteration in a Single-Assignment Language: Reference Manual Version 1.2}, - note = {Manual M-146 Rev. 1}, - publisher = {Lawrence Livermore National Laboratory}, - year = {1985} - } - - -// Milner's own citation to development of CCS -@book{milner80, - title={{A Calculus of Communicating Systems, volume 92 of Lecture Notes in Computer Science}}, - author={Milner, R.}, - year={1980}, - publisher={Springer-Verlag} -} - - -// Milner's own pi-calculus reference -@article{milner92, - title={{A calculus of mobile processes, parts I and II}}, - author={Milner, R. and Parrow, J. and Walker, D.}, - journal={Information and Computation}, - volume={100}, - number={1}, - pages={1--40 and 41--77}, - year={1992}, - publisher={Academic Press} -} - - -// more recent Pi calculus reference -@book - { milner99, - author = {Robin Milner}, - title = {Communicating and Mobile Systems: The pi-Calculus}, - publisher = {Cambridge University Press}, - year = {1999} - } - - -// MPI reference -@book - { MPIForum94, - author = {M. P. I. Forum}, - title = {MPI: A Message-Passing Interface Standard}, - year = {1994} - } - - -// Petri nets original citation -@article{petri62, - title={{Fundamentals of a theory of asynchronous information flow}}, - author={Petri, C.A.}, - journal={Proc. IFIP Congress}, - volume={62}, - pages={386--390}, - year={1962} -} - - -// Pierce Type system book -@book{pierce02, - title={Types and Programming Languages}, - author={Pierce, B. C.}, - year={2002}, - publisher={MIT Press} -} - - -// Survey of Visual programming -@Article - { price, - author = {B. A. Price and R. M. Baecker and L. S. Small}, - title = {A Principled Taxonomy of Software Visualization}, - journal ={Journal of Visual Languages and Computing}, - volume = {4}, - number = {3}, - pages = {211--266} - } - - - -@misc - { pythonWebSite, - key = {Python}, - title = {The Python Software Foundation Mission Statement}, - note = {{\ttfamily http://www.python.org/psf/mission.html}} - } - - -// Roadmap for Revitalization of High End Computing -@unpublished - { reed03, - editor = {Daniel A. Reed}, - title = {Workshop on The Roadmap for the Revitalization of High-End Computing}, - day = {16--18}, - month = {jun}, - year = {2003}, - note = {Available at {\ttfamily http://www.cra.org/reports/supercomputing.web.pdf}} - } - - -// Parallel Pascal -@Article - { reeves84, - author = {A. P. Reeves}, - title = {Parallel Pascal -- An Extended Pascal for Parallel Computers}, - journal = {Journal of Parallel and Distributed Computing}, - volume = {1}, - number = {}, - year = {1984}, - month = {aug}, - pages = {64--80} - } - - -// Survey of parallel langs and models -@article{skillicorn98, - author = {David B. Skillicorn and Domenico Talia}, - title = {Models and languages for parallel computation}, - journal = {ACM Comput. Surv.}, - volume = {30}, - number = {2}, - year = {1998}, - issn = {0360-0300}, - pages = {123--169}, - doi = {http://doi.acm.org/10.1145/280277.280278}, - publisher = {ACM Press}, - address = {New York, NY, USA}, - } - - -// LOOPS ref for multiple inheritance issues -@article{stefik86, - title={Object Oriented Programming: Themes and Variations}, - author={Stefik, M. and Bobrow, D. G.}, - journal={The AI Magazine}, - volume={6}, - number={4}, - year={1986} -} - - -// 240 citations to this book, so seems safe.. covers modal logics which is superset -// of temporal logics -@book{stirling92, - title={{Modal and Temporal Logics}}, - author={Stirling, C.}, - year={1992}, - publisher={University of Edinburgh, Department of Computer Science} -} - - -// Titanium website -@misc - { TitaniumWebSite, - author = {Paul Hilfinger and et. al.}, - title = {The Titanium Project Home Page}, - note = {{\ttfamily http://www.cs.berkeley.edu/projects/titanium}} - } - - -// website with scans of original work by Turing -@misc{turing38, - author={A. Turing}, - note={http://www.turingarchive.org/intro/, and -http://www.turing.org.uk/sources/biblio4.html, and -http://web.comlab.ox.ac.uk/oucl/research/areas/ieg/e-library/sources/tp2-ie.pdf}, - year={1938} -} - - -// First mention of von Neumann's architecture ideas -@book{vonNeumann45, - title={First Draft of a Report on the EDVAC}, - author={J. von Neumann}, - year={1945}, - publisher={United States Army Ordnance Department} -} - - -// The 203 Glynn Winskel book for Formal Semantics -@book{winskel93, - title={{The Formal Semantics of Programming Languages}}, - author={Winskel, G.}, - year={1993}, - publisher={MIT Press} -} - - diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/helpers/plain.bst --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/helpers/plain.bst Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1098 +0,0 @@ -% BibTeX standard bibliography style `plain' - % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. - % Copyright (C) 1985, all rights reserved. - % Copying of this file is authorized only if either - % (1) you make absolutely no changes to your copy, including name, or - % (2) if you do make changes, you name it something other than - % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. - % This restriction helps ensure that all standard styles are identical. - % The file btxbst.doc has the documentation for this style. - -ENTRY - { address - author - booktitle - chapter - edition - editor - howpublished - institution - journal - key - month - note - number - organization - pages - publisher - school - series - title - type - volume - year - } - {} - { label } - -INTEGERS { output.state before.all mid.sentence after.sentence after.block } - -FUNCTION {init.state.consts} -{ #0 'before.all := - #1 'mid.sentence := - #2 'after.sentence := - #3 'after.block := -} - -STRINGS { s t } - -FUNCTION {output.nonnull} -{ 's := - output.state mid.sentence = - { ", " * write$ } - { output.state after.block = - { add.period$ write$ - newline$ - "\newblock " write$ - } - { output.state before.all = - 'write$ - { add.period$ " " * write$ } - if$ - } - if$ - mid.sentence 'output.state := - } - if$ - s -} - -FUNCTION {output} -{ duplicate$ empty$ - 'pop$ - 'output.nonnull - if$ -} - -FUNCTION {output.check} -{ 't := - duplicate$ empty$ - { pop$ "empty " t * " in " * cite$ * warning$ } - 'output.nonnull - if$ -} - -FUNCTION {output.bibitem} -{ newline$ - "\bibitem{" write$ - cite$ write$ - "}" write$ - newline$ - "" - before.all 'output.state := -} - -FUNCTION {fin.entry} -{ add.period$ - write$ - newline$ -} - -FUNCTION {new.block} -{ output.state before.all = - 'skip$ - { after.block 'output.state := } - if$ -} - -FUNCTION {new.sentence} -{ output.state after.block = - 'skip$ - { output.state before.all = - 'skip$ - { after.sentence 'output.state := } - if$ - } - if$ -} - -FUNCTION {not} -{ { #0 } - { #1 } - if$ -} - -FUNCTION {and} -{ 'skip$ - { pop$ #0 } - if$ -} - -FUNCTION {or} -{ { pop$ #1 } - 'skip$ - if$ -} - -FUNCTION {new.block.checka} -{ empty$ - 'skip$ - 'new.block - if$ -} - -FUNCTION {new.block.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.block - if$ -} - -FUNCTION {new.sentence.checka} -{ empty$ - 'skip$ - 'new.sentence - if$ -} - -FUNCTION {new.sentence.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.sentence - if$ -} - -FUNCTION {field.or.null} -{ duplicate$ empty$ - { pop$ "" } - 'skip$ - if$ -} - -FUNCTION {emphasize} -{ duplicate$ empty$ - { pop$ "" } - { "{\em " swap$ * "}" * } - if$ -} - -INTEGERS { nameptr namesleft numnames } - -FUNCTION {format.names} -{ 's := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := - nameptr #1 > - { namesleft #1 > - { ", " * t * } - { numnames #2 > - { "," * } - 'skip$ - if$ - t "others" = - { " et~al." * } - { " and " * t * } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {format.authors} -{ author empty$ - { "" } - { author format.names } - if$ -} - -FUNCTION {format.editors} -{ editor empty$ - { "" } - { editor format.names - editor num.names$ #1 > - { ", editors" * } - { ", editor" * } - if$ - } - if$ -} - -FUNCTION {format.title} -{ title empty$ - { "" } - { title "t" change.case$ } - if$ -} - -FUNCTION {n.dashify} -{ 't := - "" - { t empty$ not } - { t #1 #1 substring$ "-" = - { t #1 #2 substring$ "--" = not - { "--" * - t #2 global.max$ substring$ 't := - } - { { t #1 #1 substring$ "-" = } - { "-" * - t #2 global.max$ substring$ 't := - } - while$ - } - if$ - } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - if$ - } - while$ -} - -FUNCTION {format.date} -{ year empty$ - { month empty$ - { "" } - { "there's a month but no year in " cite$ * warning$ - month - } - if$ - } - { month empty$ - 'year - { month " " * year * } - if$ - } - if$ -} - -FUNCTION {format.btitle} -{ title emphasize -} - -FUNCTION {tie.or.space.connect} -{ duplicate$ text.length$ #3 < - { "~" } - { " " } - if$ - swap$ * * -} - -FUNCTION {either.or.check} -{ empty$ - 'pop$ - { "can't use both " swap$ * " fields in " * cite$ * warning$ } - if$ -} - -FUNCTION {format.bvolume} -{ volume empty$ - { "" } - { "volume" volume tie.or.space.connect - series empty$ - 'skip$ - { " of " * series emphasize * } - if$ - "volume and number" number either.or.check - } - if$ -} - -FUNCTION {format.number.series} -{ volume empty$ - { number empty$ - { series field.or.null } - { output.state mid.sentence = - { "number" } - { "Number" } - if$ - number tie.or.space.connect - series empty$ - { "there's a number but no series in " cite$ * warning$ } - { " in " * series * } - if$ - } - if$ - } - { "" } - if$ -} - -FUNCTION {format.edition} -{ edition empty$ - { "" } - { output.state mid.sentence = - { edition "l" change.case$ " edition" * } - { edition "t" change.case$ " edition" * } - if$ - } - if$ -} - -INTEGERS { multiresult } - -FUNCTION {multi.page.check} -{ 't := - #0 'multiresult := - { multiresult not - t empty$ not - and - } - { t #1 #1 substring$ - duplicate$ "-" = - swap$ duplicate$ "," = - swap$ "+" = - or or - { #1 'multiresult := } - { t #2 global.max$ substring$ 't := } - if$ - } - while$ - multiresult -} - -FUNCTION {format.pages} -{ pages empty$ - { "" } - { pages multi.page.check - { "pages" pages n.dashify tie.or.space.connect } - { "page" pages tie.or.space.connect } - if$ - } - if$ -} - -FUNCTION {format.vol.num.pages} -{ volume field.or.null - number empty$ - 'skip$ - { "(" number * ")" * * - volume empty$ - { "there's a number but no volume in " cite$ * warning$ } - 'skip$ - if$ - } - if$ - pages empty$ - 'skip$ - { duplicate$ empty$ - { pop$ format.pages } - { ":" * pages n.dashify * } - if$ - } - if$ -} - -FUNCTION {format.chapter.pages} -{ chapter empty$ - 'format.pages - { type empty$ - { "chapter" } - { type "l" change.case$ } - if$ - chapter tie.or.space.connect - pages empty$ - 'skip$ - { ", " * format.pages * } - if$ - } - if$ -} - -FUNCTION {format.in.ed.booktitle} -{ booktitle empty$ - { "" } - { editor empty$ - { "In " booktitle emphasize * } - { "In " format.editors * ", " * booktitle emphasize * } - if$ - } - if$ -} - -FUNCTION {empty.misc.check} -{ author empty$ title empty$ howpublished empty$ - month empty$ year empty$ note empty$ - and and and and and - key empty$ not and - { "all relevant fields are empty in " cite$ * warning$ } - 'skip$ - if$ -} - -FUNCTION {format.thesis.type} -{ type empty$ - 'skip$ - { pop$ - type "t" change.case$ - } - if$ -} - -FUNCTION {format.tr.number} -{ type empty$ - { "Technical Report" } - 'type - if$ - number empty$ - { "t" change.case$ } - { number tie.or.space.connect } - if$ -} - -FUNCTION {format.article.crossref} -{ key empty$ - { journal empty$ - { "need key or journal for " cite$ * " to crossref " * crossref * - warning$ - "" - } - { "In {\em " journal * "\/}" * } - if$ - } - { "In " key * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.crossref.editor} -{ editor #1 "{vv~}{ll}" format.name$ - editor num.names$ duplicate$ - #2 > - { pop$ " et~al." * } - { #2 < - 'skip$ - { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { " et~al." * } - { " and " * editor #2 "{vv~}{ll}" format.name$ * } - if$ - } - if$ - } - if$ -} - -FUNCTION {format.book.crossref} -{ volume empty$ - { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ - "In " - } - { "Volume" volume tie.or.space.connect - " of " * - } - if$ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { series empty$ - { "need editor, key, or series for " cite$ * " to crossref " * - crossref * warning$ - "" * - } - { "{\em " * series * "\/}" * } - if$ - } - { key * } - if$ - } - { format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.incoll.inproc.crossref} -{ editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { booktitle empty$ - { "need editor, key, or booktitle for " cite$ * " to crossref " * - crossref * warning$ - "" - } - { "In {\em " booktitle * "\/}" * } - if$ - } - { "In " key * } - if$ - } - { "In " format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {article} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { journal emphasize "journal" output.check - format.vol.num.pages output - format.date "year" output.check - } - { format.article.crossref output.nonnull - format.pages output - } - if$ - new.block - note output - fin.entry -} - -FUNCTION {book} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - new.block - note output - fin.entry -} - -FUNCTION {booklet} -{ output.bibitem - format.authors output - new.block - format.title "title" output.check - howpublished address new.block.checkb - howpublished output - address output - format.date output - new.block - note output - fin.entry -} - -FUNCTION {inbook} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - format.chapter.pages "chapter and pages" output.check - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { format.chapter.pages "chapter and pages" output.check - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - new.block - note output - fin.entry -} - -FUNCTION {incollection} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.chapter.pages output - new.sentence - publisher "publisher" output.check - address output - format.edition output - format.date "year" output.check - } - { format.incoll.inproc.crossref output.nonnull - format.chapter.pages output - } - if$ - new.block - note output - fin.entry -} - -FUNCTION {inproceedings} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.pages output - address empty$ - { organization publisher new.sentence.checkb - organization output - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - organization output - publisher output - } - if$ - } - { format.incoll.inproc.crossref output.nonnull - format.pages output - } - if$ - new.block - note output - fin.entry -} - -FUNCTION {conference} { inproceedings } - -FUNCTION {manual} -{ output.bibitem - author empty$ - { organization empty$ - 'skip$ - { organization output.nonnull - address output - } - if$ - } - { format.authors output.nonnull } - if$ - new.block - format.btitle "title" output.check - author empty$ - { organization empty$ - { address new.block.checka - address output - } - 'skip$ - if$ - } - { organization address new.block.checkb - organization output - address output - } - if$ - format.edition output - format.date output - new.block - note output - fin.entry -} - -FUNCTION {mastersthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - "Master's thesis" format.thesis.type output.nonnull - school "school" output.check - address output - format.date "year" output.check - new.block - note output - fin.entry -} - -FUNCTION {misc} -{ output.bibitem - format.authors output - title howpublished new.block.checkb - format.title output - howpublished new.block.checka - howpublished output - format.date output - new.block - note output - fin.entry - empty.misc.check -} - -FUNCTION {phdthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.btitle "title" output.check - new.block - "PhD thesis" format.thesis.type output.nonnull - school "school" output.check - address output - format.date "year" output.check - new.block - note output - fin.entry -} - -FUNCTION {proceedings} -{ output.bibitem - editor empty$ - { organization output } - { format.editors output.nonnull } - if$ - new.block - format.btitle "title" output.check - format.bvolume output - format.number.series output - address empty$ - { editor empty$ - { publisher new.sentence.checka } - { organization publisher new.sentence.checkb - organization output - } - if$ - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - editor empty$ - 'skip$ - { organization output } - if$ - publisher output - } - if$ - new.block - note output - fin.entry -} - -FUNCTION {techreport} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - format.tr.number output.nonnull - institution "institution" output.check - address output - format.date "year" output.check - new.block - note output - fin.entry -} - -FUNCTION {unpublished} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - note "note" output.check - format.date output - fin.entry -} - -FUNCTION {default.type} { misc } - -MACRO {jan} {"January"} - -MACRO {feb} {"February"} - -MACRO {mar} {"March"} - -MACRO {apr} {"April"} - -MACRO {may} {"May"} - -MACRO {jun} {"June"} - -MACRO {jul} {"July"} - -MACRO {aug} {"August"} - -MACRO {sep} {"September"} - -MACRO {oct} {"October"} - -MACRO {nov} {"November"} - -MACRO {dec} {"December"} - -MACRO {acmcs} {"ACM Computing Surveys"} - -MACRO {acta} {"Acta Informatica"} - -MACRO {cacm} {"Communications of the ACM"} - -MACRO {ibmjrd} {"IBM Journal of Research and Development"} - -MACRO {ibmsj} {"IBM Systems Journal"} - -MACRO {ieeese} {"IEEE Transactions on Software Engineering"} - -MACRO {ieeetc} {"IEEE Transactions on Computers"} - -MACRO {ieeetcad} - {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} - -MACRO {ipl} {"Information Processing Letters"} - -MACRO {jacm} {"Journal of the ACM"} - -MACRO {jcss} {"Journal of Computer and System Sciences"} - -MACRO {scp} {"Science of Computer Programming"} - -MACRO {sicomp} {"SIAM Journal on Computing"} - -MACRO {tocs} {"ACM Transactions on Computer Systems"} - -MACRO {tods} {"ACM Transactions on Database Systems"} - -MACRO {tog} {"ACM Transactions on Graphics"} - -MACRO {toms} {"ACM Transactions on Mathematical Software"} - -MACRO {toois} {"ACM Transactions on Office Information Systems"} - -MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} - -MACRO {tcs} {"Theoretical Computer Science"} - -READ - -FUNCTION {sortify} -{ purify$ - "l" change.case$ -} - -INTEGERS { len } - -FUNCTION {chop.word} -{ 's := - 'len := - s #1 len substring$ = - { s len #1 + global.max$ substring$ } - 's - if$ -} - -FUNCTION {sort.format.names} -{ 's := - #1 'nameptr := - "" - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { nameptr #1 > - { " " * } - 'skip$ - if$ - s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := - nameptr numnames = t "others" = and - { "et al" * } - { t sortify * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {sort.format.title} -{ 't := - "A " #2 - "An " #3 - "The " #4 t chop.word - chop.word - chop.word - sortify - #1 global.max$ substring$ -} - -FUNCTION {author.sort} -{ author empty$ - { key empty$ - { "to sort, need author or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {author.editor.sort} -{ author empty$ - { editor empty$ - { key empty$ - { "to sort, need author, editor, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { editor sort.format.names } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {author.organization.sort} -{ author empty$ - { organization empty$ - { key empty$ - { "to sort, need author, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {editor.organization.sort} -{ editor empty$ - { organization empty$ - { key empty$ - { "to sort, need editor, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { editor sort.format.names } - if$ -} - -FUNCTION {presort} -{ type$ "book" = - type$ "inbook" = - or - 'author.editor.sort - { type$ "proceedings" = - 'editor.organization.sort - { type$ "manual" = - 'author.organization.sort - 'author.sort - if$ - } - if$ - } - if$ - " " - * - year field.or.null sortify - * - " " - * - title field.or.null - sort.format.title - * - #1 entry.max$ substring$ - 'sort.key$ := -} - -ITERATE {presort} - -SORT - -STRINGS { longest.label } - -INTEGERS { number.label longest.label.width } - -FUNCTION {initialize.longest.label} -{ "" 'longest.label := - #1 'number.label := - #0 'longest.label.width := -} - -FUNCTION {longest.label.pass} -{ number.label int.to.str$ 'label := - number.label #1 + 'number.label := - label width$ longest.label.width > - { label 'longest.label := - label width$ 'longest.label.width := - } - 'skip$ - if$ -} - -EXECUTE {initialize.longest.label} - -ITERATE {longest.label.pass} - -FUNCTION {begin.bib} -{ preamble$ empty$ - 'skip$ - { preamble$ write$ newline$ } - if$ - "\begin{thebibliography}{" longest.label * "}" * write$ newline$ -} - -EXECUTE {begin.bib} - -EXECUTE {init.state.consts} - -ITERATE {call.type$} - -FUNCTION {end.bib} -{ newline$ - "\end{thebibliography}" write$ newline$ -} - -EXECUTE {end.bib} - diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/helpers/url.sty --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/helpers/url.sty Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,325 +0,0 @@ -% 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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/helpers/usetex-v1-anon.cls --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/helpers/usetex-v1-anon.cls Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,363 +0,0 @@ -\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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/helpers/usetex-v1.cls --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/helpers/usetex-v1.cls Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,357 +0,0 @@ -\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 dac0b8db9e72 -r fdd66fbc9403 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 Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1474 +0,0 @@ -%&latex - - -\documentclass[conference]{../helpers/llncs} -% - -%\usepackage{geometry} %chgs the margins and layout! -\usepackage{makeidx,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{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} - -\maketitle -% - -\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. 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 we 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. - -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. - -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 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 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. - - -\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. - -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{old stuff} - -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} - -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. - - - -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 dac0b8db9e72 -r fdd66fbc9403 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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.tex --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/12_Ja_20__HotPar_Abstr_for_PStack.tex Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,346 +0,0 @@ -% 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{Supporting the Performant-Portability Software Stack with the Virtualized Master-Slave Abstraction} - -\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} -The HotPar 2012 call for papers states that 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 a way to organize players in research and industry to supply the pieces of the stack. - -A recently proposed candidate for such a software stack\cite{PStackHome} relies in part on the assumption that a suitable hardware abstraction exists for the bottom layer of the stack. The abstraction's main purpose is to reduce the effort required in the upper layers. It must reduce the effort of creating language runtimes: by hiding details of synchronization and communication; by regularizing implementation to simplify and encourage reuse across languages; and by reducing the number of runtimes needed by collecting multiple targets below a single interface. It must at the same time enable high performance, by giving the language control over task placement and exposing to the runtime's scheduler the memory hierarchy, communication characteristics, and other major performance-related aspects of the hardware. - -In this paper, we show that an abstraction called Virtualized Master-Slave, or VMS \cite{VMSHome} satisfies these criteria, and we 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." Which are element of the software stack, and normally supplied by multiple players in research and industry. The players need to be organized to supply the pieces of the stack. - -The goal of the stack is to make parallel programming as productive as sequential programming, and to make it as portable onto new generations of hardware as sequential code. - -Reduced cost of parallel software is one major benefit of such a stack. Part of the cost reduction comes from performant portability. This means code is written once then run performantly across hardware targets, including unknown future architectures. - -A recent proposal for achieving this, named PStack\cite{PStackHome}, calls for a software stack having a layer of languages (toolchains) at the top, a layer of runtimes below that, and a hardware abstraction layer at the bottom. - -It is this bottom layer that we focus on in this paper. We begin by giving context for the bottom layer with more information about the software stack, in Section 2. We then explore the requirements for the layers in in Section 3, and show how VMS satisfies the requirements in Section 4. We then move to results, giving our experimental setup in Section 5, and measurements in Section 6. In Section 7 we tie the elements of the paper together in the conclusion. - - -%%%%%%%%%%%%%%%%%%%%% -\section{Context: PStack} - -Many projects are attempting portability \cite{OpenMPHome,TBBHome,OpenCLHome,Sequioa06,SEJITS}. PStack differentiates itself in three ways: 1) it's goal is wider than most: (nearly) all-languages to (nearly) all hardware 2) It's approach is to \emph{organize} -- industry supplies the pieces of the solution, while PStack itself only provides the interfaces and scaffolding, along with the seed of a solution to start 3) PStack has unique approaches for the application interface and the hardware interface that fill fundamental needs. - -The general philosophy is that portability involves too much effort to be solved by a single group. Instead, an industry-wide effort is needed, where each player provides one small piece of the solution. This, though, requires some way to organize it all, and modularize the pieces. - -PStack addresses this by defining a number of interfaces, and providing tools to manage specialization. These result in a simple, decoupled process for adding new solution pieces. So, the solution can grow at its own pace, accumulating the efforts of many. - -\subsection{PStack elements} - -As seen in Figure \ref{figPStack}, at the top, a standard set of information is defined, which must be gathered from the application. Current languages don't capture all the required information. So PStack defines a set of constructs to be added to a language to fill its gaps. The added constructs are denoted ``+P'' appended to the language name. - -In the middle, standard runtimes require too much effort to create, and discourage reusing schedulers across languages. So PStack defines a hardware abstraction that removes as much as possible from the runtime, including concurrency in the runtime itself. The abstraction makes the runtimes all have similar structure, which simplifies reuse of complex scheduler code among languages. - -At the bottom, performance of the runtime itself requires intense low-level hand-tuning and debugging. This is captured inside the implementation of the abstraction. It is done once for each hardware target, then reused across the runtimes from all languages. So the intense hand-tuning is taken out of the runtimes, in the middle layer, while it benefits all languages and hence applications in the higher layers. - -\subsection{How VMS influences the stack} - -VMS was chosen as the abstraction in the bottom layer. However, VMS affects multiple interfaces and layers of the stack. At the top, it determines the way parallel constructs are embedded into base languages, and how custom-syntax languages generate their runtime-interactions. Next, between the top and middle, VMS defines the interface for the language layer to talk to the runtime layer. Then within the middle layer, VMS defines two standard function prototypes, so that a runtime consists of implementations of just these two functions. Between middle and bottom, VMS defines a number of services that runtimes in the middle can call, and also defines the interaction between the VMS-implementation and the two runtime functions. - - -\begin{figure*}[ht] -\center - \includegraphics[width=6in]{Portability_stack_combined.pdf} - \caption - {Depiction of PStack, with layers named on the left, and interfaces between layers named on the right. At the top are toolchains plus specializers, in the middle are runtimes connecting languages to hardware, and below that are hardware abstractions that collect similar hardware below a single interface and simplify runtime implementation. - } -\label{figPStack} - -\end{figure*} - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Requirements} - -Although the paper focuses on the bottom abstraction, its requirements are influenced by the layers above. So we present a full picture of the requirements in the stack, to give a complete picture for the bottom abstraction. - -\subsection{Top Layer: Language Requirements} -The languages must be designed to capture all information required to specialize the source for high performance on any target hardware. A computation model, called The Holistic Model\cite{HolisticHome}, suggests that such a canonical set of information exists. - -PStack proposes to develop the constructs that gather the canonical information set, 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{DKUSourceForge}, which demonstrated the success of task-resizing constructs. - -PStack also calls for the use of the BLIS\cite{BLISHome} approach for managing multiple toolchains, where each toolchain specializes to a different target. The management covers 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 fit naturally within the approach. - -\subsection{Middle Layer: Runtime Requirements} - -Below the top layer, a collection of runtime systems acts as a sort of cross-bar switch, connecting the languages above to the hardware abstractions below. Such a ``cross-bar'' switch made up of runtimes implies a large number of runtimes. - -To be practical, the number of runtimes must be reduced; the effort of creating one must be reduced; and reuse of sophisticated runtime code must be encouraged. - -\subsection{Bottom Layer: Abstraction Requirements} - -The primary purpose of the bottom abstraction is to reduce the effort of creating the runtime layer. - -\begin{itemize} -\item The abstraction must hide details, making multiple hardware targets present the same interface and use a common runtime. -\item The abstraction must hide low-level tuning of the runtime itself, like synchronization-related tuning. -\item The asbstraction must provide common services, such as handling internal synchronization of the runtime, creation of tasks, communication, etc. -\item The abstraction must create uniform patterns for runtime implementation, making reuse between runtimes more practical and reducing the effort of making multiple runtimes. - -\end{itemize} - -However, the abstraction must not hide \textit{application}-performance-critical information from the runtime, which holds the scheduler that decides when tasks become ready and where to execute them. The 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 \emph{application} 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 application 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. - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Relating VMS Details to Requirements} - -Given the requirements, how does VMS meet them? We given more detail on VMS, at each place it affects the stack, and show how the details satisfy the requirements. - - -\subsection{Top-layer} - -With VMS, a language is implemented as either a collection of wrapper-library calls embedded into a base language, or as custom syntax. The wrapper-lib functions call a primitive supplied by VMS that suspends the virtual-processor animating the call, and sends a request to the runtime. This same VMS primitive is also used to implement custom syntax, inside the compiler. Thus, the VMS primitive is the means for the language layer to interact with the runtime layer. - - -VMS is invisible to the application, only language constructs are visible -- either wrapper-library calls or custom syntax. From the application-programmer point of view, even an embedded parallelism construct looks like a function call, albeit the data-structure of the virtual-processor animating the code has to be passed as a parameter to the wrapper-lib call. - - -\subsection{Interface from top to middle} - -The interface between application-executable and language-runtime is fixed, as the VMS-primitive that sends a request to the runtime. Even though PStack allows executables to be modified during installation or even runtime, via BLIS management of auto-tuners, multi-stage compilers, or binary re-writers, the VMS-primitive still must be used for the executable to interact with the runtime. - - -Such a standard interaction mechanism serves not only to modularize the stack, cleanly separating runtime from toolchain, but also to decouple executable from VMS implementation. The VMS primitive is naturally a custom instruction, but can also be, a trap to the OS, a message sent on a port, or a function call -- given appropriate executable modification under BLIS. - -\subsection{Middle layer} - - - -VMS causes the middle-layer portion of a runtime to be implemented as two functions. The first is the request-handler, which is the part of a scheduler that handles constraints. It determines which work units (tasks) are ready to be animated (executed). - The other function, sched-assigner, assigns ready work to hardware. This provides uniform patterns for the runtimes. - - - -When a request is ready for the runtime, VMS calls the request-handler function, and when hardware is free for work, VMS calls the scheduler-assign function. Thus, the language portion of the runtime is passive. - -By keeping control-flow inside VMS, the language-supplied portion of the runtime is simplified. Control flow includes any concurrency, and so is inside the VMS-implementation. Hence, the language-supplied runtime functions are sequential code, even though they implement the \textit{semantics} of language-level synchronization constructs. This simplifies runtime implementation. - -This structure is also the reason VMS encourages reuse of scheduler code. Scheduling is sub-divided into distinct modules: constraint-management (IE enforcing dependencies); and assigning work to resources. The assignment module is especially straight-forward to share between languages. - -Because application performance is most strongly influenced by communication within the hardware, the assignment module is critical. For high performance, it also tends to be complex. Thus, simple reuse of it is a significant benefit. - - -\subsection{Interface from middle to bottom} - -VMS's plugin API is the interface between the runtime and the bottom abstraction-implementation. The API has calls to register language-supplied runtime functions with the bottom abstraction, as well as support services. - - -Reduction of the number of runtimes is accomplished this way. Hardware targets with similar structure present the same interface, requiring only one runtime. - -Only structural elements that affect assignment choices are exposed in the API. For example, memory hierarchy is exposed as a VMS-defined data-structure made available to the sched-assign function. The details in the data convey the connectivity, communication, and sizes, which the assigner may use to optimize choices. - -\subsection{Bottom layer} - -The bottom layer consists of implementations of the VMS API and VMS primitives used in the upper levels, as well as the control-flow of the runtimes. Each hardware platform has its own implementation, allowing low-level hand-tweaking. This effort is performed once per hardware target, so is amortized across applications. Pulling this tuning below the interface also simplifies the runtime-portion in the middle layer. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Experimental Setup} -The experiments to measure VMS overhead were run on three machines: a one-socket 2 core 3GHz workstation (``1x2''), a one-socket 4 core SandyBridge 3.3GHz workstation (``1x4''), and a four-socket by 10 core each Westmere EX 2.4GHz server (``4x10''). - -The code consists of two loops: the innermost is a single task, while the outer repeats that task a number of times. The inner does throw-away work entirely within registers, where the number of iterations sets the amount of work in the task. After the inner completes, a synchronization is performed, which pairs each task to a sync operation. The outer then repeats the sequence of task-then-sync a large number of times to gain statistical accuracy and dominate any other sources of overhead. - -Two versions of the code were written: one that used pthread, a second that used a VMS-implemented equivalent called Vthread. Both have the same semantics, differing only in the implementation of scheduling triggered by the construct. Hence, any difference in execution time is due to the difference in scheduling overhead. - -%%%%%%%%%%%%%%%%%%%%%%% -\section{Results} -The new experimental results given in this paper focus on the overhead of the runtime, with the goal of showing that a language based on VMS enjoys low overhead compared to standard pthreads. We illustrate the amount of overhead by plotting a curve whose shape is determined by the overhead. - -The curve compares total CPU time to just work time. The difference is the overhead of scheduling, which consists of: switching from application to scheduler; updating the sync-construct state; choosing a new thread to schedule; and deciding on which core to re-animate it. - -The ratio of total CPU time to work time gets larger as the overhead increases, raising overhead's percent of the total. When the ratio is exactly 2, the work time exactly equals the overhead. Larger ratio indicates overhead dominates, smaller indicates work dominates. - -Hence, to find the size of the overhead, find the size of task where the work in the task exactly equals the overhead of scheduling the task. To do this, we plot the ratio on the y axis and single-task-time on x axis. When the ratio equals 2, the cycles of work in the task equals the overhead of scheduling the task. So the overhead can be read off the graph, as the task-size at the y=2 point. - - -\subsection{Performance Results} - -We executed on each of three machines. On a given machine, we first executed the pthread version, then the Vthread version, with a variety of numbers of threads. Varying the number of threads shows the effect on scheduling time. For a given machine, both sets of curves are plotted on the same graph, to make direct comparison easy. - -\begin{figure}[ht!] - \includegraphics[width=2.3in, angle = -90]{plots_exec_vs_task_size/cray1_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps} - \caption - {$\frac{ExecutionTime} {WorkTime}$ vs $TaskTime$ on the 1x2 machine. It shows results for Vthread and pthread on the same axes, for 8 through 512 threads. The Vthread curves cluster, appearing as the bottom-most, while the pthread curves for 8, 32, and 128 are above it. The results for pthread with 512 threads land outside the plot. - } -\label{figCray1Results} -\end{figure} - -Figure \ref{figCray1Results} shows results for the 1x2 machine. The curves for Vthread cluster together in the lower-left, indicating that overhead is smaller than for pthread. The tight clustering means that overhead remains constant as the number of threads is increased. - -The values for overhead per task is read off the graph by finding where the curve crosses $y=2$. This shows that Vthread has around 700 cycles of overhead, while pthread starts at 3800 for 8 threads, goes up to 8200 for 32 threads, and then into the tens of thousands for 128 threads. Not shown is the curve for 512 threads, which has more than 100,000 cycles of overhead. - - -\begin{figure}[ht!] - \includegraphics[width=2.2in, angle = -90]{plots_exec_vs_task_size/vms_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps} - \caption - {$\frac{ExecutionTime} {WorkTime}$ vs $TaskTime$ on the 1x4 machine. The results are similar to Figure \ref{figCray1Results}. - } -\label{figVMSResults} -\end{figure} - - -Figure \ref{figVMSResults} shows similar characteristics on the 1x4 SandyBridge machine. - - -\begin{figure}[ht!] - \includegraphics[width=2.2in, angle = -90] - {plots_exec_vs_task_size/xoanon_pthread_vthread_40core_80_160_320_640thds__o30000__perfCtrs.eps} - \caption - {$\frac{ExecutionTime} {WorkTime}$ vs $TaskTime$ on the 4x10 machine. The Vthread results are difficult to see, at the bottom of the plot, while the pthread results appear in the middle. The runs start at 80 threads, which is the number of hardware contexts in the machine. - } -\label{figXoanonResults} -\end{figure} - - -However, things change dramatically on the 4 socket by 10 core-each Westmere machine, seen in Figure \ref{figXoanonResults}. Here, inter-socket communication dominates, and VMS gains orders of magnitude advantage. For one thread per hardware context, Vthread's overhead is around 2000 cycles, while pthread starts at around 50,000 and goes up from there. - -The implementation of VMS is different on this machine than the single-socket ones, and demonstrates the effectiveness of pulling hardware details below the abstraction. - -When using the single-socket implementation on the 4x10, the large number of cores and inter-socket communication times causes excessive contention. We solved the problem for the 4x10 machine with an increasing-random-backoff approach. It reduces overhead by an order of magnitude on the 4x10. - - Without an abstraction like VMS, the language implementers would have to discover and solve such problems separately for each language on each machine. Because this required several weeks, the use of advanced tools, and detailed knowledge of the hardware, the savings for the language-runtime implementers is significant. This is evidence of VMS's ability to reduce middle-layer runtime implementation effort. - -%\mbox -% {\subfigure{\includegraphics[width=2.3in, angle = -90] -% {plots_exec_vs_task_size/cray1_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps} -% }} - - -%$\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. - - -\subsection{Implementation Time Results} -As seen in a previous paper on VMS\cite{VMSLCPC}, it makes runtime implementation quick and easy. The results are re-printed in Table \ref{tabPersonDaysLang} to support the claim VMS meets the requirement of reducing runtime implementation effort. - -From previous experience and informal discussions with others, equivalently low-overhead tuned runtimes would take several months. Similar time is also expected to learn the code of a pre-existing multi-threaded highly tuned runtime, then modify, debug and re-tune it. - -\begin{table}[ht!] -\caption - {Person-days to design, code, and test each of three sets of parallelism constructs. L.O.C. is lines of (original) C code, excluding libraries and comments. - } -\label{tabPersonDaysLang} -\begin{center} -\begin{tabular}{|l|l|l|l|} -\cline{1-4} - & SSR & Vthread & VCilk - \\\cline{1-4} - Design & 4 & 1 & 0.5\\ - Code & 2 & 0.5 & 0.5\\ - Test & 1 & 0.5 & 0.5\\ - \cline{1-4} - L.O.C. & 470 & 290 & 310 - \\\cline{1-4} - \end{tabular} -\end{center} -\end{table} - - -%%%%%%%%%%%%%%%%%%%%%% -\section{Conclusion} -We showed that using VMS as the bottom hardware abstraction in a software stack pulls low-level tuning out of the runtimes, reduces the number of runtime implementations, and encourages reuse of scheduler assignment code across languages. - - -%%%%%%%%%%%%%%%%%%%%%%%% - - -\bibliography{../helpers/bib_for_papers} - - -\end{document} - diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/Paper_Design.txt --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/Paper_Design.txt Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ - - -Outline: - -Motivation: by funnelling from big, broad, already accepted, down to specific of paper. -Added detail: Start with universally accepted goal that all agree with -- the HotPar call for papers statement -- build a golden bridge from there to the specific thing want to talk about -- the bottom layer of the portability stack. --] state the goal of HotPar --] Show how that's same as needing a new software stack --] Say proposal for such stack exists --] Say paper focuses on bottom layer of stack - -Desire: inject PStack into the paper, as support -- because can't claim it as a contribution as it has no supporting results. -Want to build sub-bridges -- once add structure, there are audience-accepted sub-goals they've seen in practice already. Call those already-known things out, to give audience mental anchors -- then build golden bridges from those to PStack, showing that PStack addresses those anchored concerns/issues/goals - --] Anchor: Other portability approaches exist (Everyone knows that, asking "so how is this PStack different?" ---] Bridge: how PStack differentiates itself - -Detail: PStack is broader in scope: all langs to all hardware, PStack isn't solution itself, rather it's organizer for all in industry to supply piece by piece the solution; PStack has novel top-level interface and bottom-layer interface that enable all the rest. - - - diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/Paper_Design_2.txt --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/Paper_Design_2.txt Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ - -====== - -Details of VMS interface, details of its impl on multi-core, details of differences on different machines. - -wrapper-lib calls VMS-supplied primitive that suspends the virtual-processor calling the lib, and sends a request to VMS. VMS calls lang-supplied plugin to handle requests -- this is the part of the scheduler that handles constraints -- it determines which virt-processors must remain suspended, and which are free to be re-animated. - -The language is implemented as either a collection of wrapper-lib calls embedded into the base language, or as custom syntax that uses uses the VMS-supplied primitive to suspend virtual processors and send requests to VMS. - - -VMS is invisible to the application, only language constructs are visible. From the application-programmer point of view, the embedded version looks like a function call, albeit the data-struc of the virtual-processor animating the code has to be passed as a parameter to the wrapper-lib call. - -Hence, VMS is invisible to the application, only language constructs are visible. - -The wrapper-lib call is standard library code that is loaded along with the application executable. - -However, VMS primitives may be hardware-implemented, or loaded as OS modules, or dynamic or static libraries. Rhey are naturally custom instructions, but may be emulated by software. - -The interface between application-executable and language-runtime is the VMS-primitive that sends a request to VMS. The language-runtime receives the request under control of VMS, which calls a language-supplied request-handling function and passes the request as a parameter. This passive behavior of the request handler leaves control-flow inside VMS, which is part of hiding concurrency from the language-runtime implementation. - -The interface between the runtime and VMS is VMS's plugin API. The runtime is implemented as two functions, whose pointers are handed to VMS. VMS then controls the flow of execution. When a request is ready for the runtime, VMS cIalls the request-handler function, and when a spot on hardware is free for work, VMS calls the scheduler-assign function. Hence, the language implements its runtime as two isolated functions. By keeping control-flow inside VMS, the language-specific portion of the runtiem is simplified. - -This structure is also the reason VMS encourages reuse of scheduler code. The VMS API separates out control flow from scheduling, so scheduling code is isolated, with well-defined interfaces. Scheduling is then further sub-divided into modules: constraint-management (IE enforcing dependencies); and choosing physical location to place work. Each has its own well-defined interface, and they communicate to each other via VMS-managed shared state. - -The greatest application performance impact due to the scheduler is communication it causes. - -, management of the memory hierarchy, and the match between work-characteristics and hardware-characteristics (IE, assigning to accelerator vs CPU). Hence, significant work goes into implementing strategies and mechanisms for finding the best assignment-choices. Such implementations are only loosely coupled to language, through the shared state by which the request-handler informs the assigner of what work is ready to be animated. - -Hence, it is straight-forward to reuse the code that assigns work to physical locations. The only language-specific influence on the assigner is the shared constraint-state. - - - diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/url.sty --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/url.sty Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,325 +0,0 @@ -% 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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/usetex-v1-anon.cls --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/usetex-v1-anon.cls Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,363 +0,0 @@ -\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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/usetex-v1.cls --- a/0__Papers/VMS/VMS__Foundation_Paper/HotPar_2012/latex/usetex-v1.cls Thu Feb 02 12:22:53 2012 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,357 +0,0 @@ -\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 dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Scheduling_states_2.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Scheduling_states_2.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,460 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.8.6 (http://cairographics.org) +%%CreationDate: Sat Nov 13 08:19:40 2010 +%%Pages: 1 +%%BoundingBox: 0 0 196 77 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%EndComments +%%BeginProlog +/cairo_eps_state save def +/dict_count countdictstack def +/op_count count 1 sub def +userdict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/B { fill stroke } bind def +/B* { eofill stroke } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 196 77 +%%EndPageSetup +q +Q q +q 0 0 197 77 rectclip +% Fallback Image: x=0, y=0, w=196, h=76 res=300dpi size=776967 +[ 0.24 0 0 0.24 0 0.916468 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 817 def + /Height 317 def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /LZWDecode filter def + /ImageMatrix [ 1 0 0 -1 0 317 ] def +end +image +J3I@:GU(oO"FIqV0;rCK*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H>q_R=Al + C^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`A'g"%ioWjnAY&^gM+`4=1jRLW!YA=M/6)*KS9PE`kN%="Tc + _Aoh+fk'&t\ctI:h]"?)EVlIDd]!t-Xh$Ve"[JLu9_eZN2gNOTbQKrP([VkioDBB7=[,UR, + Hi@$GNQ^C&p\W4]93o[!Fh+rPIlj(Jn9-kkY-14!k3ht)5*"HoRH + ;haXA))8C?"dI7ot,?P2T;S5?2%pJG?hVRcZ<)f7H[>"\)m@0?8V'$JR>njlZch42=GEj[T + 4&n?hf?XIq!P\.u@^0VDF-?GfCPQA,''qCLT7E23?\J*`H"p).jbLiOLj8QXgt7CRShB%EX + iFq6k?EkOj:*SRe,%AVXodSr'0))J4\okLfL'T'%#7D6$`!`A)dSfo@#OBmIG1V.mMqX0?E + InfEH^'PuKNd`;(C\aGrimCVg+cLnm>S*p6in/MrB_=3sJ%E%]U:DLk=S8TFgnf3]:amtt* + /^*`*cS`u=SF8VeoGnH2dI`t_:"/bU:K>sq+ssgKcl$loZ@-jp`9s"i + V8utNT9gU:R1&;So:1_qAt]ol2%!TXm>j*caE0;T'sA]r#ZHgnbf"4c1ClU:Y#.:T5WQ[rZ + @3_q>R"imJHo*ch78:TC;^Xhuj(2:F3QNPpBD[Js(>X@KF9s*])p%>.#(RD)FIVD%H55cLJ[C[6eHetiWMQ';%=d + <=H*&a;#Q*#g(u1n*:KUa;2S4G.RdIA(#m/7Mc"@E7G,9iirieH&L<&FZF9n0Hjks2Xu8c% + h&GC-EK3oA3_*<>*TP(`Kb5XX`7SK>U]c71;@Z#a=UcP87#@%(/k/Ca#i)(-?%E3_1_7*i, + G`8GP>Z9n5GAiRV$*J3dYr(d=\L[65g5KkXC+ZJG:Vd.YSC']>"`"1.ODluQW!6X9;*jh`' + hG/;\!2k3K,!@7*1iq+?3'AbqnL8d@&s:C'@bB2000r7jpRT!C,"4V.\*0fki + b*c3_l3+=,<=W20!C\WZNCfL(#,Y(^RN*^]>cL_9,h6&9%B@A6"EeMm7;8l(Y-qBbh-93!ENWt#)=5*U[lihV72@ctm.h,Qr5U$At/p.8#*B + 8Y!Odbn>/'njfA`cO0ZW&>F=kRsGXTZ!HQB#&URnPW?7&CrIY#))IDen`oZ%;POHon**5pQ + ?6[oVqR7`OU>7kMQAd]?p5=^Wa45btqglpb7-$$56"CV!G0/6uD]&h_,[#5<"X!dhUi!4Cd + e5T92q)pNZs7HqKeY4c2Vh0\UEn\/)MqHm&!"7O#=^K)Hkhq?O?_=ZUlQk&D8M4bf,7*1h5 + %Uf[&*%,]Y[&@HV=A#j'L$@7N*Z/eOiS6R?Xe_.Y1r;mTX?VR37O`bkKQ,quWJebc0pY_]: + ub]&;X/)>%2eFcA(e!snc1qr=*F$5r/Fg/5"WKA0.(5`rI+`p@]WTX.Th3oQ045b]3sKBKL + tc"B"ZV$ZjLLOr67O+0S7PK.lM"ph*Rt5Q(cmW3bM^b/ugcAU/`-okM5HooEKjWq@>Dr=d* + F7NarR7MagLt"r/oW1t#=<'5:^P@K=-1b$&]!J=N1.o`e*kJ2e!Q>q-/Y:d`c66mm]%>T*3 + fagpCB88D'_XlZ4df2iYqN?*ErV$UMJ>7Y1/X@#Xc*)=GZb@9hoSKj+Rn\[=kC^e"Z/-TqE + `hJ45M*VZ]k"'7B=bnJD>uVBuf&jOYE:'ShX,hCDD,*3^5aY) + *Jq>qX(10qgo1RS8h/c0,Y?$ZfQ%F4nOI!Q=9EC3$?!L.qZ\bm")"nLT$=LM#ANR$04VrC?a?KBC[PKR'.K'sh8\W'Q$CMQ$*O1 + MHiSH]=R7kP>_!FWha7L[/-pLWQ/h2O!V06K;Ltk[%(sA:o2C.="Yd@Ik(\\[2)%;>+XQC7 + hKbDrcdk`!;(D*\ePW#U_b%jg0XY@k_(5uEi90al$hgc;"c=H'Fh_[Ij> + +5&4+Tr,$$GOK8!hX93IGZ4/2eWU%T8XQb>QLl,s66N^PLG@9ED6G:G8OV + *\+7UcdhY2]IX"TW2B;62Ob;UB,h\bUsk(FL@jT!0DU6kW0mO66":-)GlA + 0d#d?tFI%k.'<73.0!q$"#c^/#!_L,IJ56#M3:WXb"&&"'%8QL[F:$=8d=B1)5k5N6e>U3# + %BZ]L@Dr^#[g3Q/LX+V4lq%12lORcUg*o_j+_qW=N"PRc&!7800bEr[Wr/Mnnu_'_bNdQW_ + ?.lg"DQB^TUQTJU=K=iek;VAmuE]j@-g\Q`M(/50_lG<<5ZUGU`m,\kuJV*A/6n5W6h+I&T + IQldL5Qc$.)'FWtkl#ZiP0'&dndYJ/8:R[L$rA(N'QiDj:MM55kSD)QrWMK2WM)[!tj)O31 + rOEPRSC2BDn.*3R6TNOK?_*"R&B'97AG5^sh0K&'fi!3to.bKf@&0cse#+/!ZslDb.DU>/# + `ZU"-pEY.]U1mW]4+g$"@_4q9e]Ta]o*&9)inh>HC']WWKg6&BPnCeZ']G/TLeo@;H^rIJ[ + kQi;>-(mOMmZARulI2Ct-D5W2lR;SF'dmE[-a@1uTrf^ta!3?qH',]*lZ4J[P_92k*:fX+_ + 5,[KEi?en.^>Sh:C[QV[2si)/$`]hE4I:Q5jA>Z-#qfN^u[.!(86:+\Nrd]NHkG[6On.'0! + ajsk\=$>f.UR90B$Se8* + O5VQ%2`[mN1WsV8$r&mKRSlt()t2i)JQ"cf#SHTuk=s8>0dcHV"#fGn47oO0!`,?;Tci=Q>k + d437^P.9&rtX#P=G$ImbuhK&HW`PRhl)*RK/aHo++8h#qMYT*g7*W1U-0FkpiAG1=Ds9oW\ + (QkspuK9=2B",/3f8V*m)l7"G.9&d&`.-Lq^-!O78Ji0cmHfenV"pbFj&kbUd*i7X@aVSX' + 3ZgU+%;a58o4L'AKYIX`HnK,IQo!6?/0m8s>eLeU_;Qp`!_:(D$qbqVt;me`6_A*d6V++88 + *J!lG$iqnYR,.-jk])srC7a1dM&Pq8;s6LHJb&iX\IULVID+m@NHL(`#(AQgMG@N:s@_cC'9Y?aj&u*2. + 'B74"=*%;cUROM',_&b5]uc?KeCe&*ZV9igD;FkRm%L'U^Zu2ToL'@B:"LXhGA3N@4CN;76 + @3p+^&81q%#WrmU=>NXucL38a9&"V!N7OcZ,0U=O+A'p'",(,gP>oiICRAgfoB:L_1]fbs6 + >Z+t)U[XdTo7p4B9"SGJ@O_>LRQ"b1(%p!O]p7Z4ZUk=gipaKod1/T)8Iii&P^9j:1m9(RR + E"rmmm1uRE(1utLHYhm;/+';1Pc55pdl&m5=\V+G:FdOFF$-,cDm3RQP;?\!fl2-AE46726 + W6VYSeZGeCC[I^V=2eW!@HbM*DbU^0hi>*CaVeF@TMG./,RG6aC"d$3jI/C> + 2=h_c7bTEfg!`G8DW64p%AktQ!GSU>Y'I(.=XJe\3M>1RI<=kA2;0>e3!*r,:L%S-5]]j(NG(UlN95A4IYjj3 + `j92QpB>HqB62,)6/Z"==hP:jPJ:6%+ZYCJQF]0TgKZ:Mn$HYpqW)f&F<5#KqQT:5\XN)!> + u?loSH`g'Xom+nfP:5N7U'M8k9unIkm52A@JiECYn:$X#JC3jUk@K3>%B6'p39>;GP1;n"U + MrbitHo+OYaoD4?A@OVLiD#*qU'lO^c%g<3mGPdC(L&tBs;)3oJMQ+:/;os,T6M+lD7#h7S + 3o=lD&eH$(UP?-97,/3h*gBs$+]oJL3Nc^Xi0*bMEQ2-u=q4X6.4AsP`*DKZ"b5YmH+;FX^ + O"4S(enWmam;-^3Dc7Fb&%2P'@rJ%1:ednKq5'ZCjdpb]fS8Pi%D&j2J-)bH;2N$AZn/$IP + d]Q>Ik,kh0Uil(,eX^=2tWOe + Y"m@Pb)'m5Q#m>j0Fk=Z3b>/r/&<<\JL)`l`Xq[p(p'\K0Z1=?8\$KG:9T."Bd%e'F0LuFXY + V'UI2Y0hj#n):M*(USN\[(B#N'enCH`N2\n)$uuTkd.=G\ON:Hf&8VI3i]A%ro[33PrhdNq + gl7=KZ!>`%2`!G1mn]3k_a^tMF,'G0es'EY-/S2"^#uJH\]3p[C^dqVM-=cJPNufk?1[=pZ + RI,F$Y)=P_d_jSW>;$cR")U@$KEX^:WdHqs^JDl#'ZaXn2cZ\cRZ!dB?)_DK"KYHW[Gh.$b`0`E[i3r.2p;fVC4GDT^i_%AJO0nR%b>KL-chg5)n2%u'kfaBYji + r3=En`=;6cXqJ^5kXWa>mE):bDKrEsWoaJ4e\h0Cb?WlJr8GpLMJdF1-7[VM:J$tQ1WG4tp + [N^8G's(Tp!-hLd(Kn8k]&r<@]gF(S)!auB_s4q6@p$JDHr.&cA,uE#LOPPe%IonkWEa$gL + TU&?$hlhg]u&Z"E&R'YNk)&:QM(f6.UHuf"GmO[hPn$6ER9+jTm6c\L^^e>]TChdN1Q>X?3Zh8.l0`S>+];_ZS#\Gl9e*SSQm'\gR + .lOaG/akhI1hS&9'1>0,dd90^=eU8R:Y2)TR-@RfUJ4eLUo3I9Fn)8^5iP$:WGd36#c]@`% + J,I7r(=ep&e0,H$Xq?9\4s/iL7HAng+7s-UC=(gbA:K$[HunTE!+`4="ba\H+Wa;=rc.*ak + A5S=XR)XV-h$/p^Bn&IXc;]n5'?*RQ0E^c_8.h-[F_Mclf^jJ7NQlX.DJXWRHo=4lb,G=b1 + eg;2LV-I]j,l0jYHYgAF`0Rf"7j2uoY4,4:fsj'g3p[ + gZMlV*[!h'DgOL:bo`&e%s)G;1*uHKX$_F/B)_G-@?@!hhoEs7fqaL6DQ2,otWR\'dg_-^W + S:+a*GN'@iWn?,+(&>VTqnKh=Dka@.41E8TnRgqH9%qI<\,63YrP.0RZ6cdc&bDRm[]=8t5 + 0eC0+K_mdb.ldU&,6hK#mGrIi=MAU/f>+R6fJ[pPYNYBMacYOE:HQ-SW:]3XkAS(6s&ID9.WD;5[9$!j4%E>4:117Ip + W<,&a1h-(HBb6%8P?iV]:bg0ZR)BBTS8YsmMobsB%Y?A!ZC\A\fQHs9QJWr)2Tt]t0ri9#' + cYS;1X%S(/GlnOWC:4.AF8"E2QVXU2lZN(FT%@nkh=#Rc*Zl(ZC$!T9YYEds-[eYK5'T1.Q + :iY13dpqu'9DV&rVo+O"9SZiE$Pen5k%/T"[R!OX:<#4d2NBTCg$W/^+=?fii;2SLCZDHct + *ePn750*7.EZD'h*+Q>8K`uKOYlD6VM7>#Vj7Gp7JJi*iHnLR[2&!Z6M3O!Cj_c)9Ho0RjU + euKVKtgEho`d7*d;qblG'.i@cH0@t)G'fF/8+`:@lE'0-1* + -qTTfJ"MkGF8qVl?*HXOe75I\8@*)2$Kd0/eFJUK\;Y7pa9dClF3mA3n"U,pnPUYmEeEi:c + AY/fDuF1B:W9/(o'qRqGmtKqi?cG,;6D& + 9brK:5&E;W3>`Gp9; + p1j-k[a\+C]Vd:'ErM!bI:L_`k4f$S@pA4u;V + ^^XZHHc^:"/Z=uF'":[GlC3sj`u;fS*,(rLSO*[I]'74HN(skmrq_"WNP+8c + e(OB)`TGVKD1e/*KV=n0pe-RS + .k]AFR#%j%B&U^h*,=Hd=&n4g5I*d$I`)rEA@['fKOW"qNZ%j''e6@inFpc,S817s\7PfsF + h%,'p)H0JeNKFfi.FUF"A!D%pOk)TaGjuhbe9d7=p-2(C!?bneK92636V)J7,%OZ2OchUm8 + GO1bP>k:\YEChrGp+MFe=2YbG#(^*5q$:YUQLD5/%(`1IR>*UP`iIV9)2mHAX'NeP/L\MFO + _3;(k.g+BGJ_cb^7;[_d&+aWCGnV(8b$*R=r\HN@?4LUoY[e;^a4ke`?lAe>I'pV";]"Ye( + S(\U[//AVG1^'W4oB.RG>')5&iL:T;a)djAYO)=U71I*mSq:+/h>mljf`g+^uqX3KZ^3%,E + iS7gti)B_C89[JWjPH^p?.PPIboc'K7g3T%;X[;7a,+iN1Ke4c=5UO/h>r3+qct9CH$oKE/ + M`uleH6-G6&'=ATi + LCYXQp1IXC_*HcC*6SlX<[)(030jWoe-`odd:*FG*_qB4!)Ue>ZIIcRWc6!%]?nYf-gb>'2 + ]3b3b0A,JMn4RrDu7&>;Te#[(C(eCkCtS$j+IJQ`DmBU4Xr\BCBs+R_\J?7J/IRtmeW%n(P+i^iCYsN(V:R+SA@`L`;1M?e + =hodaX"f1l^efn%\9=%8?E<`tDf)Yl.m!Ia'f17]0idTj?/Uma(r[qZT'.0DuMJt<<3 + Ue[JW&TQ=Z0Y=16J"ZJ. + \oD)Ei_R[R-d7ip&%qH']5*5Jrlo0e")2M$nad&uhg0B(Ard(ARU3_n67fF#8<_VHKPbQHj + )g(RMDX@*;Y>5UUBi2fHB+_tkB8AspeI.G3q2i'Sh:9/C+C)nSq?X%ucBd)@QeL!TTVE9Jk + mB_1X&e@M&/kaE$Vle\Vkai?q_@d,q*Q0!b][lGp8l8:I4I/lqMJt"=/X]j#KM<8S*m%iaE + .?:^@3n%agI;W<.k1`U/S=!q8qO'rj]F2ld!2op9Cc5&?C:c6ND!_\D'"65hHW&ql@qm5If + )#ccp#GMfS%e:bZFEH=2/S;/6aV\e)>l?:R@l:Q7o'fQqJSBa1;Z$CWLW$](gC'L4FJsq-Uak?\>YIp + @$-N31;GI?kr#1;msI^"_*RT8LHUH4#k^m]o-@j]a4"7b^p@\DJ3_)s0m8Kl + sXl6 + gi^h^)48t7kCS0iQAJFPJtoFjF`S\GIQ]1TVtgDL&92&e4O(;N5#G_2W^T`D_G-ZDHYN#rE + hqMeF)MA)A8_gk"qI_Z'r$d8X;Hm">@$O@FCWUcXW\;!>+f0[Bq6lEgP"2$.#C4,C1"q,3J;H]Oi[#XHKgn227K!.dC:6l:KBk[tQ*#fKC>" + 5uWQ=Iqj(e3Z-f^sjSfnA@Yf'VH^?NO1O#4=7;>!fN"4L_Il736aRY1d\i-%\ut=bZ0S.#a + tl&ZlBFlG_j=Q4h)J#P>cnK.#jlEkJWIb`C&h-n;`^eX9C^c76AX]9+_G'?&UT<#eUQS1ej + "322Q'+#1t4kl/RD$E&'\-$To.e4?X86L8ujnJ;N`+C!=IK(i^0FjZ.#LOibso4" + _AVT&nY6A3JHBQM\--N%S15S-K8_L;THMKK8;p+_Y/W0\7`^cGpcZaqg]0o'$6TPTfXAgL1 + IKfN8&RCh=lhVgk!>-dK.(V0W0g*-dCsl`5*:rJ\@p&SSOd6W2-X_7I"a`e9>X5Rb5fo4A; + X#>\OahS]blsSgbK;bMS&)i.I`0`8a]+tKhKhZ`5%/Ona?`oR",0q7TdPh39a#mO2&9""6u + kEcl1-@D2X(C6"HetWNh.Z'$UaOU&o*WGa1n:d2l/I95qMf@%0e$)&T'8K!=El1\lkIe-dO + &bV63A['e)-M8_$^%+BXJi/gCMhp*(V7I/&\<8\$=RLD%1#b9rZP\?+?jp!f+7RO7NA7Y0,\gb^bS0OBg0-.a\PT!%HsN#X_HNg'?!8]/ + (4a`2(F=N!te@d?kNnWUGj\-W/+r#mB%AoMWsZI14XHQsA5NXWiUtfFhH*+!<=:BOK89\d5 + tjM@tM<25MJ'#:[8Lo8:E.YlR"cDX'LnpO^KTcUjMU8'Z9MC+8*%re + c0Gd]+Jl&.,*6FO,NR)EA*q_4CEnNDSbD;E:67@Oad"tR!Th,fKbY79E7#qUOfgS/_;eViQ + 1nDGQYsAAEO(+M"%=GkSWK.he<oD\Xd#(`:O$^d7`_F)e=G5,A[n_'=LgqsLMkLDfZ&/u_Nl,)X8a<40%8$= + XLAgrX-*#!FPM^BR4S6jRNQ[6^R7V8QM@E$^'I6`tlYp&Zm + MXNn:dgkd2Ri#`8=Lp]G0OeIH-W@*$1<(J>bA8W]5eTk`1S[i#&WUrZ.VEL.D1q*h + FWb7667K/7.`J=d@NEAg"4E!8l2aZDgtN`U2$7)CoAD3Rgu\\Lb\(4SJ_f*2L$O?O\6d>6o>s:melX9G*`*+ + X;c#k4ANL + gT2&gp"6,gLaA^+aG8NH7gL]7?EfPSI@suhKis]]#`^N>`LVM_SqsgaM2isLFqY%YmK$(2@ + iNE\^.nr&LtT:%#c[Q2NGTa9$>/-JMX;s7o + FS>_k>`Dj7,3-P#7T>T&j7?W&0CQ200Ja)$@gHbAn6*2 + '`r9>te>Gd75AoNQ\GM'ogjfI`WI7.NeM;g3l@k=).=Gc4.QFB6.Jtc0cQnrMAZtiFECL4G + bDRXD1\8.,8CS&+QY.JJ`\B9Br!fk!,SqRG=[Gj^W@"'ra@)HB#oJiE"?Mu"*2E'_L%VH`/ + #fZ-9lc7le@;%"&Md$W6VS$aEcts9?D'%,B0%4Y=a.IlPm9Y9U@#%ENS*HRd#u2=u4+JdR` + *J%M8?=Z/J0p(1g;50]NqEkm%K!mWO:&:fJRRbSE!n?B/AlA\M&)NfIXpHAa](q + "7#l&miM^@?Rj$4CBZlhi+Em#:lF\=NblGLMXI;HCMZZ*L8o4LN9D<6B<8-RmBE;7o!`tSLY!JipWnn + joh7k8ZEJ+UKLnqS(7?8ot?@<U8pec.Y;1OW203`=8._Tu$Bb:sc2X63++7) + 2sLgOQ3cCXXJ;Y31M>R&IA-S+Q?0j^R=od;D9;>5$q_/nLFMgT&da);Vj5f%qiG9:jL06;> + %FE^N'G@,N;Dg-DTG^"#dT6@pMNk]bp.pkM>D_E0F>WV7u3ma56RSQ?oai + MdNOtSjVHKHf6,!iBVnkOI8YC@cdnWpb1a_#'G`?9nb`jq/tHl(Ja_EE+Mi7IjSD,=&F=2# + ^G[qHihiG&U!Ztk$jpC@^uu_9F;%-rWNCU6"&&a6m`WVL-oCr0Eaik&r4>&;0\U"HQ.a4,L + Mn^L.*8DVP,T07#k7tOiH"WQV>D%1R^a@ET?,?EAjCaB@H\[n_litSg`),74+9mMSH.:g4S + C\p8U8jeL/9&[8;>$/(OLk5/eWr=_nk#6H[h8[S!Yp-qoY`EedpE[qXs`D0giVA-gB^rqUP + r;C<(`Ml+l.-KAVH*/2]HMonb_=a:oi23lI"F4KlBL=cOT%eRl671J2aYlj?YD#Snh2TRjt + UtGpd#pGNk@Je^^hc13*aS2p0XGrpsT;hY5c(#jd);;tfZ7]?K4k\q<-f#f'E*M@a%m8\j8 + #Oo'KoCH2^d#c8o2pEJ?[,3SopO)%5Ko9WV7,TOKV>+*HJ4Xmm`HAV_9beFMnogj'\^?AJg + 1Z=.T@Bt]<9W_&@.9nMPJ*e4#j,[b2TY+7E;F4XWM<=;&Z-&CL/S^c&=Lg5qT]lO?aEklO" + g(!Z*+*;H/nE8CC2'T"2g$5q0GsnhVdE12M-*1?Oeq91uT2aFU@HYTl!#@3!oa9uc8PT>q5 + [b8j9ZqF';9CeM)`Ui7hbKK!]?0nZD#:?JF8UIB"cc + WiN.%&u!)m)<)m5EC_suM-MN*(5Zs3c/?EQ]YoW[-#9C2<.9^_h-J + 3WDib9rcIAWkk7p2M$GrDYLU:pd3;ANTqR72O[>V5M[?e7BTCntV52KtVjcX=P=_1i(KJV) + 1*4*#U:p&[Ms,i&b.g4EqU^6+`]"j^D)+/NC%U?#cage8\_7?'>I#U2eS&SPlS[Jm(ZglP( + KH#taW)T*t46/8O5,YljC15%?WLgs81Na.5ipjEV(,KV2a/e^YdR.]=ZBRYke;n@R4G"F/% + -g5^FY*/j@91%DXmf>h0eKl(G/2JHroDh:2)JYi-3[;gZqih90l!k9`?"FWq0:2Z+i!`MFb + eaTQp`UgAA;r`JJKRMD3!SZ?Ss6?.P002!6_=BqKqpb85,[biLh$6>&!d,]QPC0j"Ak%>E1Xa'8TTX9"iE>XMZd:GBU + /!$*OAnOm7)*Y$b25\mYT?WND2X/1DDC=iWVCI!jhI158FV6^U"mUrE5mrl/&:6_m4$D[&q + 1T4u;:O=-eDI,:L:1.t\k=4nEZil9!)Dh*;ocg"E5 + cEb:9)EAXMFjNaBbL=Q*S+WiTe2`]83JnG2$7 + pV0(XdYp)*Ol671BG&HEZ[r;]BaD69JmLA-fenX4uHKAidh"G,u=P#m-Vg7a-oj8M;!*tNL + BC=UQ^Xa1hhtSLBn'0t0=<=X%RdGGONISLiVYJ]"kCPCb'fJ#1rF'0QC7K.B_cVA^?lVGfn + 0T$kGb/n_X4C5)*IYW/:A+Oa-cj&@P!&HE@s>oGodH)WoH3SSF + dlS\pS!=,AQ_>8BTS;*E4SnO)^[ibB\OEj=J*M1+lbSH(F).X-&;_rD9)q_^NdRI@;sgeB9 + l%L?C\hT%HeIc\U1.kPYP-F&dS3P%t9UC`bY.eq;B$59'GS + /Wa&AY05M;03m'[G)PpFcd^WD%cpug[cXa2dT[Z.DA!Vg[hV,1<\&4YOrq&GmL7Tkq^H=je + \'sThU24QH>Y=V^.[!hY>@>-0cIUU3X3PgDJCmG!?+iq*'FWnLqh*T,$A`B8uH<5KJ*l-04uu)!kQ: + ZM@ibk5=D5oA4uDH65T:XVSM:K6D`r$,pKmmXH + ln(3r[52I]1]hBY>`)^?`j.FgXkWX^\#CHeb\01m!YM6pAX72qqlnmINQQ(s!Qq+hk0OiT@ + Nf5<$C&AnoQ`mDY)`NN,H:AkFeaTF63%?THW&E=6l5moA1j=.1l0]qB!h%*?Z&((=f#(G9:> + h?2e#LL!m0*`#M'+p?G&^_X_0^@L,%gFa2jq/CBd5)G52\Uc^&lB)EYgt6H`tXQs'[]\k&Q + 9EA + &p&JGIBkm:D-.6,Y;$LCs*>`Z;b(@AR+sS@B#,MAf2X47c; + /A<=DLH5TR^,^3&^)L6QRS)dgQH+OdVB%"DCa.U!"sI@LmD"bp_/eT6V.N14EH;> + dq'2jT6J=A0JT.`Nt09ZDm'/MF;bo1TT&onX+nU3+.74oo60d`,nZSmDe73D*>+>["U'4Wp + n__\$d)RA$7n_l<66SteULeB^+1M2Nn=X%n\,tie8PD)"qQT9s?0N!*P1)DlY5rYe^8^jc= + _V[+fM*"9"18:$ho:%j@a#o3j3V%"@13#?a1HMIXL<:DfMC]2@nfm(;s5LDClX+t-`GT^_N@%D-6jaQ,dXp&1aY1,)a`cZL53X*V)Dl6)A + Yq'$)1%dP!Cc9r1`E';H*i\@re?n&gS,p37>h0Zcbja=2'NE-U_?`"%OH6X6F,rk-X;J7c@2!A,#n.r'_]>Lq + bT.s=4Mb;Zd1+Bdjh]U+gVbUob`'BdV29S;.%f04k7 + n)APZT@">s3:7RH'<_0]Df:L$o@3PnrEL-[e^;+C.a=;F,3(.)@CKi$`p'jRD + KHq;d+dGJj+q&%L1*X/U+t7s`PJ/J%_dlfkCt?l`(.g=t%l@c& + (NAYa5eTd-q_!D:>J%#^oIA_eMLcBXG]4pDbO%rW!_ME$U3X(?QkY?;`TLEgLcdLu:2c$ms + SZ0t2rf2^"ePqe>_pUBJ&Hei,$5a`FqlHIo;K2Us%W6n&h,FXUB]U,")14"/]23sIWhGBJ* + Qs&umn+ZArm(:.g9dsc3p+Yt99jJlH$A0JGP@WrW:(XHhSS>DqpIC?\)28=N2"+FiSfOBpP0SWKD6C2[f:R7Af;F4@\R@dJi/)r?\.r+Jh2n5\>+p^d=V"C2`BDf2jo2k_h + :"WL)5Ds+qKH>0n*2A.9O/4p)5/r]k/I:NBqoNP45.^"b).gN+=)\="Ym[1Q$GSO40RpEbQ + [5[inhb=OKWjfS22Lcl_NJ?:&u^R*&Z9'PV=IF4\`=FYk:CE(=N6DZY?NajYc"7uY<8@X+% + f\Li*ZRu_fd=.'#R).Q1(WgXWTU"Kr(=VH`=4cu!uKu+RBq*^UF+\QkEI#85pLVI<_ckPT0 + B`c&;oL"E/7@JEJQY5iUQ"a7j:*TE;M3Ein<,ieDAXo13:YBELq.q2*]hqdnRe[bKJd6POM + (ujdG(M#X62uVTE&Y9-R2N"Jg$U%E]Kc30Mq2I1q+I@U'Hl*&,MDsDRMT$#_,iY9-$db1)D + dHd3q&D*=EdD?\2d[egS!3^R3HuGe$`,Zm?0dAL#Z[=U&RdD!F]"./]W/\K2bf:>bZjN:3^ + @mqK,XsH%291,8Ib_(q--,:R^"%+^/2j(Ss";Q(qN`Wm`[\Y!3r5Tl$!iUfe;*RH'*,&gu. + (Ap)N0IT!n;mrbTe6-!rmpNY)-7 + 5Fk>/b0t6V4j9-\Q`j;5u)k2)nMaL0fuXURs6=8ICM + B9^X3"jBeQuj$(["bP+$q,4:aD3^LN\LA)%%#*$Z60!kGR%OHZH$g:rt7g;*SDq;UeV:hc3 + M-,c5j&K9[Jl5Zpjh1hA`jsI/Xhg@%7m-Ck*?tj&pV + f6JX1U78$X6#i#+u;LIs5#urAW+bi3V6*[+scZ\gtVq-.SPj"T6?']Za=PO'*K./0%!]*:$ + [SD:b>*"$L%hI/VM6>M%Q%W`D3]SVu0,QK>bVX*7,Aie,JrRC9m3a.%Frh5T.7[c'=t1]8o + EGd5nl\Y;D8gACX!4iuMcf%L"POSrbEIG(hFcbs+3JmIKq*V.VVglU@Nesp%'=]`mo>Me#+ + i'%\1%):\UV;L&b,%*k!*[BZN-fU^Jinc?K*])h_2rgJkj5*#]*^f!p8*$77jPE\o*`M0,= + 66#Xin\Q/h:(=HBBGd#F6oA7SL]=/\_:8K)ub?N*eWZ_LZSXg^Rf6**g4-!(5b9pkanF3*i + &!tMr("GeUEeL*jWU'R"X:+0d)>>*lI>Na6]D@m,$(U*n0L_fBo0amG?ag*olZpkO+r-mb[ + F$*mOj/p&TX>mlpd@*s;"=fFgCVdFlS+?PDs'"m^t)ek:$$+!^.2l10cs*a^N#?SWfkS+DS + 7kl2Ik+%#EMbfujN\Q&rtIWpmT-l/FZAUPE3!AX:ICZ'"@oD_8R+*+?q)M7u1[i\chT3b>F + /-Fde,QJ5J"D#FMDtdV.q9!:CLaVr?DtkE-_P+gC"%WD97M^Kcq0loNs24bA7UM2Lh>Akt> + VYoD>qs*K^u5V!!a'akXo&)*Q2eo)+7cV'2$&(_)OP"Y=+VBPtQB + =uH?83:A7cJF?oR9(LO\"D>Bf'F!(^*Ieo%>;&@540Di6<^XVD+=,9dc.Xo_sD-Thss;=u@ + @`8Yo>LPhL7DTi%dglBPP\?EmY8;_E0qmBO5[G#"Pi@-?`mFPN`[.&`3HqWl0 + em8XaA@a,n$3e"KHB4E:q*u.9d?I:QYSh6cr'oS3N,m1N^`DVr(/5%bJ[k:=ZoY3"K%7@ZI/M@1[+?"6 + S0eapE1/T;kW);/-!7SBA`9j/Alb:t@mh@71_Xp_N + 2kr0g%S>-U`:,Q^1qEuX,;]Qo<)keU=&r>/F^E>5%rq0H/Fi)Pp/6^c/Qa.&au#,ViN7l2a + e4?K#TiXZ8t.187qC2;eL:!6u='\f9\sMjQ\VI+4DuZ> + H+l/5_ + 3j%[:/-XpG'jFf!k2eo%/mF?ghu;L'>0AFhY;brSe49J#lZapM"+T>-0BKeGG")F0,?W)C7 + Mrbo$h1T[t\0WT>)sQLKYeVpYk*RZ^o?X%ASFl:Smi85F:R0I]CGf7pjfeYr1$VOPN*N"n& + !*/HK3^LjZ"l^-6\8qd4^DJe1BX5r^:s87VElm"'&[2R(;,dY\:6L&me5i<`L(#pV,UBu&m + J"eg#kL(M?B2"e)T(=Lu9:iX^qk;K&fe3AUu&X3^f:>VXB^k&X7.`0hN'4Q&ZM@i9W6&5*_ + TAp#R7IZRmLk8(sA7&>5TSu49P4E'dbDK/o2+G+/)c<$t0.4^LU(g(R4SW["LU?&umV->?auGsrocKju8mBP/ + T/ER<-`%NSPqeWpXf'so3jLe;.e1hZA>fSa?uhf6`E,AS<@+4e2MY2AM,A"F7o^5elc1s\[ + "5&L0QSp.XU9JJ(%!?I'kXRJ]"",>ni9ROAs^T]@koL%]apC(_2QOi<@JXhWli2[s#$.DRJ*.(M<&?1M(atp#!CuL@JS3a`lFk.>rD9oj58`HZ$oQ^')Hd + gcObKDmf0(h8Pfb6RLB0o($%[%R#Jh6)"^nt\K5buE_AGcFL7B]?XW-]8\)Rp+] + K(_Md^?C/ZDNf_"?:@d-cHq#'k4gYMfEnn`XAgS#+R8`0ZCcD\E=lB]1m9Zjo2@6!0?,BC'K.1kq@ + G)J2?M@I#DG2BoIEP=Capn0.GP7+,53M/%HAX*&M]c564Cj;f%uobf4.]"JtrSLL"Mf"]iV + "o + \p1+>!q@:h8_Tp&M<-dGH&^=`05.X:&2PJo(Bom\u"["Of5NCNmu*.G@4.D/;X#DhBkmBOT + $SI\?=F:=eB$c^&Q,tpE*Q8RcEgf@Ch:b\N*"NPo)\a03$dS0I%Z`1dTPX[YRX(-;TP]c?= + 1&l(d,]O+$R/M:$W)J`L&LP&On9apq2T,ojjtF7Qll#Y.qZ"m^GRSGTeerYaquLTu"ZB@:S + h`[#r!N:c.med7CT.ilEWG9]?.%,X>r>n=5b^A6Y_7\%r]+R*RAe#iF0m-!2o&g$`']XO7!#@"Nd;&J\U$oE8c;i+*>#9mA-+,R.<8pqOiomKAkq!SnibNB?"" + QO-A05O+s5JQmj]@$NG:1$,?Qh"[>b5%Zto6t\fo6JO)OrlkVr<^+2KVsWicVQt%B'[+QPF + gq)s(j^f1Sr'GuYcj(;@-lN`-S-^qr+E+GfpTLbmSkH?4p1m>+FZ\ + ]BTB0T!+F?K^kB[Ri]YD*\`?4LFDD.U#/s-#2nWu5bUUP9+ulq][8H$T"EVUOFGNl2/)sF + A;hDhr:,cER&.Bci`,J$WC^BB/`$.<5XDnMu\M7cM6pL_Y,\OWOE]Diq7oY5aFC6rd'YNJ5 + 4S3,Q5laEZN&Gb`6gPc0`!o5\J4SaHk_Mc;fF/Sq1b1+3<'ZgX)4%\A + D7=;R<*5bKuZV=sY^G)0PBSSU@_8j?_7A,mignb:p%>dI_\eG\!m,QAYJ',"Y9#SHg.-Ea? + LmXF&,3#\$X@IKJ-(p"OL(Sc<05SCl6F.!R3=Q8BO%gTSLeV@`o%/7= + ,;9!.n%G_?a]a]#mQEr<^gWOEdGt-M*@/]<@q\$]k<1eAJ + =Gb@k7tFgp+Z\ + <\_N8qjNS/\BcRVUg_G3`R.+Gh/Mc^t][@ga0hm28e3<`8"A3gh"L\FiW9kaP<'&gni0K[E + I@EbhUanguZh`["Y8<]\O=MRYo4OCOn'SC"T!)%/$,rA_5ahr$ + @@auIFaM+csdN4n"Q-0*iJ/_Gd,^[p^H:#"F1kMDKghGrF$SS;DIC0mRJhDO]Wp$\s+hO+! + &7*GVf!6AL6oAEhkg10A\H::d4L(L$FT]ejo=6=cel]th,WFl#cZ_T + "5m2`N0X,H%JX==U0p_%i2-j=ecuWg#[jm/i1:D9p(*$t)W/dYhqenO/e6hu']Dl]?_%,N^CQ:L"j8E?(.jJAY/[RF`H+66hSA9LT+p.sc + S:urHij@2i)2BZFD_+#>RAL:I>G$!d[=P>Z+jZZl,8K8L;h&XmRQ'pS9i6p`l@-/55jsFR" + 2Ikl=AEHp(T1F.fG%]rlB]bUpk,)nU[VP$FD!';ck2pRDp2B*uE9A!Vk9b642KS%NFQZ\Ik + @So#G&EU@A`oA)kGERg[X72WI-9(/kN76Vp4)91JERc"kU(oF2M:3_K]lHjk[oS5G),:9M! + 1.]kba7$[Ys@hN9JiPkiRogkdG'mA;?b=LR++(&[;Sl?YNBr$YG]_%[H:5Q"bE-l&M4op6k + 0RRq\IUC!N,\fRE)QR-DV`l!C"I#,2@bUM<8jBr7`kAtS?pV.t1Ll#s&kVOd"4W+qotl?9. + A-Eh10VX!TOCAtMS%\@GWXD15/CL4%+hQpqa[VIM#CHf4CSuuk3U[([fCQ>o?^6e/7[;5cQ + CMq"**jfYl\SP$QCX0k6m_N\aX)(h*m%0a5k/6Nib\PeNljh5'f"Z$-_efn0Co5QqI`H9U` + pD!rCYm'J51aTla_`r0D4])@(>%rfg2)M\m7,LjL>-PlbAI76D=5j>hUq2_iU,4SmKV5/k2 + g<3b3j/lmXEsZNnWnZipITBm[if`T%S#Dm-]VuDPkqOY4$9Un8;j4m`+AVG4TX,ennIYl%% + ?@#Q~>Q +Q +showpage +%%Trailer +count op_count sub {pop} repeat +countdictstack dict_count sub {end} repeat +cairo_eps_state restore +%%EOF diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Scheduling_states_2.png Binary file 0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Scheduling_states_2.png has changed diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Scheduling_states_2.png.bb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Scheduling_states_2.png.bb Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,1 @@ +%%BoundingBox: 0 0 785.04 307.92 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Scheduling_states_2.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Scheduling_states_2.svg Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + Blocked + + + + Ready + + + + + + Progressing + + Suspended + + + + Animated + + + + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Time_in_VMS_1.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Time_in_VMS_1.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,943 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.8.6 (http://cairographics.org) +%%CreationDate: Sun Nov 21 13:32:58 2010 +%%Pages: 1 +%%BoundingBox: 0 0 330 127 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%EndComments +%%BeginProlog +/cairo_eps_state save def +/dict_count countdictstack def +/op_count count 1 sub def +userdict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/B { fill stroke } bind def +/B* { eofill stroke } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 330 127 +%%EndPageSetup +q +Q q +q 0 0 331 127 rectclip +% Fallback Image: x=0, y=0, w=329, h=125 res=300dpi size=2165625 +[ 0.24 0 0 0.24 0 0.991089 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 1375 def + /Height 525 def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /LZWDecode filter def + /ImageMatrix [ 1 0 0 -1 0 525 ] def +end +image +J3I@:BHu(:pOk^R:T.dk*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H>q_R=Al + C^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/mioWjnAY&^gM+`4=1jRLW!YA=M/6)*KS9PE`kN%="Tc + _Aoh+fk'&t\ctIN)4XQLiVpoI(>.nOW?*DmsG$@,,f58"PDKfeAJlo*B]ZT!'31_l[h@F?.u;GBO/Fms$q.0(\8JhnaScr]a26g[)`OH[c!ea5-IbHN.>J^ + &uma4O=2qs$*R]rqo%N,N/ekE&6SU_%/pY#XOP%r<0s`>VcdTn?Vp$6h#Hs$,(:o3t4UJ1d + _,U&KE;87<)6$&4UXR>8tG!P4okbE:do]7$5Dp*BCCsHPf9CjGP9SnfmZ1_NaKPr2cC;DiIe + =]UeUj&Ji3AS5+DoHeiff@<$:=41&B!EIOt*KsUYFo?So=&oL$B%e#sM.tF26Ti%akKdi"uq-J`)nJ%>3UV:)/KAQu + 3q"iY[\%M;jo*/W8X+c8CUAR-m+uj;AFrOfAd`n:WD!U$%]D85^LXAf6I&RHBp?D4'K(L2E + LD\^#SOB:9<[SS1%?LS/=k^5o"&3Mqk7kIM_.VeLHHVl/fmm]ihX]$@^_CHC=GWp8=[_6.G + Ip;s^Yq_lp-laqo/ZtJ-*Qb..IQLh\)\o,L%Dn8]q]k9FI$c6e.G5&spqr\X.EVpUTU@"*&ft'F*r`Zd<%L:n'Gma-U5juI-3<;Bq:#`eTLhgA(u0T2b2\G]Va`?F5=$Fa + S4O8:_*l/+/6J1*a["QO0C67#A/A.DtpsrS[;CL9X2j^,VAoU1@>\O]jA*LoV*Hll_7l3\Wu. + gD$Cs0o&V8,=2&86dB[m3_Z@5(7&DoU]c71;@Z#a=UcP87#@%(/k/Cb*@'WuOciU;8kE/;- + 03"4P>Z9n8_H6SjTM9A;N=XI=\U@,7&cGLY#\0J>q>#iZ'J;5>"`"8/`jp]QW!6X9A+_Hjo + iMf;\!81=cG/u7*1iq/nRf1SMTD]d@+!/C/%j52>"qTQ74G'4Y*Mu>>ta@_(SC?:RT!C,:$KVWVc<)U + ;qcXq.?sn2oa[]q>)b^V#nJY"XQ^N]^s)#qefFn8WWn?_:hT!NX&Vu!<@X&2lNHIQ!!9CU> + 0U497.@3VEiTD%a&[k)>cZDP\l7n7?#.E)Y>t#)=5*U[lihs1AJXkWg1lP=kXU#XS&9oSCt.A%#>0[b2c/k!c>9P%:Sc29EC10'6EnSTF&'^:4sdZ.r!GF03^=]2rn.IY7?\Q>6u?ebNCn"ApZf*_E_HiJ";jp/_) + 0*Yh>*J:"UUdF'/u,,^LU,UTdM1:S+rF + &a`=N!.M\a&neM@SD'.mTqlm]"8]`]>&!!l3j_R?R2r;9E$:ULYi-N9tdG3nW=,A? + ;b9Ectg6=cW_tC&aJ'L0>W9Eua5Qa]Yq[DpD>F'G.:4C2\Y"[?O"_NZA"fm$;Y<)@j+:h#F + '&mE!Zn01KX2*MW0[iR.>i6"rJ6Vjnj+ep"BqTFWRC*F?akt$TUM_D_N:.#Gp6La#Y^mD8+P@HL2\:7IeDpUA,N+pNcX + lB:e_`f#t7A>!L\e4h0lag6p5mfm#1mDk-dHaC5)44Zg-*!$13Edk:HF4@6Ca-,nun5[n?E?T[0mODj:G@bOBW(]?H+Y8^rab(OC\L=M#_Fp + S<.jo&?GjC'aMPLT?r0+Y_L1pTWSjUWt:L90UN^HS=MA.":X)nN-,8b[h3TsSM7Y>OM7B,_ + XXVO"onZ'OO4K_K*LhtbqC(;d,=dMr=3d.%^:Jl&0CMl&0!>2&Wljf0`M\=#+Z?1$>INfYs + f'u)YHk@[1,[Q0#jU-V!YDT&l57j:[fImSA6jr#n`>kN$R!%<1M8i\.CFjd#+IB#cqtNSM1 + cQ;)Js35n'aM)DRj#ER:5#f,kTI*ASWYnfZ4tf,#P1*NAWNl2)4ci?%OP&Fq\'.H;S.rrNMI++Th&d-.?) + !iRjYSFR#Zn7j'9&LJsO,Z6QF12un!-JDE+V + K*kDRUQ_W1FE_"7]Y$dbQ.,"QKik.uZUB;[V\#Ik1#p/II*>'%\aS)(+r&,RMQIo-H+i!hE + 6V#H>m".JkEjfe9I;#kK](EBc-u&.K9^2+d`Bdb?Af))cPM2QRoRc)!0KSt7\l/'nA?1Nt4 + q2]P+YVGciP;a:A4 + ''gNOs#B!;3AZtl;jumUT.Vp1S[(ZS;suFsYr*3'dF,nFo#T>/bbL=4XE3&Hnf$^JlOqJ)T + 5GH*0_h0D&OF^m2lY6+P+`Q?))e1@.)0V + \0r4B+C3oPmAORmZIn6o"!pPXuLEbs]AC6Bm$WoMmonbsg*85."dhP\-Q[CFI[G7oZS;P^, + 7;4Z5-t5no"]@5Oi\)b'Bh8HH^^e<`mXH(J`>b:XU[g'.Z1_)!t<4 + ,1RQ/ePe-:j$nam!i)oYpP=H8b-W1Q&#aRI7r+-=Z$^eaidQsRi+)rS5lH@[? + 4Z%`D73=rY,R4nuYBEpK@1J<=`]UQ.9.4a&hro>a:!knVdG^M@e6p7'nKgPUVR@jI<,H0Rb5et0p0\B407YB9mm*p4$h!WD_<&:"G9@PQ*1U + pna'27h%-l,`r)SefXWg!#&c!F5qDMLCBIt:3RA)!?RR,K20+53%KJMnV"DJEO\pS1JF5<*pnNQ\N1 + CfdCDa4GGdE2Zo7`Km]&2pb@VmQ[VNd+V&skbC* + )%m>=eo:,$0S3;%IipsJk0J#UnZ(?^a'07B6FSG=/[Y\(;r,h6#I@ehT!3AH9!2jS`':>%^ + \$."hR1OE6IE1$BamX^WHTp9Q`P*Fn)Ohl/8CRJs*QMCu;\0ZOr\!NG$P\Jm>)'P8Gc'!?V + -M_"QQa;<)R(HFTO@gXq:$1X,Nj*#qH$R4=fcH^3/LKuE=P*A8)6BAh,ESnX$5pZC)3%7gV + &Pf6RX)lBCc.amLRh24SUoajeU<@#kb#EFS[mokq.@nS&q&0:9;^FIEFaG[ + 6ZI&Z'eV-UY#,/SCV_ri0-FQ8n&$.PINqfqS4*UGs?k(j)?14a_R,>$=@\)G,k_8LF:0-(5 + 4.fh80QUnsLo&"4?kWQ1m&mot)_Sf(D'H7*1uI@g:nWHo)B9r4JnO.Z&ATJ\=#Znmh*VS)` + J(_>W"fj=/h@%>kubo6Bg>*#'0ANijIg_lSOd%udYnB]C0D7LONGVaV[ + \Zp+1'\GpYCWWb4rNC0.a%`B1RlaWlb=X8CYc`+C>">h0@l6=eZ;lYi4!Md\d+>l[E-_%rf + )_peKT + 7YogW5o>Gh.3nYo/fLRtRYCM%CVc$5ohRS+*1WSGKasSGN*'P4u@A,t;%"Fh>&nPJt0R+1t + fcTDKX=:><6,e%K1N]t0oOqn5ms1od$*]!g_8.iDZPV0+ + I#Hu80WjQ%-qDjd#9>>C<`!eH@lbg[ZV3Kb9]KBCrgjlh<@sQjB^`$+AS8D.dEMtfN@N9Xa + >^adX[*"o&`XR^B11eP-WQ=`]bGqhhGP0(NRu!N>V>HABr25JhAV3+Jn9h^jmgm@\-cfBj3 + 0+i!!;9?oTCO^'QbS-rk4n@:YL4"OMcW[d2si9dPu`uNa&DQu7OFj + <9Z)-hJ2!M>8PeXjISM:^E#;iC[ipg-GeM3&Y4@[*Bg + Cu3jmUNkc6\\*K&O=Fk(=,e[G_5$TH.TQK,++:[oPJ(cLJ&Y5hi+9C9cb2.PUT5B/6^]E$/[FZ@UdJY)pl,h`Ze(?Ge + WEn?>pib5:2\%u3`Z775rBiGj8)/sQhjmX%h,WAS"_QTtgHB)=ILfBU^YBuZgjCog4E@!!- + 0(Qdh0q&b>3gFEm`GAkkPgFCSr;h3Q0EabV`p=/^7gsDTB\:RkVgH'?Dm([[&3i/l[HP5rk + Y(q/aP[CM8$UgZaVJ7^$=sZm/GE"lPk_1iU20Zm_/_ihXQQ]h=!*BO4aQPN1o]hq=&W9m!f + ?2rt4N\"n=ep/,pFUYdf5YS0L?Us_f;>!. + VosVX.IpMb#&b[;Wi?(^;heVsNFn^B2pV2.Ns+0quQ.!&4m@T+-s,m+AQ2,otq7iKrrd^(; + Pg7[)n/nA#s0;Gc[JPHaqnKiAl0J'BL8A,AbjC/E>es4JKj\\U*8eQ?hojAp_:9]ir@1;`s + 4FUg(&gC#X1bk_&,6hK#mGrIi=MAU/f>+R6fJ[pPYNYBMacY;oE5BO$IqjiDb+\'%'aTf5':Nd`Ufd[b^BgS(6rrrkCYd%u_1V#kc)CT,7gfpDJ= + fj73jp5#32=XOA1K7?O?*BZq-3'^OnB8YsmMoajfWY.p0!j_O[QtQ%Pb_&9.WS_Xh + *$,n,M8eLpq&GqXl^.\(Cb+6kc-pI"VJ$:I/luu%h=#Rc*%l-pT6eQM[[Gftj0RdLD]0Z=Q + d=on^H\u!T@O\Np;A[Z@J]1Nb_gMT/P2t&XM!i9i9WKXX8K`uKOYlhEMB9;[?/Pc%E#3Y5-$uob&83>E[6Pf8Ef\`e]01.G.' + c^Zut_c`5&Tn.h9B\$u=*9U().V-;_+5=Y;V8AU.unD@N%ef + dY'V8m9SIO(qnn"iG=bG9a_;+L]/'D,PR=;.m5$NQZTRGGJMfTQa"FA^iX2N7d!s"aOGsF! + ZGpfQ0cE]\`;7JVG941L4ZA%BEbe,$0`f'ZF`!iCC0='l&KF8]"HIeu\ME3065jaj[;BYRT;]&?RW#3jqRl^,k]kmpSsgPn^S&;&`lDuY4(ep>?u/6U1EQI* + M#gu<7PU[308>;-DTue4&N.e&DXsK**lsSCc*"7*nD-ONe"Bc\/!=r:G&i6dguga,oC04UX + %SnVe^X?m#D:u[DI4dDprG[*-$C.In'EF&WDChqSY(&PVS+U#ebGa!]9[elCO+)USAas5b+ + .XlfD<,mX57HJ\%VT!Hp\(V=A2I'a5MJ6':4o8YX9/92`hJ%JL,uHJl6qtE.eqUW:M]/M]n + .!YFUi@olBpLMt;RYS[Uid5ld$%?@]-a/#$\iLEKg_K'thC5m!GWM=_KomV32seacF?`#XV + pp)cZsGmE7Q+X(e5RmL0W$-(1<?linBnp9k\a':b8Pr:!\["8FV(906m5DE + R`'de!XYP[M6UM*`<*dgU81h*:\:_UPFV:j"FDeurEkV=b5NB$CHFpI^6<6=6;l2hJgnY)@d*tLn//Ns=.p\2PZ]K>DE^Y`kelIA23B..7t:ma6Y/BBM:*.K'8\8,:tt2tEP/E>Bh + nnD"M:"`p0T6t7+[^@M'8%R<6ScltD^U]K'1Y&=4:$? + &/AS"W52L(ihm4J6g7+Oj-\93NB;A&6]j + FOlp[H>mgOm2r,L-4/%^,tZ*>.>ZJ.$[qIo4'?eUU6>ON*,(ZA-bnmYGV[a\H").'>K>I&o?f@q4'B'r5*Za?s7g@B)rD=++#kO,l^8cW/ + ar1tQ7T$uKV%.YJDi3Ua9h-E+hfkbfdO]0j"hKN*lD]QF%UnUfEbL:oYebb]bDK&4KgdTh3 + c+XtM_U?((gM[8n_3d.\.1+(BBo*G;GKU0JMfEu\8OC/crs%:Mr4s-Kp.X(HrQl2;.II5*R + .^mo^s"S\0,>A.R(_;6Z=A<%r]@*ASpKD%l&05`0t(2qg0Yh>N3B*8;%j9[K\;]Q16tk]NM + snWU2!f8AE1ZH+"lSi0pf1H7)7K.%;&9KP&d^@W]=E.jcXnTigpk+R>3S14N3I>7WulKT0/ + @;7KTKT0Q>4FMpH3&)-_L%A*fSWqP\H+ + SWc_4he8n[FBtYsL[,qM;Giqe9]l>GXDIq;M(Er&q*N_-n0[uoPYNq_gLg3UI`6o<#OpesR + T`@fn3qI"Mr9p5c*KAYI,5uA`%CA[5,`J&?j^[,mSMFNA,k@LSmHrlFGEOi=";c&_c)7sn7 + ekeceT54[IjI3g=rN[Q#5="g%OSqKMBd5B!N4tpYqqSG'qcKQU'XV5?76fZ2,k.EpZo8^+G]8p9brVfJI6u,%?`bl)2DpT3(=k+,H#,W=AYA$fcHf9qSrX2o@jBD#=gap&@q&q`%79OO(Q9r1 + ?O;T9_?uIt*5$YLEGho@FN5B"6TM#he;Ud$_YiJeA.l$*n_:UXD#PS0r9H,tT^P!1#ajrh/ + ;^^aPY.e-$$s"V5p\56J4%//#NtG,jm2"69e$+bd#_O9ka1$F(]F6Qjg^FGc2ieq<]!Odj)rA??-+K%t5 + iU\;4?g]282?Do`!GMD*$IPAb/?8'%V.^b`'-SJ:_@M8]^[:9ZqNk17aL9"]JXD;()4IB(5nU"VENu!9ZuF8LLd!K1:IAr#U%DS,BQtGYMFIRRu,Q + 2W@GmiqR-N8a)JUZ1jOnaD_&JIQQ0/AK<`L&Le*J]8=YQ.XG]W^N(D0P+.S(m98uKtO@]kC + 8KGg"U + _Ko%`N)I#9W(L1W(N#J8t;nRXK+t'LWWgi6X6]bm&s%ZYY,D09,t61/$D<$\I\>09/O(MCq + !&b\4_dk9:WR7%'<*S]$&=29AI6Sm(Z3k^e>$kbIcEN'Z3U,`(WkD9O,S2Cq`RgLWjk^9Us + 7!XNO;MbY66-a_A^cI)=+WcqOqr9cVSU/CRo?MQ*)Xs$;;E9cI1RRd/cr-u;B6p9>pE54#))q$!M(Q8BI2)T,Z9 + T#K\\+U,p6I#57Zf(Fe.\pC(*Ls`%6:5U/r.aZh]K[XL6e5VSPgdXNiPYc4C$+5+ + _N7uq*Rb6?B=`bY&m#+s`mo_F*=?W-#h/nLUFkLPJ`usIPe5KO%PZaBBfr_2INLTtPSLkdO + 7/7YQF=We[TH"%`;D@Tq$R3\F!]Gk:In/:#4i+nOA&m>CU + 0E-J83@G$nO1*Qc4kW64K5BEiCCmC2Q>_NP^RUW0rEZd!*Z5B9gu,:b0aF'=JG2lgYKBDJ; + @F(iN.9q>I]Ppc,!A!YRcGZ]0n?igP9&SF:#Xt)r8QLh8GOP`NoH^O]C8YJ@PuWaHR.`^.l + aS."g7\mTUUD??OMfjg85kOWN3UZ?p?9qn`N#p^1TK%UeX((kk84)kPI6PDU+3WO6!Mc!U+k>jY;>gIGT)gg9>8)`??*36Y_Hh-V]^Ln4/L^%FX5 + p;)1POM1J#jnde<'b;/J?e,C@D:Ssj;c$b!;_9fV7I"7n04)>X>?aTFEo]/J\r2RE7jrUQ8 + IO=PJR@(<[l,4`rZ0uMq*+[s6TMVFF7R6#R^)Wu@NkhqI=L/>q;rKhP+%AYXjrYaC?BV`mi=4UIQ91L + 8.+QmMbml5Tjuuo?j('BhjLtqV*aK$m6Oa5f8--Eb>.*F/7uX$1MIoHA7O=YF@:eYRAbj$Q + `_PYC*b>D!iAfB.<%;H82i57W`h%#.@ROdHJ_kt;?BWFj[TTV/j!SESAJ2)`-:#%0I:j[]?.n;pS9T\G_chBM$*C,'FuEuYH=`+q9a4eRk'?.BJS + 2-4`&$K,$GU6A*FSI=BFV0/*WCk1`oLY]Z@7uCL5#sj7R_,R^h'^*2MlqgMWJH.L_b+S*d2 + "9NLh29fPW$C2OWgkBaC.i=TX<=A7SsJ0.H2Ah$_],'J4&k?0KkD9YQPH]l31YgKJiTlCEa + rY"'fZdqX7l6^0Xs#+gZu@7I\rl^9u)ETC7:[94[ql96q<*i2t=Q/gF6/9VE>b&_5mMBP`j + #V5?-QG(4Y+PjJpLqtVOFu!gpYK";sCrX@-k-8bSam1O\/Oman/s#@LMp8p\7d9:eq$8=ASef + 1UG4V:8k%n:KLs#S`C#h^/Bn\`^LJ@[,VX?lrLI?%M5pl@l*s7bAo5OWGDbA#>-O3+>nLAG + _-[uHlY%M[oMK)mTEJFL4hZ9;Z!q?ljn4i9'k1=QYgW*M_k%Pe!f+dYMPD9WpMEQ#;No7u# + +E>dhnII'B%h_&J+)*)&DQaPb%jDS",B='Jl2F&--RQMbd-SM"].Q(j[8cQWK6"-4fi;YCT + -!Mm22Ks#kPlgENef,BEt9<2`BK!]Eo;#anaPEgF-0DlVaa>J/$!S%6g$VsGL'jkY@'rL52QS%a*;"a + Q[o%-m,f11!8]_%&uMt$]WO'(t/J+]D"]2r3UO%]/mcunLFoM3g)'?bEGE-3[B0c\`e`oCR + +jD[%g)IHOEYq?'tGRG('pR(GnIl)sC;Wp`K.k%UY2OqXGD![c(4-cYG-K00^VKZ/1p-47( + QXpdH13eU2GaMn6W;Do?/B(BZUIl-,T$<')mYSE&E6Jh)2h?'PNH"Ulp(qWBDF + [pNG=,*/VG,`8Dq:M/:+.iU1TEQ^:G&!%^cMr^k'VdpH$RB3fH\3pE'Hp#2jA0>')GFWqIFG2;K/iGPV95>$(n4)B<, + *gh7_tsFVPG_KXC/!@rm?fqY-Lr7lp!7W/#lE!+3kWGR+/V0RV3(L(B3%:O@?Cg1A.5i9ND + >+fgMYe0tM@B&l-=9&KS[.!S7kHsmM8S$7p7&Es7Q:kf;q1Qb!1R_$Mds8lZdlWGMkL5k'#),F=;/"I*74+9mVGh3YqLq + D8,!R][2`].@o`:`-H&oi/SrbV7;ahfUY@+JRt3KZ@(JY,7,*?k7]3t+Dq@A=#!6^ + gf3%eEX9g`e=^`L6knZTQP(gZVcb.0U2"o3XF4mJ2@J9ZJ>.!".]1Z.3E9hWbrJ&@(ZeB8> + gO7!t&%d^S\(dJZ"]<1U?cP9Na!KK`e7C$Jl%U&ne$*rAQt^.%:2'&]mes$/L*LuZT-C>n7 + R"RBf!o^#%kh_Q&bI`'L5=Zhf-TWgs)&5G!5MDN#m.oh3W>S/.I)Bc6-t!&#f9E..13r=&u + n&DlHClK1l(9>&@eb@/J='u3M@.tYPO(SV9Y:'YI`#ro@/:TKN"#tW`a/_JQ6h'HXKf)>`=P$5&4OH"1;d@tR2e5!rhp&K + r6?5iK*:O'V9-C6::WLud3`&BSiBj9B]a$sQ<*^A2dF:i)"poC".8&%<]eN408Sg0lKs]P\ + ,h,c27]ZchD,>9'<A28Woa^8.Z + %9\QP>del,87Qf_GBBpu.n;'J.>6\(r&kIK`'T]d:8J"l.12Mn3n>#(K]C"cmcVWo(kV5if + A^7Zg,_$VY2KHS:6XD6K"ag(3e(=BGT4$M3'm@/RV\F&%:iOSC2Y49)A>JBjEn!j=T_!eoX + !Q&e\0+l+l>W3P=n[r3LaRU=BXt0dN1+EieJ9N<[oA&d/-O&HE9p1$7&-=#1@DPUfb;lpYR + .^hlB[!e\gpVS(BffGa/l8A4_W_/gj()TbQL65A8JNE0>`"T+5"A0^)^OKtP`epF9M'Le(P7/_!_2edJ9`psV'Mgt@8IU<3)_(NUiA/cMD-peX:J^B$G + V/2J2%&S'u7nc.Tomk7m$J1S/V^M9P^eX;<&LAe!%bjZ7%Ml^lER!eB*/-96< + K%r/XMp[qc,%D$k+VC"rdAeojkp7RMe;BJg>#S#W + <@t&3^6R.c>th5O1T&[QS5W%&:$LGHPHoRkJa#NsC#qdD+\#7'`_$8H?r*c=[\t)O-;Z*>% + mKV0Kb2rT?V:8-Waqu69E_`*%1L0VA4UHp&_\RbJCCWc]!g2dj]lStE3@a:]@U6V?L--iY; + Qt>8(4.pidIlJ4'Y4F^hGKLU+?@bZT9MAZY!]ZaObt=rTb@m/_4D96 + V!W]5t@&\Yr*.qXd/hZ*r+-h5KSm/6JMj<55f:MU`@CRnC0[UR90)&]\hgB@=o=ii!r*N\" + IIG_b^R+rui#DWFYQb3FfG=Zu9GN)pYX/R?<$$Y\;h=FE$,W':$XoPUL@E2&_cV*o@JiQLY + pLX4\;q;4S5G164tX`U],"lRAW1W+0ZMbk)rk1CNq([`a#O)?A.3mJE[F/pfI/HWY_#;0-l + `=L(Em?0To6dL56gk@\cTZ8#=M+4%qDq"?BU"eZGC^s\VQF"'l@(8'kK4ET/74'`gK=,ER* + 7p4>UO)S3Zdn2BuEkAVNSQJd-oBqApH64T&%+ERq*Z>--r$-)C11Pr?cQLQggIV6oBUe(T6 + &.FK9:RA`9ufjN\&UcAtUJS2&OK\+JEpt$CAZn>U>W?QYSCjetecqQ1U9Dp*Rc2`CE)@ + ']lUB318IJX;#L`$+0CIbU1KB`b=Fl?r)qtg=q*rDB1m;#Y(9<>G$"TS^^O0&I?mF][-Y]#e"*+Id&(,]QVfFtRMO$"Y^SbhoV5i="9`CP$N^-,fNVaWVS#MA%\)`m + ,tFj2&'`6V]GYq'RKLg/E#'IEfn0B.`6!K6E?)hQ2q1YW03&,'/lhi/cA*#sf",]^q?#L'OD + MpR(D?0Fd)0/E"6qB&,Lq\T>"^5pciT2]V'=9.`gA79g(U]=7?((K-VQAj-AjlKVco3Q5[q + ;$pj#SD98jiGDg,R_GZ_4Gj3uX8:^Yds-rTiql:!qo>%(%sHok0-,O'4l"VD#8p)e1\f0_P/Y` + ;D=P0UDBf'RMmnP]3\!9iqV(\+ + *[nREI>AJhRt4p(j>0rl44[e*FB)j.lT%7:(hh$jo[)c&sDiggTt'*tcB!jS-^ELe((k1t$ + R*eLd?+t4,"V#$(`pjk:4j2sQh1. + u]:'%0&956[4=,;Jm:d\7>:VI\,T26sAQEj?t=[jm!k'>mNY!Y5er7S:u$q5ibh'@"9#7:2\U)K`/0/)=S/^l"&%:(OV6St!!.rs;P1.!88.kWV1WDbPqP;^X + k3\"!E+S*B-cm!ZET.r&"'la=$d31BarA;T@1,Fe7PK^>a[Bh'd'4n(C#PW]1:4tICAX$^)^YhU + JP[033c7?g_>_AbrUn0!=\8oqs1147>eJN'jk2tBU.[!+n0H;kS99TrOA1.=nm`COH0'6Kj + @U+\0O%51%@$SllZ6D$e*cVKTmr_:QE<;J1G`CtCWlnj1o<;%F*k=oK>;7$[,eC.0#!D]@\ + :?!?CJtGq`.jqY1QgE;TESCPXLE7')3&0Sn<=DWebuI`";=^D\nsrN3/IRg!9eos"ohn#>@ + o]p_G'%_*_f&UVK&h%d"#UfjPm]tpPpDW4eg'`3Q%gOu80IR\q/Jt?d?@O+rCbWh,5%d7KY + ^ZR_BMs)3L+k\2;MQtPn*El5a3 + EH'I=W=^E,7.*&GYk7$]p/+$0NN0[fG5j/au"Yu8KV0iY%n7"?QJ&2@'\%un20d@XZdo20Y + j27;($da`GeV/$%]5iSPB@eU_(5#!K![,qkDh + RY"AI),A3%gOa,52F?(CtQgAS^c%Cc,j;2doju*DMgLD"hI*'e^7Ze3Xr0>BD5-OtgkF*]e + L=+]9^1n/+45k<$Wj8WjTuZh@5"mP.`N+\E=^pJ`>W*%pjR*WdPo1@R?U<&]f%&GK7GGA1) + ZD-;(&AbXt'Eq+Io&RQ>UI`$)Ep[9Pt-S>(K&XSFupQ-PBPWF#V;?>a%nm3qMU*&K&H@c3)!q1n23A2)+&_@\&f@,E)+,#s#=qtafJh]/M%m + e,UI^hIu"&XP-_C4"m//XZtdMO6S'8RhY0,TQk(lfbAOtKk`,5@X!=NDbT55lBdM`,4*GXm + iSDhM%GX+CqAUN:::@r9.3GLD+CD:^Le>8C:p,.Q>S&[PCMnfh.X@lQFp25tZ,ng%@$Bj!_ + <32'Z'V3&/rQ+6p\pePO*2+4uG5e+Ri=`Pu/a-T,FN7`]DU5>2%Z4DO?Pe[Q#bU8],MAK8(.LA>DBG$Bj5f8o^3MW,qL@NV#4[m?)%6b+:3[7Q+=l")TaP/8<$_JVCP( + R^\-4#mh@o[0.I]9QCXQ'o74q.#]D!Hrap;L(Gb"LD + o1qG\a2)0HR`,':"S6=3?(6Pm<1>abVg)@*9&@AmA/Wd'1ZcS(;[pRca^X4YBemT!(E^G:) + E8pg6VfNaPcU%g@cf'>m+>0Wo@#Feo;I/SQn4LZ1*HgRigADmK>5dNu1;l*Z,.U75=4g + +Tbk8$p91YM-%Q;qJ?[?m0j_q\o"33`i\59<\,i\7-8_Udoq:AM?1.9/Sj[oHOXm(T6ffW& + nXKR"n*T%:b$a\.b"2Q&2j%K71@iLE!M.gWUj^BtI@7AE*E[e&SkCH+nl_[JT584(YbX7kX + r4]:+qjQef<$n0]0&qYS%;>Lg6QEO5dG]pc7b2RF1qi[*(co(rqj:AYQgJ%D*iW#On<\.ba + N"/o&a-EuriP*`gD$,rE=(VB.Te^q>./\baZ`*#+(S4fb!a-/*Ge\`pto2oU0"b1s0.ggSADZ,'X_]c,^A3SDDT>KQ_N-(Lg>4LQM?L!eRK@RK + +93%:iD+*>b/42#hPOdnWW^p(P_O]>NC*a]\A?i^)"^0+RoW,SKX01=OU`5LuB?m6)35qt8 + 8:8_#O[caIuH][A(]?n\'fY.:FsRB+ubq8fjqP#g`o[d+iYYL4UB`o-ZA@e61C.q>!6Mj+I + #=.10;&3RJM"VTq>!Z!r-0?4ZSepWnA*TH2:ERS38,sAHd,2q9c+5=/b5XA1pF:9'.bM49Z + gu9E$I*G4@_qg`=b1t\,9l&Fm,2HBLg/4QtSTZ9*$8E_/+JKrVSeo8^8'k]uE#[Mb4Y7;;h + r6h(jj!VXSJU/"=6"nr0i^/C=r'!07QA+Tgfjh7*`]V>+m&)QYo=F_SOq+r+3rWidJ\G0o' + ej6@q!rDdC96.\r&-#X?O3N+uZPG*-[dA\31nH&cPqs^=2IDNTNA9k$nd5*`)hXVBAVYlJ8 + H`KO>CD_?N+RRFTD$)4*P7nt.T,%2\EH1\6E + FnUEUF4t#naT:LD*S\II3+"d.-=7qDao7(!<"Z>oO@]TMtGTN4FQRh`9F8);Q;ZC+uhh"[3 + BD>&4e39)e>tat#kP'Imq;7c;5CrYQVF&%SqM/M/1O5n4PtW:'=J))[ho#@ZKDJrqr58^6h + p,5oD8X,.rD`Uj+5d')kEgM3m$buoTCP;*e,MierIP%LJO&.T=>V'2$&(_)OP"Y=+VBQ!i@ + QI^!\kRO\7:XloR9(LO\"Pr=Yu^I.@!NeP1ark@540Dk)sgKhDH,\:?Jn9o_sD-Thss;=u@ + @`8Yo>LPhL7DTi%dglBDrV??-#lf'9ZsomX_cYup@Y>;`#".Qgo#,277;iGlD5m[%$[qXFB + q4tht4p&=a]]ft>`>IGS;(26fZESO#J+d'lWnsNW;h%*YZLU,Ugp4#B%d:i0@>rJOD + 26pPd@BnL%p7#?q`n#CCg\1O#pA\uSIph.r>Q+^"K>PBJ(/.aa0cY0(HC\BO?a1ZrAuD2kp + OC$nf`+N%YOSj$Y*uOcZXt(Ip4/Y5+ + tGF6ajf1(t`-YACdMLE7F6ic;iO<#$g8d`e= + 8gLb@ohH_84[2WCd#CAa9W61];H5SS=&r>/Ego%`1S%kC;fqC!:R(OHdo"_8"U^48p%=):d + >SKt,bF^/"Qi^kZ?&]ALg`/U.l5-1K0o1;W(e3hoq\hD[f\7Q6dG)>FBph*f60\bMD88iXo + 5eG9(p+0D+_7u]PQFsV8[pB[K80l?oTu?@n>diP9mGtSQBI!gXAm%YrQUe^' + 7d3>P,JA?<2qXZ^qc;i7j)2DJ$)GhuKK?sj0HRV+9c&pupnK*=hL[:UW&\p-DNQs4a0n>q\ + >F`WHak!#]@%uSSB>gN8H1CBh5ap_VC0p\<,CT'_>?L)=NX*^W<;)P4fH@8#VTle"S\&ON$ + g4\&KekM2*'h3>_E4e+?`$Q?jj2A:86=74i.+YGtA]XSBA*lhb65u$^Z + QT-81lUgbW_(:T*Bu'L+hPL)]Xe]Xq7CRncPjCWfuJ['2nA(!,uQ^GKnprB5:qA$C!:O_`k + Cs]DB\skY)HQ_IsR)@^>1g<:ApLWN1rMF\;bh`EjK$&5@=NaT`:UuP41RUMuJ4@oD`?=/X8 + R'*qY9;e0WGCqnD&4ptiXEFAISp^uVlu>`uRFUe1eT3#MiibOJO"c4#eimc`RPAU$]8'>h( + DUCJ^J39BsjUt)",P)I[n:W_(Kf/0'<6jOoNnaWAP'):E&s+a&u5EPO0g'BJ3K&l#U3J%[1 + U5/enKH;22G^b8(HJXHk9s5k>\Iut6QtE?gtS2K9;Ma>>0Xd$`@-KhW*Z1us&7S>7KJ*=9)>k2@2Go6gqe=i-NHPm&;O7W^[W + HTK^,e1m0JYY.#W91nid@;PmS9A"(Jfc#@'PP&2%+r*MeeKZ5Qnq;h9#=Bo=$E-jgKgn+$6 + sP!B6L.pPGTV_?JA + &6KAJ>P6U[OYZjc$/JO`h6aV7f)$oNG")c1e%b;di*K(pK5buE+BKWj'^O^^T`+I)QjWr(q + k\m_jh/M+)ZO#GAT+frVSdWl%cU+dLTP_H_IU[V@iT/LY;PKtCctckhuMS<1MERb.ho%2.< + ii2hSn+]!"g`jOOMaEUcBe6jLhBPf.(Blpt%*/]X]#dQAo,bcZS!rM\\foZ!aUcVk$>=#ae7*UgC<7c`1l=%N9#B:0rWbcW8o;FBWE/CF2jN + l=9B4ICKI9GeoK(4B*Djh:R6)$Vpu]_!0r4=!;02Zd3qX[l,#_mfBmu*2.^7;:,B + ?S?=YBFHBL0Oq7(O\9$*I4PuUS096k^fgYEsBOFA(sm(X'c*(J97V,NF0o8(sHie-R"K->7 + Z&"n9%4R=-@\qh.!Z*jaToaO.-HB+_=SBIsW^A6Y^DY3D9Vm*"Ha0nR@'[FCiF7Od>hDm:s + mM]$7Eo#!F]=+F#ScjZ + T:i]NnkJ_0c8>%kB8g::$6saa8#q;^jMbFe%IRtob4:fHK#+r8WU)'.*L<7Nhtb3:C6m9X/ + Gc6#l+B0Sb&I#H27HK`;8p;BWQ1\igc]Q;Z'Tc^RTkG-SX(a,N""RI#0B-^E^oY]!dgF^VA + -H5N/V&)biG92n[>-SN97NOjocY]g#I*^uQ!+9:Q`\SNg'KYhT#149R,R"c*![SBM5Qqpl% + s!A;jW[Nkpfj2O]M;Gj\m'h"!#5_MM;G_j=48t'j&Rg[2(RfgL#$DP)2`,U&iN(h + 5ZAB%H?6bE"[&IHE"#K8Kb#b5.[KN8YS="*ZF6ZKk,80j29oT.'uKh29_8CWc_N/:+\P,Wum8&MJE,HjKc=-9R7La'qgm$*C+B + ?ALoalK%I/>(&&TZRs0aV:G+>a`LfKh8KK3u"G%-tLJRT#p1rb+tpT/$'nMHUFL00E?57-jbb,it[*-\'F3N+&7X.Bl)7bG`?VGjpbp:`Md*,2%b6*. + BbqPj8m*C=CXN+;kc(pTJN-pn(FU'mQ#M=GhFP;Q?^PCn/c33.P1uk)cGR!qZLVS->AE6L= + kg#9G7,%9$m)]ue+b>/EJe/`PAF>.Z8-C>RcBs=gK_(#@#>\/E:Ls%BFSF+42i#1nLM0]iO + ;;*WXF`kMd' + XA1oad-TIZ)_T;'c)EJ56;B&.F\j!L4GJ<>WDP]TP"@V9H',FU6:jmf\_>3c,%PI34?f/CG + 7M;C*O80^DRerQii&"J@s,3T,g(+!FW3d\6\;CuoW-B$IA)%idBQ`(+;iDc/Pbdr"#s^f + rC>@k8CW`tLJV^i>rYX,E!>H,e=B@ao0:[6?%P<\"a(de&1Ie5:XrHFeR_d;QtuqN:Xm/n# + CpateQ5bi>cnN4Q(TW/0Nul>,Cudp#LIkH`EcM5ACaa)L$1RL]d/;6-im.oMoB8Y[;2Uu?5 + 7]E!t\j;`:*sj@0\r3=!_n=1ujA6Wq=B;pP,#-@n.&LJW$E%@>b!%ORpNNTRn_aX+AHhj/!cSk(Qs'S'+]/f!>Q)RsE:R4@j4Kc$"9:H:4` + >n*N6_Z+L!Y,NS]4o_d+oGaQ6:7'E+.(s(L%mX#7+]@Q-rrlfT!SC'mNmcBQ$b`,QYDVfYB + M"-t(.hBh0D4k!\%.:#pOhOr$ITiVIiF5!Ik:B33QaBhua6A*? + j9V%IKk$l"?lNX88SNd:uJQ8i?]RtGY6p[DIHQRiF&Na[ + (?/@@Q#M&)=E=Z@4Tb$^?= + a!=0LQ"kkhio/!<+Um/gb'.Ol!WP#=*>8W$0YZ*!Q+BLDY&e&:+E),_`Xb"0G%JW-V_PdM] + 9JLNYlA%R9"T2$WPU"^"h-YSgoH,lo]+".1QniL\u3?t>B*Kr.K'%SMY=0pV5fK,A"D^bu8 + X?O.Kk#=*Vij?GLR<,f!+:HS1#u%SKs3@b + 4Q_E:(5HL5KSF*_\-hAKI:edNk+Ip[=rC]#FQ6JCfYD0T@!.8BGDC-b"'@/Zoo&r[*"Git1`LX:>PLhHqT6s2BMg`R;2Qs9_q-&9!SB*MW'>j(:AKS]TJa^ojcPi7De/- + 8!qg9s`\#_NB'HjARuKD9%\`9d_98d%t($fHJI&I=bR\q!rsEWO=#ND=b?\qgDuO`OAQ./U24_pk,u4[OBD``D + V2t%hl)7an9kF.0&*$NJll7/%<:b^h!NWV#Inu5?%ms)=G#`WA4TpW5U6MH/*'/LjA8nZ\/ + GSh@Kjd-m\X7JI-]%nFkQ0]hu/Lc=<*$L*/C2BL(IYr+=Mg9=kfeqL,J=QY3PJ1ps42/#2! + Yp84NcjZ.EmUBD=B:G(9X*p]^.KK$\h!:3Q)m"QEb:(DpijBQ`PC*!;ii"r6]bE-DOpHis. + (>e[,ga@=+od/L7igIQ9=Y<'_,/0#M=BYW,ICJ;``RBg\7Z"O-A?+_JW<.O8 + /)7F6%_F7KWm`+I[KZf70V$t!fm*]V_3&0qf4]=A%6r=cm<_'X)'1uL44d]Ss"d%9*VM,C3 + IGGcTd,n?%nqji*fIGQr4'C=9@+pA5.9"?ugug@d;%n!T1bF8&L''`;9I=H4bF/%Gt^j%g4";##@j + J/Sa`&EW\!Gmd7Su86CPL7>?gXmsK`9^Vf7(jWRfD9+j"COKLDp)b#T + *?]NLG1Q:csHQ^<`D%Zp/kj@mmBQ?TDkbae:;iM3,o/\>6Q]i";itLBRgg%$Beec#mQ!tiD + >mkW1#,@SP'EgP(i>kF["[NKU]/^TLE/>j"G]P@F=Y&,$q>C8[9P.3`Ut0BAS5*]q\`E + I45G1hd<&u<@NCTdBBiMZT2P!X2O=EL&V,TrdHIcgG]&e+K?a*XK<]_Unc"FCeD-"8[[bYl + 3>\fMcoBtu?]N/rH>JoIeqgRI@=?IoG@-VhsMWA?J#[XUQA239mX!.35Ib37(2`]7/_T:q\ + qCIf6bZ8%$Ptfl:eb=gNCj'#GVUo[oghq=?^#o';^Yj'U>WsMONQ:*Y?VaamQ'B!pV@ZC!. + 2GG*L.PdQ_N;0[JMXc:$CAB`%7&HJ$n`23Vlt]*+Q%QTp@@lYg?Ef + o2_;7QjL00BQ(!S"Oa,,Ap?q:j+EO]hV&KI&^ac^J2-d!'\V('QMXK="r&u#)J*lg:2@@AJ + C(mBiR:nAB8;bODu$Xpl77h3QWMHloHZ=8/$Vb+$kP=<:<--]5R=t57REAU!'LH3=)d?JJf + j;^"9+%anFXY!2p'[-Lb0'gG6euLLqm1<2oC!^oBUA1ln"E2J6,"_1G + D^_MWUm58tDj,UmFIsqj)Mt"n>u.%tap''O;3jFuY@T&Q4T0[a#VAiL"L'LZ0/2-&J_1iV% + ZZ'`C6n0FS^FruL9:n2#t+j]X?q-.0eQSng[^IMX;m_,luRr)h$s+gG??O![_mA0!&fqNp7 + =.^iu($E,&CN>cN]Vs)ipV5`aKY-"bj$PG(7*(Cf`B9QjY"tTZJ0 + jI0s6Q1A%EA/NZnMBQTUK>$63Qq@n0EO]b!4AQ^2nXOMj\n`7=\P?ZIUT%o^#^cHSq%b1DG%6Y%Q4/&/`r^.+Sk"(??5:Ht"hjB=oB?&g6hn + `A(ZgeS5"E60J5?^W5ZeHri'[cYaCu,6'(C\/oEd,0jEqKVE&,sW6O!Ur9ShZ'oGSlhF+`[ + YMNPIg!m&&u$FDYoZ$\&*+PRohWW9j]T_&KI3JUB1WWni=%AEtkLf"X+6rX.L7p+mn@h;lS + !BMDnn957,Zml.Om%@9b3'RGND2V7`4@]t;-V>Y(%?Y$G`V=]dLXe4EptU89aDD7$A64WKn + 2b#8H&khj5"F9(+3gkp;p[A85kRVMA-$0t6ZaQ*<-lg5H_2-/c5N#m]JbOqQ4[Up.YL*%$I + N6L"sUE7L/EOSKlGoj6cE5"Pc?McJ7b*75$CSCD(Xkf\X-&\4-!a60?15q'#P8I#,,QDJ`K + mljG[:IE/ZQ*Lj:5>Y^$^E]M=7HQQ8FeA;qa!,?+/`R<+=M$]s!S7]<6uZW:kb\_T@1K^kX + 4c,[mKn6Y$mIZWmHH5+c22$\3/(7f-I,ab3+l&H3NcLg:6a.C5S/\-lAK:([SiA.-6C49oR`*^bm(O + [2;fKEu1IKFW#N&TShBI-I2C>*@E>X]=Z*=fY%*HV]4X4mN4^T9X5c%ftNN"0cGUDSS>gTn + YTu3sdf;aF&nC=uV(qA/HI";9Au5&V6=PXWn9`NTNPk.j@n*egqnFd1'UIT[0l$:TqB%6+Bs;$7-%l?dWH?O0"OKq#68R7(UMO*@7H-/$atkDTi-::@`%ZnHcjq>A0E^W36W5t + [%q0p^%oLd>XM)`d="`W?gFYRQqAk[AG-Ti^C=%b*V%[?E*RR5Fkf&pi)l1!ua[&rU`mAE- + :o]F8#t-:ZaMAVnTPb75cCM,D!t#k4*WQ1YJ+(Y`^fV*K+9pgf7nD&G0pkcGOWGP'Le_3JW + o)9'81]Af4ZhVnG6pR\1BnEd*b3-]9p,(W#"7;[Xc7hh;.(/j\Af+(^i55EB8Ef>"ij+R"U + hU.O7D'maB8sHP2nDAeHCSu=&U:V3A*E;7I6bGQ'r.ZUJO\>.ir/Y9au'c("kJ3bXRk\$c, + (S`i.Q/UUp#,dqE)RAoYS[$T_ndm@EjgGp^kAGE/Aq1IuuF<%WSOW!!e$=PtR!^f#$0Pj&\JWj=hOhHT=cr:>AZ[.>l)Tm3t`J[es1PS`E* + =u%rCZHA!Gd?hK>2Y#X.cg]C8ZB]3Q343)#,_F;r)UCu@RJ7YI$8+U9^E(^qX8E`1[D\OHHHTb!G*://q-L:hPCB40 + OS1TsY(nn*ouS;QhtY)R;(2u>oY%C"\+7Kr7a`f\i1!;[YS0Wu2NESS1?@T4iXpZCR"CA#t + Cf>fOQlMZdLG#Y8#7o8;?_[\^6k1Ca,@'9qi/_@-##]8m!.2P,BZ.)`\N%D;fm + /Q:DN]FD29S7ETdR._P1TO,kFH(!;YKc.(m$_oN*\RA=\EsH':T2!i0];&:Q1dJ + 5lkacrsLl0Bs#9miB=)R#V1G*/6[Pl#^#ZKX#I)`ZVu8Wu5Go1>X)OL&D6`:Zm.5XnBkHpM + e#JPtVcCK7gc<$>KtdpKe*("jh2q046hU_(e^hk@hC0.i``I]\Z"GG6YgL'2oHa(nhEKX;F + )DW7DKa!91R0E"iFO(_Y19!>$CU.HL-%UrdM_jIt]W61bfK)B(-;Fo\fS!GmF_](Y0Ggl9/ + k%DLT#L<SE&[(d[@++ikt.67F5K`!$d!\`I%H=rP:uMn'k + _O1+T.7eMY,W#JiY]qM0oi%KNQB27rlmaabCQi$6%K3u>6Ucm=+Oln5jT?q&0'X@iUH+["@ + */'3:idE.^0m*d5)JV8AHV*Vua1B+i5&sAAbV',iGcCi,9%J/0o-$#0p#l9A^E_1@[[JEE8mNlA1=i+s_VJER@*F<%!9(TfD+Z*bNj\JqLDX/YUS0_5%UTG_1 + fgC!kBTkNYmJjHT-(kI,UXhG0nQko33U;4bUJTd5CU)@Bu*ig;@CYR\N;-;Rb\Od!^qLWHEmO:U*O;1`JPRn6qEY)i*`DM\1A*;2Rj, + $`(rc%]"l'`nh^'MG#d$rLD?c)OBFJ:%d)4KHmb8YrHAhm7ZRS'iB;%*'<#S%j&]`rA!GDm + ,K/#VbmQbI4bZ%>'Ek'HY09]g&1M&IV)(H.m#a,$*!8It`J?R,j'sbnnkjUpBDAj[c*FUo? + 6)G)>;`F771pIl,@(7#o3Z:;E(dZICP@u9Cf/p&0"V\^6F2^7O?t_k$r^jO9;Ze^hFOVGGn + P^)KO_A#fW!Is+&&?+$Te6m-(mi3NR`nGVUWOTo.N"8G'0H/Gd<=QC2^q^9XEYRIp)[Rob@DnF'll3bL%mcHaPuC+`:_uj + ?(L^ts/uqi8WFW/2.Y34`2>:ZsYtf3Em<%\0N&onTpo+8;S1jP@'ZuF&;-N?T[o3Mc27i02 + bUq"J1;V$K_0#Xoh@@lN63(S064Ypf-4>I#&4R)e@@lPG=[U'u$Wb'o^]kR_a_S?0Cu]SDZ + DB"RDARk=*&5iN@9C5$ndT#`(]e^uE<]%/c5_E!(BItb'QP(!ZjBUsDF\(A5_'VXp^Q2>'T + 9F?U"".DKeJ!;EpNQ%QSfs&d;u6!?A>m/_7CPkr#;>M'g\c4Td7*GmL2f.$!*a7"g(U?%CM6$n$3`9Yt4W%=jf_i>)o6p(L1f(^Q3Cf0*5 + fkQ\N/^S[:tiO+&W[sY[//U#X9F2\^,,S8q+$0?L;VabLOG@u/*s-+BUTS41@U^gh+'>YB]ergh8gD).*GJ`>cdOcla3YcC4!!(^h5hl\_@s + 3*'4"nZkDqOs,hXIlSK@\B`34-Gn08lNbMtjQ935d99^b9]HI8i:X2Xh]0l55PHDFt6O2[9 + L47T%-@*oVPa!QIZ]SOK5pNV4$I-!Pg!A.LrX(mYIQ-@n6Yo`q4lF$L$-!;DFt-oS4K?;18 + 7C/c-<@MCb\Bq^+hTZ!?TAU0:oVVu7u^l)s.<2Gap168m#_p4>eqB(:P*iEg)1h)%7@E+\0[,O\,)8d7ZF0<&GaGI,3, + :ig[MH[*#n'7[fn:W8rWW-<#nHV*!N$Q>+XNgU3Pg(`iOg)pBH>!8`s8CYcf((=6K@cV)3a + *;qIDc`-FFYOV3';aTqZG9"fJ)2;spuig4cH6d`IeW)[t:2#X&;?#Cp5b#s`GF&GR*qjrqt7ZpS-)BjGsqQ_/e)_$!N)aG@F/,C,El)8egc]]qD/gMBE + Ae])Ghk:"9eHE8jaeE_K4lC$soA';%FH"%#'k(Z%eI>8`IVu_b)Z!O!Y!*\R"q<+-E'"Ii1 + `58VnBd>7*9!>'B@%VU^TQ4WDZ + ]k?"15Oq@#^h0_ToM4PHi(^47QZ-*D'4@&O7=$/[.*'S(TUmegKHTg9jUTHUY'Gr=HNJ(UW + m$Ad-.].]a,Ik&.S4n&_:HU..>?M.FPm]`LL:53O>-3a;[FH*T9J]a3s2P--!Ej2m3[$p(K"aL94H + uq+Jt\WR1bSM`5!XY9,'3#4V*?,6=>E[^\XU0n_i`,BMKM!:nZFi>LIRh=d]R+DoJ][\m=( + 'RE"c!Q#dDle(%lhu3Yq]4k/hm,%j1]HOis(@9]t?TJ"T(4+9h-67,jNRd@BI[1`c4`/6$> + 3W2M(]c)u6(nq)4<=7B'WVu_^r,8]Zitfj'4SJ,!C>jVXlccli&cnSlT(eMA/&9:&QidQ5d + Q2KA'LC36&Tsmh$LmC_9agh0KW)JBA=F1\'JTT-.&q;OKUqCBbrNng8le?rTFg.g)8j/&F, + 8#iSY[6Za-0BmG`jQSmE.\l0]V[M]N+Q>M$CDL30@H$/g,2g728(!#u\`@Q,adU"8G9/f@t + Oj*J^%OVqZ&"qKUU\5KuNM]l0L.0e%JC?84 + ;A)^uLN/9DRWq`V"#@mR.$9Z&I0e>m37O:d$(FP'511a+fBo\#oO"7?iNN)cHhsJ:!l(r[T + =+M[\Rh24%iE^^"\1OH^E$-TNZg:n+f69VDJIILnNg?5+V##kQ".?*ngZ5QM+SUK65gcB+: + XX;\aoNE5N*0@<%]$tLI:&5(mIcE'oPN@&X_'c3?=/Nj%7?(!_F[>8`%m`"KklZQV6HS)3i + E\24I>'&LZo/o($f[SBSt\D.o_Y-W(:?.BRW--S%fa'hL)R;l\@teXFHpY?e83X-NPsEEH* + SXNVpniQSC@6(/[*1ZM2#O_q2LDDj!+f%"A.S+!hueoQP_8$Gcj>?RKN>,cBe`S&2+AJWqb + )4\]aW2_3PU]pVXi#LYH\?)kGRKH+i*Rp`(=k%uJ8n/3+>L< + 04r@j)b&;*g][%ea%AT*M1l$\_Z^rhqf1,NUc+Vq>ChR=,lqPpNQTY+.(8hrdMVN/B:p.o# + `54`H[%PQ&l[d!PkofNZ+2$=TE%R7eu-A6>1r:HCnf;S9:*n+gscLL02GF(Lf(1=$[B[;Zf + I.6s16iU*sPQMunQN5n:n#9MV&]3J;IE7lfrD89,r\502Y%P*1Q?A;_g,nqF8*u.+U:sLji%,3[7lM4g>#3EqY-CA] + ELWlRkm9sWgLbW"#'l#?Q%[hN71MbrdNl089\3'7b5#?p#)2:+/"'q0p1tJ^l-?:F9F'Vjija,pD2?HJ^=CnUm?Wd"jP@[m?AXd=8p4IVZT?h#iHmLJQcYG\)EVjG(pB + >kh*bWl.<1AM*ZR.,eGE4UhXoR<9A\_^SW7fb53RNnKL@1#=%B6M8HAf$ + /XiULG]6)9U"k!da5-3H46N2-?tABE;O`Kq@"jpX3J!TdA9k%ehk*E-BU\dR%u^q>Rc9n==Jsrr8CIdo6FXnL:T@3@1XY"9,nC"RRq4`c'qpZ + >V;F;4rSZ9o-l:rk-)OZ.35`VuZ6+bg/.Zm:sTd+De@,]TVb(+0;GG93ZZ6f@o[l1=WM++o + jZ&tc)TqcN:nk]E>M3LjN;Tk#QMfRG`/H+g\QSH;L#XpX+6>mBem0gm^4)?P.P3&+,,7MtY + 86Z@K+GOB>RW9G;!Zrsm>"tmfT<#&h,'gRMBdXc[Z$E[u+%Dcp2c%+/F9;,3.K:.BE(LKtd/'KI3+!p&D + @M`d/qo\O'+]aWL2hk\_@m98;>'1opTF3rfQ[jDIIN/'?H1XaBoR*QR1.-s8S!4.P(jg'&& + J&H#2%oP6I`RQ&W@o$J@Q-*4L0S&@+6*.WX7g<1'BN3(^=*,B0M4qjA`NqWEAFt+<;J. + ;riJSSU`OUm<\dkQ1$#2`V=H*nV,,$h5)i*'ubR(O4B%5S)PBLk=q8#%'';C?$mIq-YUD/b + =gkrFuG:UMf43,.-&n=`aK99R6K!7ZZUBk098`!0sE9nYK0Op-*;CESbbRC[<&u'XKoVdp& + HU?@HL7sAC7[/]Jj'6;Yfbm%X)jD=o16VlF:^O+#k9bh-QOV)G8=\sE*GRiK2\D2tKRHe80o)Fc*-2IT&dbZn#/I>S@g##N0j5:mKgAG[0H + &F!`\doRP8p>??B7t53GQ6KY*ISM=*jCCCXmd8Nj`u1B25n5>H47%p;7o;Hp,E(Kc0MGkm* + m80h44b0U<]E\tQbpa,%MI6]=ft@B(G;TZBTSk/U=<;'42!=:"P&N%cEM7g?3GU]\tl=_Bo + :mEm3^(A'T@qf&;LA@rkukZ/,^2BbNiHOJiK/VAr&!fH!3#(l>*"`mE[A[%UCK,e1*@L>Hee(Uj$7)`P6#_ + LD`L/EOI`$!>?@Z5.4Tnk`RaRhX5q[fg4A!12\A'(,YkX3l)1+LqG(r@CSe521'07-MoK%) + Q/,AUOqb\]mK#U7JP"sJLA":38G,@k9m#dQDpS=%CQN0fS8O=e%?Hg-04V\;Nl4NCN%^l=k + 36aDLs')6\f!N7=+WE%SEaK#XjZCV4,EZLX/2Q!#^J&B[R0a5U%(*R^0FsA\PN?DM"JlZ>e + *o5b%(P/8Ug$Z:_IuauK7HgtH\AP73m]^;#`Y%"ekK._)JmH)3#(r'<[lnp=EaTQ$6r5AM%$00^/+ + Y+S[]`Upa9] + Ca:@uCBo*&#.V:!)+t'nZiU?u$L7>X.]%f&\:qct-j0Gg89LTB!kSNu$L4jHJdDNmDM?/34 + )?(XHoNs=oL"Qu6``@!]EL!)#HTIL4Ek@<'H/LeH[%e"s@9.-r_TnSH + `ad!ru^s,T/b^5FokJJm_gcb!N4\=bU7%2!B'1)rs87%E2KG5)LkL8Os%94ba5+K+OsgPPC + eE1QrA%L3QGr3,jTP=U1H=L\hWJ17AVj;S1^>+@;fS1NTRQ=tRBT`iNrF]PL']D+<1QV^cb + c8:*_Z#KGd,&?pS8pc/O=Kq6:dKfEs?+P\k/I"nS5LM?:6"(4VaA$KEI2:P=?q#Q(\*JK;+ + K$[hW3'E!m;?YWf\O^a-!S'8PP!2uE!o/\<'T=4K%u7B1L1k#4bBcC"E45R9Jl5a(k\l15= + $JZn^8)#C8Y60EpC-m82Yu_@\86kD:DJ\)7tdL+r1HXjTh6`*cooEWe8"lNR>#YtSr + C,LTtL"hTlN8u5][]sYXbDa!QJG-]LP6>9VJ/%<6p`>4?m14g>_JG`qo.\CY>dk@/S!d90k + psCLCb($V]B_*O+p9QU;M)dX"UjWjbkt8YAV<2F2IHTL=XMJF!Djd<%c#UIXJE5B!j07TL; + 8"bUpLtB63\ToY8%5$/.!kpHCcO,"`RBEil-XtJqageJiHrW;qoT">r@;5#.S,rpi?["E]? + ^I!W)`ji]*FU?IHj@=emF/n3e'[[6jZcL69Zi/D!ao6?oXG+4*eu;JLSUrS.!4'39@m9ef4a"GfR! + k"-&jlI;A/2i3`r5_9S[:tL5UN'=gnT<9*:+?]+Ug;5W"6=A-M&eb,^K$J$]rYD^X]jP==OYG\jfTs&G + lo`Nem[j[:h&,6Y`b)mLOac,BOh?=`OOY@lc3Lh(<'53GI;,eQlGY7e- + 4C"c_>IDVJiPc7+I#J3o!5fbNi%3B1B"^i>%[8;h=OVZ!/%uY/a*THmJ($_q-T[TM_TB#g-70_#[9$X'%%WEr1]2:L33nV[U)hZjF-#7,UQ#^?RSD'\uRJm+h28 + cmG#,Z%_uL1j55$5jatm/i-:"b+T,iMlVg!%?fl*F[_6g@YT]^)eP8bs]A_,R + @_1Y]4+YDq9V2(GK_0=?hOJ1BOde6&#R\?mlkO$*ca1L.&2Y3[0?`G)&d?g6JEtGY\Cn++k + CPJUi"pXXj^eG)&n+KYTlW.Km43=Q3@F:X%2gj2;6`ETA0)j=WeZ[NAFK6_^nr>N$@Pi]!_ + 57@=^Y#OU`1F[LoMZ!LgEa7_$N?#GA+63G#6gR)id-0^qAQkIbRKCCTbD1ao"ouTa+#KV1G + NA1b'GG]mZ,rmidM4t)e?=]X:9_5.dp]KYL.HX`=Ao6&[/nejT5uoP4A6*Cg7<,QR'a!#6K + t)D4G&*UVeJI.fKof:=mCL@!W8#]$Yh3&?id(g)Xp7+N9iRFtLh$X%3mSKqTp.CR#[&%b$] + XXgkUC=54j>KR8[GoE'3haC@8m?a@S-!,kcCL>7S.:%NG.&Jk+M=p7Vc\s+jL@.(g&kP87B + <"OW968L3R87;q6W<5(eAq=`/C!EHjA&g]h_'KqNCj)(A?mn:crW!Ta$>8m(2J`/Z+_("_^egfP^u@GZQlo8SE.!:gXmO1Za2kR]/l3hD#7+lNLV;;W%OeBO3e=_ + Zijl'70H%+?AYW[r!'Y=%IFdIaeD4eH,BpD'mkOHNWRk"`8ha8!\#r]XB]#9C8G#3[*-Pn8 + 8@?3eg,;l*sbRkZP=cG)#.pllFL`f#Xnec&dOH6$#E`4/V9WfTu0UOfD,aX2\6I40N=]:\7;QITL`YaW)V^-#(H\oHN^], + ru[=fnZNdL^DnMqf-a#bgAGs\aj%n/CYc\ZncBoco,n9':P>Z]duD!b%(4"kKS0=d"uodP2 + %9hmBq#0%!dXtQQn\XBeHE<@6q+0#KP-KTlQJ.5ni&K\kU,n\7tf2LBZE('^H4MW;QOZq2??l4E,Wu]O#"WlN+>nc/?XQ\ZJY5Vg0HgLj<.\IU+@o0-80A%k15'%?" + b:IIl6HDfN3*WFfOpL!]#<*.gm(T2LkX1X&:g#[=#-TP+R<:+*0L>;o"_0.2D)2 + [1[7Kn+*tU!4j-K>3>(mI!^&;BDjoR]:NP"=Wo6&N + &3ARMRgmDtLF+Z#Q]B%)%Dk&ibW:M8/Q"U9ZJSN0g\eT"]%W?qqNPj3#)]KC9lfX+8iB!kj + G=)6@`"bt!+Z<;"pHUXg^CURGaf)(-Vl#Tm29UB_sjkY9nhf%-E"pYrb%YtOI7C,7=]qdEdTI3fGd_U,p=k#8kB2f5^##kK) + F7P+(fU4Zg3k5X^dpd5(0A]Q6PO7r4aj + $?tkjYM=Pq`/.o[8Sg>72CQ/D;HLEaJ&jeG`Aareu)bH!CTq&H7aZ.3e6/H"1_\AWkNpj=DjCQZbLdI) + 6OiVIM7sWg9g]0=WLm8,g`[Zk!@h71C]'/Y+(HbT$_mp"ZE^;/7T*7)T/)lAaT'jcDVVuDkQ/]Sn>UedmjssasS/-Ak#K^d`)rmU8@9L/T?mURSJJ(/7Ar2mtj" + ZB:hLJo0+9VC/#DiSQ`R.gOKiPsX9Ft)Nq9""iT;h+M(^Y\m63ap0l[.Lg_=7A0+0!$tEBa + b*T,^Qt6]bU6mQCciV+NXY=FB(Z25\g_#0Ijqq/;7j*B*k7;5)5g%: + ns\)%oH.O#0:9]K'h22oqX*D@)<`>jDgsU4H#:EQ5P9N5:_:e'S15`(o$.C8=:2:c-SJ5^] + m=2fd%skUl:Jb?;*qY2%S\%SV[lVp.;e_OO&eB7g?an#8)qDj^F5l,D^3J!36)c0Y@mH>^) + 1TXJlEFeK)M#6k&R\&4N+/2Bbm?Ma97#O.Tm_B:e?d\]-^( + u:lBhOHO`*DY=m#cGquSCAI2;!K>qMX30JcY;f1U/ZN=eNCr1iV!ocd2b=.KM0M"TiT6]A0 + #.W4U((`0LPVF*lG4(1,a)8'1ggbiB1Ah@RA,SC<.HkdASHZiEj]4d:OQ(>RN7(&-nlk2RR + SD=HuQ9/7[C"iu6!@X!MR=q9@R'r(4GnP + _=]@"Ua0q#Je0"0([R5_m"Lq;)gH8cq,#%)M*\UkV=IL!CQt+&2diCLrT-7/+5;\?%C'08% + @q,=9f[Q'$E7):nPbE[i?/]pP6#>4ic4T+?/UAqJ>3X@X/2('2[sqBaKcd"$)9)K\YS*omMfY4=_EWo(]jK=)0%KM + NH*eu_q<+EpB@5q&B$7l:rTOb/9'p:Vlnkf#9+TZXptJ]/>ff,*Wq(4C!Dp%7,H1'g'i)j* + LF/,VUaDB[e\UglTY$UmPEnm-Nh1oC_^Rd,=cfp)a9b3/2WT&__ + ?"aS^e^lG8^$,HiM4-(X18E69mZ6Lq!fspq.?K + ,^^,Bq#eXp + VYVuWf3s3hnfl+Ucan5cCqA=d2MBcT?#>B$^8k*aS*bfEtj_u"9ed5dO*MLoo%u;;n4;*4D + G"SjG6!+RA^ssVC5cbe_6h6s:BH;Z@)iq350W%8->meP#1S?$%7][$F]*e&B$kU:g&4FUA, + n*AVmihH3i+ggE4r;%QYjfq*623kWWljfM#"+or.LI65#S-s!Ju$>X@58G2V%"Ym1L@I&6;+D=WjO)!RdLaY;WAN1"a?/>t&2. + f6A.K0$m&U2uW*Nf0O5dUh`DAiPAi$28A6"CZuE;>%ZlQOIQEMdKdCDt% + ^)\H^%6o$SR[i<`0*!iSRNlN+g()2@M>bl2)q + C_bpC$1Ipg8EUP8V"B_d0riM>"J@t*e-Joq(SUi[iNNN,.KP\b)fd_TZ8X"k4!W0;^bNk,1 + -gi6>dYrWiop(-H]X(`10$MdMbE7-B[.&;TC+^at/,$/IZ>Edap(6g3V + 18aO!L1a1T&mYqEk^0*2t[TUH+&`]NGaVS[?jo*,I6$4ep'/n,SPXa17O)B%!F.j;D\8'I^(/p(qPNG1@"ppL]'_Cn+P*dT4dMcPY&E&!?+Jo:C7K + FV;'4@74U#6mKZK8p`*[1,'L4g.HrY^?_+-&5t"<[fr3Y/S^0O^!i!cA>Z8jX"=ct"7/oN! + ;o//KG_$,JS,^d\c`@KQUH"+VQqe94-arS[8JI@[70tRY + -:bi$$#$_-:!oP7'^dnU8\u3=U"!eulFN6H#q+T;T61-9,eCFp?g'Y4D$8g`HDDD6c%KM6b + #iJ#N+jq8PNpVI2*)M5\5g0SoGU>!N#5"le5XSD0YQ^:5c2]"^#IFRJ.L4KVcV\[9$>8>?03[W8pQi.l?=kb2i5'D\V1<2()Iid7%I33oP3`P$ils'.RrmCC(T>4&s\AZnt + dF<1?q]e7>7m?5:"T9,JP1Y&J&p!4CoiJ>3p%;aYZj8Q + 20N:PJcm]=1-XtX[@fm5Uk6D_ZgLDQE7DM?&_%mq7 + _unpM$$K<]:buDYE%g/bBE2CQH:omZQjs2&l!FSiB[R_)k.PLGJ#mRMMiIu?=pN+qNF;I:)2Y1Xl6sc + -IApTnf7lU$RdsNR^+u>gpQdV + EOa5QNH3+sF@IgC4R3[!N + GNLUr[-Dk>ZjXkbGP?%:+:_KQIi&9<Z!2&H%[^Sno@."Z%n]m(%i-IJ=Jq%?TnTcaMPUZNPeU=f,?tkbD7+\[i6* + +GPTCqo!PhoAQkgj4O][qKig@%BE%ViF`Yhn?Nu7I?esBFgooDN_$[DhVR-e07.L(#C8jEW + :E]+A7a:Yh:6f@eaJUN]HM0NFAO81Sq=Z;P$h2dj`O4cQj+bu;I-3P2^D)H<_i8mjE`_k/H + 77$>B!"K&f-]!d*+_4@mi#)VL/=f)-PZ`X+=biB#Bo;_D:d@,FTM#A5`"$r;()`l>L8`%e> + 9n`p$,Fpj1qEh,BF/(,#d?&i@!i2i2gMrrSJfnI=k5=@^g[K*>XJd7#9&2/d5RnJ7B"q + $W>[^GZ`AEKP!c&a$m[!aer)I4+:MGW3.YA96m53r8gd%?"U#q_3lXN$6Q0>JC>+7E(o=4N + 0o!M%Xr?&t>3>4?h6)Db)&i'4)Y6*-5H@(UFlBs:;i!7Q2mC*lYl]%]G!lI2S3o;-(gnGk= + ssRl6*B;qOK"?S,JO;A + ,Zl,o-QOHHj:\[i9t09`)2$L-WT.\JF>ue"aD3HI<8K'JsR\*[^eh`Va-(K*0 + Ce+AuJ9dBfCiSO+p`s3NXRct"BJZ_>b,,LIh&(>WF%4_EVhPLQ.@;B`Bu>q<'%Z-h^9f2N_ + I4[;mCM:WBpe:!?/4\]\H$J.BNPaiAiHl$X2ms*Gj64;,JrKZ,k"4O%fZGM%?]]_5$N)8?T + gTjD7qn\L[dOeal%iq/[4eVb$3SJjDg84.O)76Zb+lD,2-jY&1bFf8j*T.$@abHq(U47XIO + i]t-h$",E4qAl_q1/Gm/H+Pa?0U'/iS&ir?L,T;IRcquXqH1;-_'ZB35PY:7L=F8jTAH#,o + >HJJ_tiIg-TFSJpZ;)mH3LHd_[#@U2T%#Fm,Q46X:egk,rJ?+3EMrkl,'2I?Wq_\`6pLg&* + _]4mh:cn`0lF.fL7LU25SXh?(^!FoKAH@o($TX`6[MeNE7H^31lp61)&,aatVu@VtBoM9;Q + 0dhk#P]NrJ4H11aa*58EB!f?4?H0[S@l[49?r.X#m(2Xq=F\XJ%T/Z>Y;on&:59WcL?UMra + #Og2gnAhrJ@2W1>$g:Wro]E5'I\ZRZbM8\KnGbT8D`^"MZUs%r.pj7>59J+!,L!nMbl93g# + "lmd4o+!%gnbh\ibdphJa^?\9Ki.&+s6(/EVf^KpEG+P4X`Vo>spim+eHSu?C1%cq>2ZsGI)NCMrjf^s + VY+d#=VP$'W5;(7c&jc\;=^0raa9]hIJeD('bSMV^URH$VV3h*"@Zl1bnNBno>hA"Vu-?W+ + _!$`4>UcO8GT@-N#fR6q=@Bir$QCC![*`N.RU%hD;5r)\opX][^L=C+2KkA.o + HLkoV!T*X>+Hk85EAnk>Y)=B:WS7\[Tq[55G?KhFS_(lMu*M]#PrTa1USmO=l'J + 7=7]`-f39.JoDk'd8:[*(\-dJa*;ht-jJ5VNlW!^N^\Q6rR^q?HkrcpFbiU+3McNk(/?Ta4 + !kUNf_TXidaW-S#$="%9CN:D?5P;@;a%/$$8L]Bbs('umMcDO.sh=RdA$Z+K#kQuVbQpHbg + 36s<-E<0nq'Z?2]e8h2&r.Od-HA:_no[&FJ5/d+"l_T8OkLeNU\GVi,L%+d0VP;K*q:,A-t + -H3$]?Pji^]_:hK';YXn51.f;`lF;Q%bO;ZRkZ'`'QXX,.5F=68lE%(02,;$dT1J=W_=Ib5 + mg=IFN^[H,n`1[8hW,s[;*0/<]+%q^>4c`\(+@T]Zg#,'>O23tRG8q + e-p=t(11UJc9#YA@E$e[KEO0`$b=PjP^MWD0=6CGFCZ]Y.?O8/7[kWFbJZps%E2%s2$beb= + MaQ0!D]=:=2&5@:oY%Y@gieWkerW3tQY=r;DpC+)!JQ?csb2E"e"\=PpHA2tBlA)t%`8n6Y + cABT>LapqEM\G*RhUlh(Qf9kFH2Fj?O\as6ZY0Pbi))'VpJ#$"&;KIS,3?B<9i`^K$MPjRi + FC/f,#.C')Rdo4<,6uN7WG6cPA*4,^&7hI + ->l&K7[3Q%i6PV?j<+??Wr&(ZLTilmJq"paZ7Wrf\"E*]&O;j7s)DQ:5msTVcVAjY)2u,&c + Iiig-#2*VQ@YFDY)]H8qVAI9d;ugH'bIp^UG=imIB&+C:AcGH9R[lTUu_LA&N'9=/YIO*-W + Rof\Dp:b5=&n1!Nc0\bM8%sST`6Oo]'3:Q>LV3>]#2W/8Zi9JBk+4L-$0'p1e:,UH>YoKsXj8H + 49>&k*J484&muClK&s8L\>#YKlam7ZpM@)H_ljUtUW]0eQ7r\=A^b!:#gMr`)2P&ljVWYEW + mom=r_s(r-_E%J&X`bHbM$-1\>C;Zno#0o[n^>$<:&>`cV.pdAO)KQom?5=h_l2H=N@O_#B + 'b_ZfqVKsAOPD4'%GH.65dX6$jNcc-54$(iLTg"[N'1u8H1+0<&7`:/kO>%8!FgT[ + M?p;;/I.kA,\>?,R6sK@&"tgJNXg@a2G+6$UB1d^6IRe7aik;A'/D]_Jq"5k6nt)t3;BWn: + /R"o-m6^opq(R>DH@8e+E&$]Q#\!CarH/1<4V + c)2"a+@Ob/u88W&UWRQ%lP'$8;d$ksbY1U`WXB5?h?oA$-Qd\Kb:8p*rIuY&#tsMs080C\< + 1]('_TW3sf>322AFOp^^K4Oq]HiM6[mda]U\SASec@ZPI/t=h?\,D"XF-(%s)AC,@'8%B$T + LVU\k^=_hksYHu)tfbJ'+Cb<'([h\g4>Heo^CH?8A[g(XC4,Irp2936D-KSLER<*7gcajo^ + l!6BM?pVc`\*9sr?*J["CAY4WQ0.UC432]JX?`=8Q%"A/flh:Vn%KUXq-Q5JI;cOf^DH&2? + b?,`DtX.G(^C(L4:-RX2@%&8-O!nj)1umO&&K/R$"5qFKlFI:_\d"q@D"Q(Yk>gBUIu2*X@ + \7g0r8i+NPc9=MdA,!g:`%.%V%V8NH)Bc`u*t[A%[)JEV;W<)$_f)2BqY4NX"42J:8PV_r)!fpd&+DpB6@3G1GCf"h? + EcNBLsA_d*RF7D$/=LFpeqo:d?+mu@6*7iYOZJdFG35+m@7;4n5J:]\G^7\\)#9>gh`dX3& + )M_0%4Td#f*i#_R)cRgu'<9:=N*Be]=Z,+tDtK?uf,E`#Se*!ID>^IBqZL*h42J).2TO6eP + rttLn!>q$'%L2Kf';(e@C:^C)-^VTD7V9;[]\NC"r_gsM%s2Z%;Q3f%_(jHft2/XuCSY&)n<3;V-=m`+&0.il3'fnWL + f)([`E.>R-91GcSpF4VSn0oECGO,Kj?i`>IBsPB/p%,e0Gkk-4H9F->:tq;EpcbOY-*Y)'0 + 7#=mt?4RIb"R@XO`oBI>Bl%T\H'=tT"NeW`%PN$h=&4YOA?&,[%N)JV>2Y-3Qn"'08aj7S- + ,j6crc[npURd%k22)N[N!C$;V7fR^Of7K)&cF-%b1`Ilm"3#Mj_qB$:B^q+l[J:GDgUs4!m + OTJtH+eM+b-9mt*aHu[W7Xsu2lH:OYJQBN%itRDWV.CONq7VHm$n$=p;ETHH]f];=E>Juq) + e\NW+k]/1"R/T-LQN7F=;T^`nf*#L6MVL;Yp^Gq]B@"qb!(GR\.+e`-^>>&ej`$s%`?A_t" + Z7RJU5:le2;2pjYNl6+;Pkk9&69ILl'>IiJC%0p%"R!K#3_LQaoTg]XU/rkMpe5ElAfKBth + 4]XD>J^km\.j9qq`b7n-)^sISH$'5YL)o3ac'Ou1b6kl:269Dgj_/Q\FHl'V_`P1@K6()UU + bSu?os1d%pR1OAT"%fG)-6j-XJcm=!BMZ3iH,7uWM+ebXEEJD!SLEKcM7_>h!8OA`K->f8( + PjDq*#=@/c]YjY$.9[+>UMm:*fH.BT!D!OKJf(6*5c#&5HGqoOQqup=X@H-_sgo!"(K0l6& + ;$Z*`OR'69lEo8#FB2%u`:ZN%KjCDCDipMt7WHk + 0F2>ji)+BFMW>n9f!H>MMJ%hSPP?Hn7W6`CiW#a#N(RV6>$u#tYcc52PMO\P'S9U3M)Ruko + 'RX@VCh#\_*sKG^LB(J2?uJR=JOg3#a>ALi7"Rs/K?.;NaCL(IFGS"SM9(@-8LPf[I#8T^6>I$Vm-RE:\M!iROM;Z%aV!J-m]!WYdpJ5 + ;3\HU$k3LanMoKO"j],g&r:`uDquC\!@!0?(/MWS!aj9VP/,Im[pVRM)A`m&cLoHpQ815?o + 93BH;e_+TZgg94YM)Cq%TP\BC\X9=27Q]Xl;)^!"p>bKR`EjM4F\^s"(?bV[.07)I/A_ou* + "b[ec<>fb-2a\7B0bd>O:`6(d'bKSbcbiI*ooY1DT%0H\4]]mas%+MhPYs$=+,M[(RP&?:b + fGq\[`1WX=OGTc(TT.1H:%9:FUgVIC3_L_;b;8]^7(#_lcH]t^c?.FYD!4WAkg$!gcEuh2` + 9PXlld"#JcK+H>gq&%r%KeKg2_Z7J5[@/biOuVM6B'S=AG@,!fM?e'#U1,3Z'PfVp.sW\^m + ]>QCYI,!3R0/nc9(O3n19/V>69$jKp;khI0WT&$.+qEd#AF[V$p2.%++)Fd.IiF"V/oh&() + +)d3TIR*>HmY'i@C7d<-5PKbdON(X\cjdA7f0[2dSr*RVhI;:Q`9"Wu+d'`e:f0CT@"YRZ< + Q-(jC=$(:qB)e2ZcCer:.c]R'^]_KpVfWYf5dd[?5%53p1!l:-(^@Yr7&B#lf2D;,VK-`J$ + 879\ER]GXDe$V2lCHVnNM$JGmdn5GESLu%i=&5YB<#H:D3rl.;5La*8;[l3ZI54*:1Hs>G< + .Me-?l?*DiC6pJ<:llB@!5N`i;ocQKmcn9Y_!88#$#/e!?,3qHd.;nn3-gmeZ`o@`Cm+/5f + uMIRsdYs]gU@%>ui*Ke9teh,tUCF8j:Km<^="s?"gqb71W(*23;kfK6.Gk%+aN!K-V_,@bC + nbWrei4f&-sndPq;VB;ZJN9nV\3JU=)tF]W.#O;qUG*3e&"("Q=pemn&IFa]/]oFV?;=>N\ + SN)ko(r%HPb"iZ$=*HtE*qUPg:=Ic.Q]NbcbE7fl)O7d#8nJ#'k%9NGj=:L@KE4pf3Q&3pi + -kIpf(g=iheCD?OYJN/JB5\Mp6[U=J;(;>hd1n7NgoJO,PiR]s$1P_:ho"O7fBcNM + jJOW8"P=,)C7M3C9p2#[AW$gZfs:%CAR#TN`GV=oGT2/4_Dc&ru]08MYp7FE@@`6[8YgkDEU2+(VFLYGd#^9s_AfW%kYFZL![N@dG== + 2NsH-M78:(8Wno2Uh-ms%FkO]-a&:I>b)gjPJDCR$Rh4q`hJM_<4hBMNl.uOIh@nRK-1R*l + D_:p1?WHjXKn3SGpl94^^h*,NNV),%!o9kC"o\JYh>lIK1tTZ@7KrmRIJZ7rr&oc4?pOaPg + Qa$_V?),Ni3j$j"qZHke3lObeEL$N(,A5L+U&u0&pp(=S3,DN'B\B.s\U6hd;fHj/4m1scV45\B2FEb + D7qM"XU,Ya&htmq3$@B-)GZ..F@k8L!B4[b(a8q"05?L""V'BQf0G[R!9.Y\*$R&^Ec_Ajo + -@I_1&Ykchm5l5g!JOfsu-!^;gWn5<]_O6L7\kJigE#(=5:N]Ubn#"V7:\75Y,2egj7C#5H + H#+t/rT5#^Gl7Sdq2PfV-VTZg1Z#lXmWl?F]3DRS + ft^?Y.+mI&Qnm`t:hk4!9^nF%^om6E(N+:0_G`IRV-KC)fXY5$uTQg^#pm(;V#bH^EjcL3C + UDta2"#4ld5!H8PMn2CF<7fmX2"7TY#n7N!qG6m\V$1N]WE0gq$`s_<[-uV`[!RD:0Y7QJ- + &aun9iElA#0T,>2k\nYLBssOJ#/9Vo)"FK=nXgb?Y8d#`*:`23EVCLDruU_9+n?Enndcu9- + R<^k,k>RolW1jg.fB@W#QSO!"%Y1OD\Vcn'(JIDLlW:b2\s"8O)jh\,6/ghPKof.39^r/o6 + (/se_]nI'kkG(kgWCL'<-%#3O6K<-m/X@[8&b0Pj)O=F>aYMmmDn$0KnS]\kbK];\R(&6<: + )6k\j#a`YS2B9Sac[4jQVYs%%7ko#=e4=$;3@O&Yco7tgY8E_>T54F_nU07geQK"3gmpg8sSa,H)ZH?@2a4MQb6+,bBqOngAfNh;>RO,lE$O> + uEcGrM)cLR=&kCZY#)q,>B1@uU5-R(&^&U\62kZC8C9g*lBao#V%L0PT]2p-N:^&0h7 + r:eO-(Tuu"^AS;brAW4(8(QN#r>%_C-f4h=i + Vk4ar\pKuqXf4Ij8N]RrcdQ)J?NKVKjF_@>;/$k7i6b0?r-PC((CM%6=E^#A2YG=LdY]L32B + S,(Q:gn;7P\14WfbVA5YE5Q;&`k8nCo2A@>bsQqV*j3Mb5C2k3WU;n:u_I6XB$BN.#=(6(h + [;J>OaA+#l^W'..V>,=OT:49lm<3#&']jJ!0=r&l1PQ>F(>&@N6P + M2u.X&^`Hh*0G-T60L@>I?ZhDnhUuGPd_%mhNN7n2XCl(G<>>k]C^(fFmo*e`V+&?,#KG^# + /=(HsT#bQd+^cH@9,0Ni,rTfB_;n4dBs=p\[ID?b9V+mXuVm$L[kV7a);=]P_M%!^E_9re& + !6KEhCj`lo"b_,._$%)Yp.4V,IC$q1cHOXs3?`=YdD'uc!`go%jsMdWJIXe]/?\*N"j*QJ[ + )37CApjEh$5EZ/^8aO3bI--;'r]Nl#>To!OOC%.bVclWj(e/9#(m2\D-t0Y>_oBU]'!;_pj89 + X6-"+3oR&m'T]SJWDfEFR;9!c#as!N_d"XeNf1\1^2j+n*.ee + .u7@!4tdOp^5!a\MmOQ9bA4-5>#(^gi8h!7,OP20e.'mEe>K)IL^G`D$9U=[[!!+1[oeUP' + <2?o(I\D$+dU3LDh@j60K%?BNfNb+X@RBCCrk8DQfSZ@pqo:NFmD8NC0H01'@i"f/bF]2<^ + RY4O>o6c1nlcr"X/ot)L_.d0mh7`$%e9['?;Cl34n<."94BTNaGb[*UUFh6sQbHZQ^B)k&"`!# + ridKC=&jeYDW&HNi)?]^!he(VJ0&c4?H8);'0T%u'!;ShH)`q&W2"T4f,Lm@h`F$(&R.HOD%L,c26'47]Jdb1FHIhTWm + '?ijMo\4\G[9Y2FP:,u"F*AD&HhBSsZAk@7k$mh)V\@Y-W]WlSk[M);T^Hgd-F+/1`l + ,IFm)G=#[U%EYadZVdAbA@tT<+^5Lg1s18/M!^"hK;M\92$"11--*RU/YVMH5\ + GPNBa=>%^@!f#jc8:Dm*)g^rGXnat$DMKQZqCfD;CTm"LS-<_ge?>:a&minoOA9$=[W^qA>HN&9`S%k)D"b!L[4(##s+hJ2.n&-i?nOap+B#M#&=]%jBTWO

+D)IZ)J&r7OdS/>^V]0#u-4;9Cef:dR-k8WbskT']D3Li[C + NCj]U80.fI)dGnJR,u;WM9)FKTe>B1]Stt-?&LBd*$J\t5]7W'JX-p6p,fqWU$u"q;Ma@A3_OkBdRq_?+CE + Z.#8$:'&RA5O4-sWn*S)fbd[-B+@3m=QH4HUQU>rf5q6D(#hApS-#+NG:2MKZ:$_ElDf#i% + <"W\K(XZYF4\\2WqSCcK^F4V3J*+=^@4M(+9\-L`\4T0u&>^$>]5TN.f))oUcrOAm6@KIS: + ;i-5/fI.LUpsUDXhJ5!s*WY$P]kI/o)hD0"TOW>a?6-kj)MOO7>M:)`W#:$(^7gQ!H,YJ$- + /`O,UU4!CoN=Cicf<0mi*K+0rX2ES[MH[*#p%Y$iPHETAkF)mM`-5)+P7"5rQlPf.K48I-@ + 0le)Mk.n"T](s2_F5c*T\?0ep^[MU)k/F%Lp%M'4D;Are#saZkbbQ^9,a$+^c!$a5`m[W?B + %E*n1^le*WaYmCqQHroNP(l0^b$mXFQl54S)jn*e!`n)!m/rrqmV$1K#Gn:(u<^Cg!c(%K$ + Pnc'Kt+!'o:.Iqs?nm=-B^GGH\((c"r#Y::T?igQU>Qm$Ur4\b_glNVHFnIm&a7s1B42p>W8tdY[aJ_>(2eq#?3H+-$(\RJD?'q-Tik^SCW)V>@s+qZ!Jj5 + HXfiZ29$aqnKuET>g^-a8A0Dr;Y%?5Kj"Bck%=A"/r1'7#DAVC)#Gn7N_(LX[%m2[<3B@UQV6HS)3i + E\24I:,aFejmGYJj_RZ+ei_G;JQ8`_bL9e$lNVc.=Eb*>/g;6!X]eXEUXZ!=D4C_cg^HHBU + $f^.1Y7BXsR[9Kc!qj#1cE4]BCpKPQ^!'1V;YS\>q%gaKniQq:bjt;FKa(+ZX*0sALQ-3b1 + )49I]3;h)dZl/&emn'1#Bch9L#c[G,Qm&YSjd!1)M[GT7b@%TN.F3Yhn(b + qW6q'tW,ChBlQeJu!Mc*M1l#;WM>jlE#YQf5K3Tp#F9'U%d+(p%s1Zs-L@^nbW1_hk.sXn, + <2Lcf>$+5VOGa"$gff$Nrb7<#YtU`[Mlh_2s$n$UN.P.h"dae2n)VnDlkFO[C7k_Skt28-T + );33X\7L(n+J4-?=S)b0A9Elp8!'26e2%5Ui2+0h>Y,=qAnP9ie<_fcPLXo+S98o;]HI@is + ll78m3d:?(rM0mI^4VItA1Ih\lk'3Snig(MZY/$9jh!=sa5 + hWo;_:-le[(S7drer?@P^o\c1OkUhJKg=?PY,jE&EJbiUD1q()fnO?C3"&F;b?<;P,Cm&HX + aJGR?rMi4,Ll6K75TqC:L6@HEONR0]/pEh7[`Ok$$-eH%jG08=)gA_f5N?4.RXbk7b=3Vm1+rM(4[9m + h^0(SZ$P`i`'QSA1FTs(<&)7c"rp;g2HY#)$AK51Wet9"?iC]gB\h95M]hiQXScqobRIR8* + rZ7d8R\2J`V0$V\YEb^1L8ROlO$QBTqLW^!if!O-k)0#'pW/WTEX=/YE#;_J(]Ohn*+HjDt + M7rbY0],EtF/#Q5W,kO&:6oU,->,K32Ic2^+S&>Yn:!.#2&D[l5].uL?0$OKp`]r&`8h*_` + k6hGd;O`24j=\KQ]8/F+[R!,(V**,>q(F!j%$t3[&L60r;^aB,Ifo*p`OP1dDp2Y'fJl.=2 + V4\:;L=&VMhjOL2e'D4-S+B2&,o73rqLJ?BM+bo*c$-!Kl/.+iHrd9]gAi,f=q=b=k#\tp- + FXXaKQ;i*o%3[[M.*L#$]!(iCX-d_IWPKnYRpjX5a,h5iC!eW`%[mA:b7hq^q,o$]Q%:X]^ + @^F42-3;=H"q(b@jY1!G0WQGZME7K]>g3T?;)4(1RAH.:QW!R+5b&8dI5Jg131:LTc'+5r: + lMCfkl2c.9dQ].iAhCq@M_>Z=pfeqH&cQ9Om45]1'';6;PK*Y.b.M!Q$&?j-j[A\[9fqnp7 + 0]4/2G/*H^7!?7'gX+=q6q;&7M63NT"t/dUdF$7(dcrn./oA_1UmP&42,YWF%4X*>J4U_3d.Gq<_Io[YZW@,T=W + fD6:EL2G2gGC\\qd*Z\ + 2<,]YQL&])B:\9[1&`CI?.h$M6>;?ZhY#qSH52SMIer;6fT + $F2P67QOBp(nAk`>ccj6sS(s + ^T])2-f[%,f7H]8)5)5g$(4hDf*5J9V#C,,F$3s#`h#!l9W;4r,kQhej7L"LjWu*n)Htr45 + 3H^Fcer4@ZJ8gRPFG@E@q9oc0dQlC69Io6f?LDWB*lPmIFDsmL:YH?&,h@Qr.NfluIcG>.eKU%f4+bhS+X5 + s_RLlUqPo!XPor/R6is/"+2K/JHa,n0SA]dRl.9I + rnBTbN9W^]3/&"M/sE98ThLFB>6!77TabDJ@$0e)4SYEYP@?3!!CW9.S3RYT1,[9mn@)e2_ + ,K!Led_:ip)N[('7I_jZLT(9rAe$2,PX:n/QBnjjHb)+2 + %<^3bXhY5o('0;uH*')(==5UX[2=aVte%4:]"[NrXKW9`'<@!u>6?i01_>s:\<4L8k<;Pn#oi-CX9]+_r4cp)^?CNipkh9 + M!C'eW^[(MDC\9o%eHk40^P]'VRtX,lBo.3750No;9G7^0!'s!b^a!:#n_XPl=9S])L&aC> + $\Jaia1U0)^67'\g`SdC.70IA*YEEV.m$(kc9')oLniflplW0]r0/`+Lsuq@W00BgU6/)X_ + \j0(i/Y]p'K\ta#fHNFj*SO<6G@f!QHVKXR<9YC&-H;e$=Hj8GSIGEmQsl,]?lDOr%pfT-G + trZ_^mJM,Vq\)m))s?6Ym]/HkhIm8dm736&Y2"!09Lk&]^*3TG + _j"XaHV"Z0T/H=`5gA\a5i-u8;ILR2FKAi#S:PRPXn2q'88PGJ-5d83/k[i;F,W[ae4nh9D + (U??Ftl+J-;bUdtBq2O[_aA9'L4_1A8l\[n<__]gSt`KLSPGs0]85LCb.*DLoM#EQMo[`M4@k^Z&Q#dN/IHh)Js(0]FL"2kZU#kD#kQY@ZaNMGOis, + T99`)mG`BnRcqD;K7qB;hoY/9uN_BEQ5KJ^U,N_Z^PFEtM%.IU+\1KVnDTsHULnqXWE0%ta + AOab"8gqNp.!1;>iC/Q\9I%Q5r(]dnYtghS'caG5%-j6ShnI0k5?,Bg]\^hbfu6(b8dt79' + _$prrkQ`6biI$*>cP'9pP>mW#okor2"[%FWX#jW![86YO;=8bD2EZ-bRf`Yo[Q_?dEfc8bL + Hg6o^g"[r5=!hLns^a!>J6c#Di^c**;Dl.W+(E>2Rp-N:tU9>CM?@jO%D + kha]OHuKU7O+P"7]I#lL(nA>_st\kQ_Zd@:f_XR+A0,np`LLYBbk%4.E9kdd(?;AA<<[0k9 + W$&AFqd`jCBoLMjo44+lF7Z@-C"X;YWn#DC^"cQM3TNE4Y"R]/'i>nbgeo* + `7*$i/\Q9]77BC(NAJg2/Q6K3d35t\WfB>@1]g#lZA>!O*8$)FeBU`.4j5b.i0_^/ND5)D; + t,c=XUti7aj)1\eSSA1$fI?X^S>hR^,8uZ/+le.[C=+D`fQ!`!O7oK:Odfg#g9=29I>u + h,;cQuuF7;%Hn`)\0tP`Ts@BOTDInfKR2#O%RUbM?1S;,hBsd+)a[,t$3?FU5rs.^`hh%;& + ZnF@G:E9pITc?#uFDGR!qZY(EMOJg65#ANEqY;!T&+eI0IW'Su,fXM,csom!ZoRk#3Q^=3T5mF`F0Q:#"=9!2[F8V8-4k_'<4N]/@Ejh" + EB1M-6[Ef1hl?]r9_'LYR$*5;UnlSKV6?R6]"[ct0HrM-#=sWeT_BKi"5n9%VkKHsDrV=_3 + !9NRqHGf0AZGf;OU4bZ9Rkc8n+2RC(\'iqe8slQ3ja]R6a)Q#g5=Qe,mtf6DOD`T:B2]&&6 + mb,fjDV&gl!>_4rN)`Sa@4n'[`+"q0k?O:4CS\*V#@p+Loh1a_>U]"'6k.-t972;i:R$>=c + ofdc$2nS>-<2BmOQ:c6#h"a*g(h,&+X;GZ,e@jU+X\W,Sp"FgZi1:$5HoY:SfAE7;6]Lua7 + &R`CrOu#*QHfHK#`32?4Q'i`]cX*H>?& + 4Nb,]ed4<+/*N^W6]?G`j#5"Q)*e+nbB3XXIYX>YHIA$$@Ct7BkXFRpn90j!Da%mA5adVrI + Y)#gC-o*O^d9pVZe@@u-)n.[:__S3'@0?DK[P1aZ$fJGGA7dVhA'C' + 12<74bfS0kE-9DLQ3Q5,8jNY3=H(->"ubT8NU0G8h7j-SM!aig + Z2R`$"!mZj)n9,X#%1ok@3F[Kfe-]u'Zf8.Q/E,th/2o@VD@:^ap@&,_j%,+]atJ9&Oh55j + RA("L/(HYm(T$kLs,eM1\0>0#Ekgm/$Q*7!*]dOA;PbI9&;;bQ-&0K1ZuQ2k,kZG\;OtC^, + ?`fB(1al#&\#'EafT>k<+&[PS3.[(DbZe#'=&VJYRdbk(`Z_7"l1SW/=s3&`;[Qht#@G((A + 6fMW9*jiD>Zp*#bHSQp4l4_L]cdAerEtsDS'`1[ + o.&jh_*/iq/us+To,dh"u'>"!D'1(,6J#[St^`D#-Vl5fj`O(D4]Jtk]-km?4*X$K6H"6%6 + )alXBl7Y-_=Pn?Jk0F_sOVgDJ;sO%%X+r-G&@&'*KIF+KRCH\gNul_j4AAY4,=a/*gg:mjU + Lb.:3n*o+G/GL-T(h=K#t,VlGVjlI23i7eQ5oZ#:YGDq=q$@fk6'Ko1<`DttV766rDs'o,= + ne&$UV#X3'C")sc>DJ';q\Eu*d_(HQBRdmV$_!UT^V!giVnHT_I3Q#gF'I#')m)%;N=j[Dd + *hY_5kHbjP4$j:T'a/^qna@P;mhKj>[c^hb7@7Zj:aU`YVHs]I+@WCaWQ6L_.Z1Cendrou? + S$6,/JHFT3@n\2g';YEQa6$WWaHXCG]:=`M60sDB5"=.DB&0IR]!*-,8_]t\6SXNcZ>F:'X + "gW)E1"&/G&-+;]MkSbNHW=[(_",UVqYjfN8:V2&%T*LJL=S+%7]0#>V\5(2JY)D5b-g + >iKBU)rciAg81CMeoA,klN_tE,GlU6_>3o-Q"B*O!dmc=m2#[Fg>\TZ7Kn + :-E9)*Et\5,5S/*p^_BTkFba`Ba&huFk%]VVM(B%ni/-]b9qekT"jf2[MbF.ZGR"Lk+ocEb + JA?@-\qmP0BOYWfkYR/>q'ps/G&mUHWVlr:$$[:tGVGJs>Q`HkXCcmhg857rdk+`rk)I2A_`m(`C7?2Y#f1)2/)-fUXTb28;A5gPN8W`dCCX + <<$o\*[kW(C:B!kBtE0+[`AOdhVP97ouUoIS]PeT>1CdS&:TUrXX5\1Lep>lGVVDHb'?efP + G]_VDoqMUS%5c!hE*dJjEek7t`,g$\giP"B33a.& + L6Z7lfS,f)=O@k_OB:i^j"k&ibW:LMR`>`+%3S5ACuH:90G9;YX%eG=kgV,OBoC=RXLB!kj + G=)6@`"XX+WIT^#YHRnX\CU:aWDn#,R`r<3uDV'6Sk4O)8QtHQL^#jB]h#<(!V:4^PHJO%go&j_qpFWh#IDu))m.l%cIn-BF%UP?IfIS:b_t + -TNIDjcNhs-[+\:%.=\6G3bU1P&W71gU@_+>Tuqn)]1$#al + PUGjsNAONX$KU^.Q-L7u^&p4c"u6tmRZdCaH=a&1W;*]n-md3(O>$KU$`Z946pa\lB2V&nf + FelN4;U^7P;Vr@2o8[@-]oUb5[e67gJ/4,^@jB1Po+/e22]"(\$"HT8a)q^)m#YHLJ.!)cM + 50q^V!C5"2*=.j!kMs.ZXm9eZn]933+\:$\SLC"qjA=qnKZ?BM@T'T35c,V.J_41d,#'n'O + Q10-2H2/a5h#cC,>;cO9M8Ae\dNbp?CA5"F^Wj&*Jn7,1d)JZ/WTtanN<*pTkN.\Rla@^Pg + qBH>*du30:c*#:tj\j0o/.*8*T_q>Dc)n$6n#r,&k;9F=R#LE5gDJOS@HG!aijR!.80Uc3] + *\fK?]T82aB'L=t(*&W#FKSb"BS'!qro#*O8`MIY&ulujBQYg+KB7M,VUh%s*VQH?#\@)Rb + eRIcm/ftMHrk=g3D+Y>Zgf!OE+5'Nabg,s=hPiSr(!2+X-T]r&G;9KJ<(E-gmOCLa]W9_c- + k!eW%2TPpcbm(qim9@77GWCZ*L@`9`#GKRd(5!0N< + 05"0]>JYaH'c[:4MN8fo3C)X[r*!VR(.%(k=O+oa>&WA%F?7t-A;\=Zt]12RZNc(-()R&lN + r>E2kS8HC#Jbm+,T"04S4=sDKL'fj*B%r<:"oa0;ca[-AdjZ2XSd=lFO_$WUMX?OiVGV6MP + n%)$FL!2>R9%iV + ;Z5XAtLSX637?^1Z/0L_Y8$372&%5CC!&[H[*M<)?=iYHkQiLg^F?3Efu=#T4%h($j?\$RM + Q2l>p]:3%+1Om%76f:),Zn-kMPafZ]m)9PC0@#Vq>(7Z:h.j.ErTGg7>8B?B6J*/:q9qq"@ + #+M^u#SGR@jXW?I<9Q>`Wa1^3fS%Sfoa.\UGTajD4Qi][T(I\r:SUYb&Xae2PQ>uq3X2+19 + a4nQ+GWW'R+$ac:'E&!-A$6C/-Pf0J*5X`;kiYWV^5':eNQnoVtCtnI%u'Z*g.)ER3B]Z*h + RF#TMmU(ET!oX?3G!47)MKA8F9qnd4"sUqV=YW"Ge\M5[B-VUk'eLH_PP4XA*^Q*KoVPGcU).>*)8rVVhRM69dq.N9@2e.,9a[>@lRD>[(LjWhfcpT-):_D32S,p + C)eBt'N&-uIc8O=CSjabJL*BSrM^$+76"iguT*-27RR<*)@V*]GQ(g4h3T`kn\bE@>(+*%C + !At/=0Y,)sN6"Y>=%;Da'hW2:#us?1Lg8:P08ai+&d<6q-,h$O*.Qb-#BImKc+eHdaB35S2 + @0iC4kEqj?(2!Sd(T7fQCO^jYl0F + XNtG3i@:66-$gSVsAqdWsikiiJ3P/AI@R\s&"XE2X4$0Z8j#O=C`ZDm;\b`'I^`dF"3G``: + 1+(>?ohDjB?'m%u0u+C6f&Gd/\>Tes-/:n&k/*i[:Gq#$.KSDZo@N.rJ?`t;nj\W_pGqAt: + -=9YpJ.Mir/$t0I#?G*tCF4hPWLX_GuFQ7d`cAX2t[,C*E!(QRGRj5JpFH?@hXQsJX.c^/L + &!qU>KkOEi$?0IMKCXAcjVbW0!;k4KAUZM9U;/-+B1%=)Y+a'$,MNh2*pi#bnd-JE[F[1]X + "@QLBmUo5>TW9q(^[Y/i7lq+E,HF$gS'ctH$*&*6JLEb9O%P/RbkXgWaW3Sk+JI0)XV=WFG + d6P#USg2I5>,V;sc5'+u"kVWmO) + h.UAeeAOGdrJ1*IXR?Y8e%:&UNVHFYcd&M@3&`DQqTsl9cO`[gJD_A4g`(gk&-2bBCBacH@ + 0dFgYrhkE+eAqUGX!FhnU*XnHSYD>_Cb%(092ga-e3J!$<%2.lQ"=J9fTA/ArP_A]3,*KGg + 9bg,hKNh\VQsJY@6kmOi[3e)dIXuRI50WPlMcMNUL`rN9%D\Q>`0U4l!9>=ZJ+(2UckQE$HMW3l + QV>?j0R+gP(<%S2"N!XiD]Bn&>Q>1T!2DSeU%/[IWZ9Bgs"Lbe70NV4VZ.49GgH*[%QNiPF + <`JT#3#pKXY%-n6Jdi/uP6W^&ors)ud&%/cPR+"=!T3qq5rK;9TaXbHHr0+]_h + a=Imh%mO%Ds%n%Ap_@jrgoM-ZJM`OHM!5DNBGX-:*.mJANC:llLhgfH:1pMo*>Hg:*,XqiL + CSn:q7PT,)?H%nt"YX*#)+-(+_@l5oL62,"m^k'%&'&ca!k^HLOfO(6N/Jd + R,1:iqpX]1_Af7d>&PnE[7n#,]T5!;J'LFOC?AB-AQ9o`S.JSr2((/+7%pEjS0p..OYkj+p + \*3D3d0B=Pq1[$.2dKiSc4QlR@IB7?F/bU\ZBLo%@iJ.RC$b5Xd5XA-h+>#:68qCh?u$I-j + g_-r/):K^gJ-/M;(B?.,%fd[D:R;^J\d+7c00U(8\.o.&2_.fok]'"B>&][P`I%k_W*Y1bq?HDT!cPqQkfO3mSuO+;bD?>+gr/;85N-Ci%`,01M&RF7m + /Y"5`oe+Zc>>1B,`%C+\ZB3'6QX+.U-t6-PS+Q.hY'fLH!@FjR_)38iYC:5!n[.,S%99$1& + d1V"C@e+Rui:.Vd("W

\k?tLrI\D3(i5^CZeH2-5j^'D[ + p424br"0Rc<>H*Ch/^Z7H27L9ZaXsB2rd;X`_3KZ7E0rbdJ_.30I6V"1X"aJtcDD'aW_<5!nD'I + j,P%4ZP"^NiM4H^"52Ah[Pf:h*iR)H1N<61a;h&rIVl*hcqQMFJ1SO!S>g8LMRt^6hVk]+8 + ZtdkhI4J2K$X^A2e2=!^i(:VUpFsB2\/pFdDJc7,GM->B!mX_>$M,iERpjlQsB:?B5LS)L@ + :nk4O\tE(tb@nALF%4JN[,SUOet:)90a3b0Z'R@.4]&@t_V6tTLCl02&M/XN@0%CFo%SmoR + GG(H2RU,76pPAt%H,r_/0kRb-*EV/).:^g:V=m^X0^4!T;cR\-G-^V9Kh:BY#1eo%FGLsMQ + cG0ZJFDeF]]A6#c\-H!]4a(+P*a?k9h_e4m9>5W,rSRMXJY,%cc/(YfBks]pK>f7'E[9R'LWHL'Whj0g7pWGp[O'tOk,O1TDOH<9+1iL/AO89:rY4E+\/8V= + d.+nF<7f[+>r+/@N!n@//lMVpRu#8;#2kc#;C9*E-V\`o'hRUc-Ui`%c[h(>mRZo#r%VNE1%$:SI+DM#RtJT#@RoMW + $G3A$LkG2E4H@\]aO>F1bb`b$qh!Z&FJu2Bo[0B0\Ho>h$rl4%PZriXO>@4V[d:A$S_(ZYk + J[4r=AE!&2==t0ZK@&,7nD)%oEoN;%XDF*>.fb&htZ;OUCps-;"jf&5b4rnMq8f4VR?O'IS + MGY721C9bd+p'er]'EEO$];#-mGq=.)md:jB$D&2Y](GU%KDAa3"*tZfB(QjCgEJYO;N>V2 + J)(@9SOG+Q?1kC7D)@]S*Y(Dt#em?\V0Ti0'&ZRHp?rSE1)^9a2X9TWjboH9$*ANTmOUiI" + cK4&H*Xp'VL%P6Dh]>AYZ%)i>@Y5>'/i\]FkgA3/EXFoEg\A^S;'no(c%[=V"F?.DC)Th!s9,(&sOY^ZD\ + u^T10`VDdY[?]..jK/Mbj.A]ZDW)(gIp09U-!Eo^QTcFWT7^7sdCC%>]7oZm\8.nKsF`L.r + eo"VCY:k`fb72l7;Ea[>S1,C43F!tWtI.4D118?><^sH5io!Cg:1XOLmBsAdIO#)tg%;9e> + &-DNZ/f%*;Zu/??k!\9o*agc]2`#S8F*L:*/fq9/1Ga>3dX=%?+=@h[mS\YeNhnYNOZ>3]K + Su]fi_B1,JFFniY-PV_l9j6=t!]A0i + Y-[bl06+RJ,S$imtMeC[\14O?YHJdd`?0f`,\68W7CFD44>$J%\#+`qQboAh3>1oY2n/JIJ + *e:)"M5jk?db-ZmHafprX;Z*7AaAdLVFK%m>X\.SM-.HuQ'&Q=`\Oa*!i"3/f1jaF9@W&uFQlQ$\hupfZVZ8p[-]^BVCkjI]4n,q0uP\$^h,"ETT8=):i=]ZY + 4m#A7PnOB;e&E6qbm)A;`-BT'HpCaM,`faqCKW^+,>sSD;H740F`CQlSQYP72tMYtQ(TJSK2n2$bRM + u#'E0bPY$3Uq8Q-'iKn.\gO&F:g=V#"Jj6X]T9>nuO2Fr=_nf"9"K(\'(ce)OMb&hbW["Di'^/3O!-;^,6u;5/&;No=?^ + &man[KHlB7/ONE7=].adlkV$^G%kQn5@.B,,n!stb`PVc9X49"Akh\HFC$9e86W8Von?f>E + ]V>W6VK3/m*::9`F+9cojCgACGrS9E8=/RV'Ztfdo>=Xnr7I.m)7@XZ%=CHZ^)n67Cp$tOf2Yh:"r<[XeDtZ+qJh3q1;OZ0cWCH\*68*<&SgO0f>&s'c1;Pc-]$A + ME0biKTWJais"&1]XF>lX1DAR7N8KXlpi/p4YQVVb5?$5mL]2q^M,&WGUQP+LZ>^'n+GBnD + AI%F?65*9K%iadk2YnP`J@i'uIGF<`cS;%],C_r^RilH+\SJ!\(7$jfuGI`(0]NUY7Hf@.J + ((CrOaS_CDI5f])GM+q++M8I9G^%nkGNjRcm=+g!+]c8#Pdu9&rI=SCJ2d^UQhPf.#CuR]J + N+BqF`Ddg)1hQ+JiG'.F,,>!.>%=LK/b`@ERf@lF`oM??Ijuh\3^s57`].,]6J7,@TK170Y3pi[qXMN\m4K:Ge#+WEGP>6BnGc(rip"b?G/B+un$ + Q+W69*>=DZQ0LfIEfXm6U%?U,kJ@NKt;9;(EdM"s^^;W:Ij*.;`nTH)g_GX"TC/eE!Z/ + "Q!%=TA!HlZ@OqQWH1+dP8_,TXu!.:Qm0,bO#kUd>-4i/mB6I%P)XSH[KXRk`q^[udT";O"41 + bJ:4%HQEDe7FrMRtgUHYKpi6[e(/PaDngCu^`&m%Thb[<_/>].U'EH\K&MRplo<(Nm5lP:p + ,*[bIXiH`3p4pK&:CV\Bf@R;Z_a30X!g\[GkW]48JMX1\>W]dRs5oVgT0]l;sCAhNKpl7!] + RjgH#4^0.,-]A0Lbi#u=s,!5+r@MccUaf0Xi]j);gHl/M;7>A3*l+n5%!T?&LQ]:glRY:iY + `-7pp>3b.)N^ac!S$jPh56Q/5T;auj>UdPE=i3.u`>gsb>Yem&jrHQP!#l;WR+6+[Q6?%#49PQUiNS+2lffbVRI@8d%S_&IL4rH%H.3tiBA"8IMq+Y*T?u@i]\[JIOX9j/`Qaaj$#?Q_Q[\3nfT%~>Q +Q +showpage +%%Trailer +count op_count sub {pop} repeat +countdictstack dict_count sub {end} repeat +cairo_eps_state restore +%%EOF diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Time_in_VMS_1.png Binary file 0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Time_in_VMS_1.png has changed diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Time_in_VMS_1.png.bb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Time_in_VMS_1.png.bb Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,1 @@ +%%BoundingBox: 0 0 660.96 253.92 diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Time_in_VMS_1.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Time_in_VMS_1.svg Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,407 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + Suspend Point 1 + + + + Suspend Point 2 + + Program Time 1 + TraceSegment + + + + Suspend Point 1 + + + + Suspend Point 2 + + Program Time 2 + TraceSegment + + + + Tie Point + + VirtualTime + + + + + + + Suspend 1,1start + + + + Suspend2, 1 start + + + + + + + diff -r dac0b8db9e72 -r fdd66fbc9403 0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Time_in_VMS_2.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Performance_on_Multicore/Multi-core_2011/figures/Time_in_VMS_2.eps Sun Mar 11 09:26:44 2012 -0700 @@ -0,0 +1,1034 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.8.8 (http://cairographics.org) +%%CreationDate: Thu Aug 25 15:29:49 2011 +%%Pages: 1 +%%BoundingBox: 0 0 210 178 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%EndComments +%%BeginProlog +/cairo_eps_state save def +/dict_count countdictstack def +/op_count count 1 sub def +userdict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/B { fill stroke } bind def +/B* { eofill stroke } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 210 178 +%%EndPageSetup +q +Q q +q 0 0 211 178 rectclip +% Fallback Image: x=0, y=0, w=210, h=177 res=300dpi size=1939464 +[ 0.24 0 0 0.24 0 0.13 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 876 def + /Height 738 def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /LZWDecode filter def + /ImageMatrix [ 1 0 0 -1 0 738 ] def +end +image +J3MmeQm:T""FRqW:afj4*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H>q_R=Al + C^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1\+]#%(hQ6COioWjnAY&^gM+`4=1jRLW!YA=M/6)*KS9PE`kN%="Tc + _Aoh+fk'&t\ctIN'kXBO&=F.Y<:MjZX]jl_3@$]W5-J>f\D0C8SQKMblgi#.L/UagF]AmgS + S;UGjD9:c/35"*4".6SLmupd%``6J+YF"= + "@BDq$936h$=M(.N9X>7sBoKPM8hZ'8"g5r$SD#""p=K,7 + /mKW;5u13A^,8ofTnWQVTS7gMMge;H%UEg2V<7e9#mXu49E[+6;IX.H99PO/64ckHom6-ti + J%7AMW9bg+EP\hF2dM.Ze8^`j*/PFOuP=gHWF/#bqT9T`[;:LjW6W;MM/QGg$'l@#Re9,V= + IT@23B2M^;L2Pm`dg + NNh5CK=KTB6.<8c-okPFbQ#c>a9HFF5D+XD/\63`S#7cQ_i_AhRD%kJR8*Dqg2>1-52#:sR"imJHo*ch78:TC;^Xhuj(2:_!Ol=:G;h6j\E@/d=Sn*=/8(db^j91$q;@Z#a=UcP87#?Lm^,V1j*ogbCMNUk48kE/;- + 03"4P>Z9n8_H6SjTM9*E\\>!.&@phgf5HEMH3@&>q>#iZ'J;5>"`"8/`jp]L@UFS71o8.j\ + 0i_Ep@+-=cG/u7*1iq/nRf1SMTD]-#q;'?HQu3.OA'ARo=3B:"d3=k60b6;iYln=(4[F'1:u;&Y`6 + "MG[P/7HhZ,TlN1mO/^_mB[%]r<0!,>>"qTQ74FX(DF^e.5t\,10r@pqRT!C,:$KSUV1_)`;-*D*4&/uDS4G;\UVFe+[bVU\e-1b-;"X$JYH<0.(u.fc$>^%]kmgZSj_e5'n>3ClOXc<.G.YYk7rFKWOe*Z&_*f6Y890%fZ + @r*6XnZ3A-$Wdo0#%Lbo + %^h2BPJQ6ID6,sCUO=KId/\M(m2jk + MjoCW7'pq0W/M/Bs(up+i`E_>35n]m:bI9Gb6#T]HF-Ns'&YX-j%Dhm_@*`7@DV3?nW;=4s + +MTE*9j8b:L"%A5K$>0Cin/rY2":pUW9b]kJ.Amo8>2$G;*j?B1#*DH8#X^8l*lO6a`4d>G + ohU;)o8\R?#EUje*Y'T*6kA=X`23scAq_#6>SThV"I:Cj@fUGZc;*@B6UkO`a] + 2*Lt4"N9sf*B3f1O.D1kJ!uIiR5?q@;tM>_;?%6crCPJk"=rDF(=.dqVMPFb0Rujk-a2eX' + F@>opd*.eZATbo':_jpU8@c^H1u1dr-<1elqaAMIbn\CmC2!?YD$BU*o6JC08*^(*>g2Bhrej>Ha54@Fbc#H=I1Q%M0"UfG])[oor/HU9b<3&q]F>+arskWJYT< + cU,6-"\SdVKf:TX#H9#%S1IZO^%cI@9e4KHgIm&u.k:D3X;aS$0Sqf"52n65MMPmC,EIB\> + -B\Ng]`s2#Yk=fQ<&8(k.,69I>#;CQ4O4qTmFUJa6$]\?pE.7;\OUPsK"R?]/:rp6[P^X0M + l=]&+mf:`(IaKaoh?U_'E9.JSJIF5Kr_U3;d(^)fdZ4t/IF-]H//IXR!=gc:&-;e@OQs:d` + .'HA&?tU3&HrH%h%4QcRP1\[0[UQ7B[JJc!3e<(&.oHBL42uO$S_5d/XERP<=#Ms&F09)OF + IcQ>80WA'TdWiYRIT&;[K^1$#pssd4lCEN>>AK&J6H&OS9DAM&A%+&2B4^Og(NNVMXP0UPb + `5EO*/*oW-<4Ia=>YE@2K`TW&NE*H@\i;2lL!>oMnSf.]>G#L>kq&M3 + M(6T%=EHZeO''QTs's!ZBn/Sa[73@[@R'Aj)Z7<2`AB=*oIh/.o#JVF&70i9Z]LW2LEX>e,uHT:EfV-djX&8B-3qdB: + #..ZCFX%'hr4:e18qO_=K#!MIIJ#Qd2B;HX:\)^#e`& + jFYo18*A^J?dSbMb=S'u0$BVMAP>HbXBeZjW1/c.Nnrk]2'XVWF2tMS^kpJ:2c,P + .de:T,(k=C`c+ga6Y'3'?YP9eYE9rU=I$9J[bY>*0*\;mB:'>$5gLH?mD3HUf + d1Zl;jGdu"H6HAm;dLT.Za%kr\c[iu/Lquj9G8;u_:K*F*Pl4D@d(D4?[l"OT'bpo$-VX1B + ;0=5;PoWa;<0+Cb:3BU:N@ObmlE;\X51F":LZZ+*.-#/"'_-fW#L(O0(r;*lXflq5F?`H`O + $j\#8^tFRkd+;G&Hce@6F?Jd-gau/%9JG&bY_/.9WY9'McB7d&!`$S;h$iJ.o_Yo/sVnpeX + p"[jGYs#"]a_ll0Q&9'1c-n?`4oN9pDT!q-V\YM\YPc[Lf%\O^U-c.9+Dt[NL@2XXb/3@]= + CNF5VF#K([\HA$>=$<\f%<2QN-,A>jW#dD9AE<0T1A5r=j3+e[k;94`8kAZE9$(1&*Ja_"0 + NAsRgup((g0KTbt>glL?+FrP+sQY?)TBrEn&2P"S3-!Eq*;Jc_AeLbN:'5EOdC@f,S[de8ool#$KO>cQGWOl*7oYE$>d^DJpC + R\pLrqm%3EL-ZUpB=ZV[;a];KJsQWW=*^e/?Q%o_2UTspE+K8;$AmFS(.H5-q@]Yof\8Y)2 + L(AFb#)\@9XO?J%&2C<&B7E<.?i/(0=anG@rhT+*]Bb>1[P.(+,m.?$PV#G4IU'QRtgfST> + &kGB*bc%Q8tuG>`XQ,kmjKGG'U*0!32PHH5K$FLcQC$Sp)gj&IH\(V=Tds*cnr#OB7Q$RKd + `rHutbbf`J.eMBNnknap(Id47CC6O-Lgu1,>@BGEK:$hLnF8\tf3eVSd + 5?9"'42AKLsbn6b79KZ==%7Wl@glnkA + ^e_[6L'o=c+Zqf'Vmagd8b@0#PJ2f&^3JrAJO#i[*Q.^FN#K6;$3L4*[Q7Zm=.g:egq<)N@_4K>PS!ihqH24"6rHu0VJlE0+fu9N5d@Ij*Q0iXC_4an-f)69`TGO_BiaeZKoT6a?+Z?_Ng6)D!(_l\XeAl0XEu%seBtH[RBdc9[Td3nHU"d'TsWQO>ahq*H + %B#n@BQ#T[FLV;gH1DlP(=8c61ij;gB4Gm1o%R/\d:fOdRSre(HL5+\T;Dh8/\lpkCK,/]= + Bqp)``p__n66_8["hd40?(;r0iJk:0$\q.6Dk10-Ig'\@Z=^q2;mhc*nYFP'@kZHZ\qh8\a + !F\9d\]]53(h"ec^6KNmt_4%mHT07)@0YNOB;>-kX6s1K+,_L*GJ4:@30)8ij'ICqkU>U-\ + )*Obj%NdO`SpsuB(l,-PM_`W1,Q`WLj1jmU_V-1jSHu$S=$+n7l`7EOkS:q$"f>tS_aS_6n + qiSQ_(Wk?MQB3HBr-rQGIEX,T_"5meY8O:B#JkbtT,T^VNGi,a"2MCmiYQIOpj\&lhoukCc + !2!L>d7BN!O^_C0h:?d0>u5XPF-$-bhGg'' + 9RYaE\N4e(r94+jV!LLKuUM4Z.R$-[=@a`]ZOY@=#g6q:(=>eCd@B'dq=jA"]j8cJ'bD>n21rc.*bF + J+(UkC.jBrdj8^RHM;(lb:'urk + O:Q\a2N%m(Ua2kUYf%5OBNFmCqEDkS`bgbO-G9m_8)VkND2\n>--6n"?`Mrrkl4n<@#&H=?Q.[cP/KGn2Xo,`PT+$?;_-3N-Uo)D%T^GMlR3#Y[ + NE(]H(9[25I:5]%Kl(;Rb+%Pss&,,::ocO;.E\hn)9-57#M4[*/W[7BhPOdUTq$M!5hglub + j.ptnq8e9bs/_nYPc0)"q^Q=V+$9+R6fJ[pPYNYBMacY(e$/t#G3;sG)9Hhs]=X$3R!BB/ + Ej=FF6mDqc"(rDKt)m1u0kY1[[$>OE*E&:/m46elSrS(6s&ID9.Y'8_X%JH_N"YW/.R/gH( + %8+FA'AOU0qTsQS#SCVU=4L/"geZ/k"_.%lH1V0,XY?A!ZCZSVZX6:dVP8?cI + tX:[UO2i2IOreM$GjGp$@k<*DTX*F]'fa*q3oMtgU? + rIZE?n0j7-ilZa#ENV>0afPal++',&<5!+YXc.aIo^t-?R;sCj*n6LZhiMMXIZR[`5UB`2?l(e\'9^>@pIP`aI^of1^1Jou(F/8+`:?[p-RD`% + Bq`dmK"?R>PZ"4#)/CB&(02%>$Cr4"$['GKW7tdou8Q':N1",X#*2$1B<@!;u']b#"%p($_<7n=tdraUYutf`oRf&ejb$uDFs;,rW"^hAAL+WT.4iohS+BE1c=DfKT + sg+1;BV$qZUuCB]RkaGLn,7BS9&DAH3,Uf+M+R%F!.Z`>?t] + ndmU@U\BHUcle=nX[6lq[!KlbrL?#g%qRUF2mWgBc.pCIiJZPW5C2%c7RbA(G8^Y+2Atc;d + rhXUJIisVh<1IU>mhAi?Go_h9XW,A74=4LD7epf^I/>oh0CWM$3QKm5;bHsOu`4QJ'Bf)C`:m<`P+943+=#K-(E.?moGr, + m'*TkZ8#hoB_C#N=kl4I*>TBU[KlRVGB[S;aR_f'H^GO*E=t!LY=^L>JC8@h*eM[WiGg@$B + >l`SLp;GVJI>A$1G5dJjmT%09h(+EC1ATIttD6;l!\-?%k_64u-^SW#7Vn;Y/G8"0r1l)oS + N:p7<0*tI9E6Z"MX,"-[;ae7DOM(#eCP*hih@Bgl!c3>/J=8:k8d1g_]FQGToC/?$83Jq?R + .)aRL%ooCU:/R`E7eLa5UP*]KM?YAoM!BfV3@9et60*P%;FT9g=^8/pC.3UPVgra]E14;sp!+2U_!MGYk\'8VX2!@a + ;TnF*o;"4i[B6fB(n<.aQ8H+#ZGmZbeqKHGUq)0;>`M*76UKJ^1=)Gcs;YaHr;#WI4t& + O=eaRff;bUeN55P%\?VqJ59iHbm@AaaO%^*&8G%6WIrKo(n)q'l'WYsoSM4sKRX$NC6Uq9f + c7ll,=T[ij,3(JYRnA4<9"ub/JQp.`lG>g/!Y0%'`,CBHLOGi*68m1ohGM!!#Fo4]B.WFtZQIXW=X)K*HeI!4+[a<4_7S;t5.oGJ-DNX&-OADV7SL^faa84,#m=@!SL(t]2LN\" + O2)1rYI[EAn6!17;UFNHEYq^QE&8rTT[5P>a?M`c"AnX$8Q;!_L47FM6e:F&\;;Y^dPA)P# + &0Z["B+D/m(.IWt_0@I7@/M$uE,H?+(fL`L>VUs%eeZ/jB+En54c"(^,K';C&RoQJM=FUq` + L*D:@_?'+EJ?9h=P"DMHteTq[Q2BqmiQ&@JWFg]5KHtD,%Q(VP&WGi!C0b[")qQa1,_bH), + Dbo>d9PLelU%?B.dcn]pNj.A'>gS0kO\?>QVIAaMr\-N)M:nRkD1)BSlg=mR-F)G:2\MmRPh0Z&CDZ/D(GAd$/)q0(N?1GW&f + (S!jkB-m";C2g.2?`#$IrKi1_DgoiiI\9C!AKA'Pi*26JX_Q,DD:o'7E;_>8K):;Oas/0Vd + >g!KlVV]auE`Yj]o9Zo);e93Hm4?SBm[G/of-Z2Vd'*dr91WF3XO46g.elT_*\idQ0"Bnp_4)!;.F+t"SAe\m1 + P&\L5Zd#]/on%SPArSW&.KCAdU_0Bl)iVZc6nX^uGGeY?\I#!pV?<>5DIjsMB\!ciZDpN^4 + 60EY,TCcHVdX$C5l?tUkocC[.5dKm+#"Z95[&dnF9Y!VB+EDC'IH3Q5ti%=bR#QiEl!UbJ=IN)fJWq5*$lIp%m1@RT`M= + 4*3?ZSb3P>]eO$FTdXCCTcg,-T"=X + ./T7T"e^`QIVf1$&\*<0]K6`FA:)i4_RS;FWKS)"_%P>\=f\?,h,O1i[J&<(2 + CRNLb?1..gQ[OLRbI]12F4((=fq*-2ecBZE0%7Oi,Ri?^uj[juI`\K#S/KR4C)ElYh@&Nk0 + Ug+=kg(C>s!Oq`BrCfhOSS#n56a=N&XFF;/GL^k,JaGM[l@Sr)@*2boL8>)Kn!s2$SO;hSY + OU:Ku%$M7HM9.PD')AMiB`F*=O"1!/#^Va=@2]\^+Gh'YN3!#8+R?PqU`/3>Ng,F(%$QP7O + %MO2%KqR0>c/"#PfX?!Pj1f8C).HX0Sta[P#AWB[!*6a7L[))%t"r.Uo0$M8JS[%([1KY0pQ^lWBAX\?XU[)@sZ\]EjI#Z< + %;)"*i$Kgc0V<%\R2#: + 'Md0D:>iQTr.rW,b-)N<8D&XAEm)W$Tui[^X!.0=i2FsA`5e)U6``"<`:=>\`Qntc:\`[?1 + l+pqiQl&/`p.k$\bd.R!MKZ#:aED=3O#*NrQHfDch.VR<<0iM%T)B(:c*pR7.r2(UJP^5)0 + GCG8>X]B[a)fGXU/UBd,pC2d0PR+b1Q$@4:n.\,*.$BacPlqnG,Y-X$Q5=63QMi'bA*6)BX + qX%WrbIKcR#2a&2'CdJ/Tb[370UrK&<#$4rnm"O/./+-,^$6#@6*AJ7pD`))o0:Jp:PBE/h + of$KBg#[J>._HeP6eN]ju&_(1g++6Kk + /?jr<7FK.N<-5ANU`P^G8]"Ica=T?lZHH0uHrY9VB.Ya&mkL8_EYL_r?%lN0_5B"0S8GqJ?)l%iX2V3m"P4.52M,/YieffXC"seh.V`&e3m["p+/nWe&A`?nW?Pi4'oVU#mL>t4VhDQ"2C]7>Q')<7=iZW + o?4iH:gNEp5`FW<;9$T)hi7t@h*+Z@o?b^-gm-pXfSM$#TnY\8TnWur($`/T"UPq]!bm'i" + p_0")TMI@a0m+f(&^uug'Fg@9%rTkmB[.:iQ>0[_Hn4f)=Wb%nM&"LmD9YOV0MFA?i!>.2>rCR&"ln + .iM(V!OHqe*g2roje=J1+6?!ZM3_r0*4A48".oc+KmPG_^$A-N,TFp(0u3QGH"g3r<=aI1q + >,75VaiYDlhVCc;`LJpL8<$sRed/-Smch2LgP-mL + g/WN2WCAlKO'4DA9f^LilPV65em<#NtCGB_[O##p&7I=_THBkJi`fM,%bkKoqWp')n7`ArP + s1Ua5m:022mbVG(GiNG$Y6ai6Du<@QkiM(Td;)Gor6T^:@5RStd`;`ugei@^-kY\B+qSMWF + mVPoN<5E9?U#]?^$?;?5<;idf^L$l=fW+]*dN"@&Dlg+f?5,@O-1LW]\C1\4I7`Pf&R;@>3 + Cc9COX1@Rp#&IlKCpqUpVTA,l8F35#D&NQ@ma>qVcgMHiD'%3oSFUN/g + MP'ZjJGRef$ + RTtmn"#Tmgen'`pMmMo'ZLbjZ`=u`prM8p_3)ZPGO:H'eKTT02,'!$g.DU0(9>,qVIB)dIo + HE-N8mIm,DFSn0VP1k4e>*#SX*2O`aE`jpAm:/<<"'Mai"#cOTF;p#^7!n>T(Mg_OkMb4.0 + lE;66mM,`Ul=)`WpnX10^R1iee4L(J*MVfP&'(loi"IkK7uT^rAmEu',n7 + JR6K20&D_V<1!uNP9-\.F()-,KD?W.?ebV&r_l#%=*,/;=*m,PM[,l$.-N\Q;*Y-2Q#uaFB + I.:BN(M[8-f/en.b8JpJ?jQ)0@f;&9gMS-/nG(R+"T)o]9Hb5.HJ.FqicB?Xg`/p9>4]-!1D[IpNW;P9XdfRhhPn\.cN.6QUJP#s!.GplQTfp)hrjSp8SQeL$NChiil"S/?aH8hZ>hGuFK'IecO#q,fHdDjLaY[0 + ep*GW1;%khBI=oO#&`PJ"V=^m!Bk-J-n)sn$`-OS_7YdH>oO + (WJ(/`]U>\3`j`X.rD?V1cA'Sn>J:)b7="f4`Z6!s,+.maIC7RLSQpk1gLN.o'7nT^"(rtU7)@o + 4$NL,f?Pa^aiH],isGPJj0!12OqY1R?)-PBc/7,9qb7VQb41"urNT:Z:o\"WEY!VFTkbg4` + "hn>]/RZ,mB.V-C*(CXr98ArtHH==i$M7AeUN[TdV"qh<&OF1PXpf6bL!om=D[Dp\g`"o3e + !@;p/*hBr[,`4k-=r!WB$PIJcl2/5Q`Lo778/2AWTqOo3Ob2L]lS9%7ddV4i-qL(;47aCA\ + 2D#=UV6,Wu.FZFo=u^3TCcE;(Y1o(.j`:1KE;)g]L[&sWess0XH((I?F7'pklD)"Gn"9HDY + -)R$L2#b^hDC7Z[H#99&`4@a9F(;mDY>8kPSXGfLU5tXHnTU2Z`?A5K*S.=Gj:.smS8#fMr)PD)_IY^ + KII#@pF0!pZ)ag#Y?k_%0MX!g?@'OUo1;5/l,8(;U%3sbK)g3 + 0[=`n5,M:5/N6I*<92M*a:h!.=?.*(.9]W-m%l0Cot2eJ-7VG>Raj9$M(hp%Q&f!?FXf1Uf + X?)0;Bi-rc!)hZZM."bAC\4s6BgC65?l_[a`?1g4jeB-=&g#b7'q(Y8(('?f#gHS6U[L!(Y + f.gelJ#P3E_VqPucga4niUHZ.9F-@'u":=l8d^-[Mr'asu[XGdErfVjG[@K\2Yt7>B`$Skj + mdfWG*`A6;eKOQ?h/X-PEI_XD@U8E-`>@uK`iJQu@WM5'4f5*;Z*=&%FnYmaP='XAOPQFit + Hjr'Shmm7f_-*Lb\o3g;'$'SM=-=rGp[^;*c0&(F@\8&%(0SSOkRea"nYBBpiXubQ5Pn]k[af`3%ejiCmnV]VC;>ZY:D3`sV,k4po:L#O\4[gJc%/^JXYnX + NC%`pj>\WiC^OCn2>k?!f/#qH>m$W4nj@$';ObHDn5*k;?kt83GLL^;n'A,EO?8Nd8Yl*ZNK$b-#=dFc"cG'uiSk+^/L@EUs'%k]!iMgaX"RuL=ZD=d:[$?XrraCm;MX2VRZC2m:Y9` + ?&7S$*O.a3Gsbh/m;^]]@Ao&Q:`Z9h#lnNnUe9T;bli*.Ng,FKh]C-8J`1Zt"=/Wgf]OSQ( + <=JVRYKGJJ>)8K.A'-rkH[T(WM,t-sn'r&[]=ZVmN/Y_kAIhIuK1@bZ;O81SV6r&=G!jYF, + befM'/aF0tpE&'P1a2$n?as9;6g7_iV6Rn,6c+=+^]X+i7:qVtk9TPl+`!;pP&a<1qa`.J! + i1LXS/$?li/b,dV1dWrc$EkZBFK9Y8KOt%l?5JXkf9Ukb'_7`M,B,+Ca:kaS'A5L;^>47M2 + h^Td;s2=#oiTBib4/e9h>JndT_rRC24Xd=Wdk:q8_t*!B2\;h_FfAmWY%k/p1D + S'#-_qG\u$UV9,2_EhD/"Z$1Zd?5pi_/8F]Q2F7KW`P^mj-Mo]2n:$,,GHVn+s/`oSX$/.Xj0 + IM%-N$1U%9=P6[@iZBG@SI9C(.,%Q + egJ'W*e[Y5#_Ilh_SPhOlAu*u2^K=?=(S`2>PL_$LWXpAUN2_gPX$eROCOLl.o[^o1HK5'A + Z@f?$7_^'m#@hTkV6orne^`@%7c'-+8*V;qY8_D!+^L#98T*?f)h2mGS^k=GB'kk1@k:L%D + 7bWj(VP(u*#!BPNjkna0&\I6"$Qn(`;^"u`4$6_bTIudhCIO^5DX;#-,eC.nCFjoMK,4E?H + 8H(+%AVWnfC6@q'RKLaCd"P!sbU34VS>f]T*+)A]n)`GL+Th1:c?\;.$)$WeMLe'$H)6 + 8ur>^B=:6[""B1;(@5H&]=ou45^oBK5GQ\LY_%m&lT:ji1Co?P>#\_s:t@pcE:/]ZRlB5R% + l^5NmT)#ttSFk^3=.J9:Af6b@XllD.Yp^p1I7`TqAo8lIeT+0fXB8uH8/%I:q:l4nk>4M(N + B).Qhk5=/OoA3a^">F:8Hj>09,$\o0#c91:B:K[m]P@^;EoB(H@fC1m54:m)%AGn0hpAX72qo,&fEmMMqlqmO#,PUJJ!7 + Ve'pZ2;1^\E:#IJA0(o)@(AGRj96qL/uJ#6A6/&+9Kp#69hmif6nk/'d_4%0;9V*5TW9O8/ + RSF<%!m*fq:;ZclBGI5S"AiG0&7Yo_.VGU!!4_A/.D?n,Sg\6!tc8mN7O] + $dcWs&Ah^iB(o)mUX6sh"U#SA;$tX&$:'1YDt4tMN!<]qn,[bLU9tFapCEA_&'e#B-CiJCi + quXQ&B$I?JL2:r!"?ZE(Q&>)n:::!i!_o&&FhCe&Mk(eh$J$&'6-2kJJ&KeQLFnF%:P&9iI + VkSaSLId)?JM*&RuSRB,33`%.S$J!q$PKbSX+U&V1!$U)nGCqW?(Bpd"N^_2B*aQPkpT#r" + L$nS];^ln`Q>(=B9(nZra6\d>'Ln.*\0![8@F65r]##[h$TJYj=T@2`V=77"$s!D+=tiuWc + T*mr^a&b>(G4TSBI+%"rhOockh&eWL/r5&48O%/U>KGT3\,9cCpU%SfNH599V%3VqmU&7?! + r[ji8,JXa6!]\%p3@'b[hm%#D_W1^f<[3/S-.'RL_6jElK]dp')o:S\iDpY4b9i6k(?&X?n + kq&IALN-i$Smbk;NiP(_'K_[/L(`-&u$V%="9]kWnFb%+2dCf6P-5Jo"*C + 9-C_Rp* + `W04LRo'-\G1-Sb3C1DTH6DY+#/[(5\LnKYSs4k2KOp>'9^LZANg%+R64>)(L^ts0)u;$DAD1:)FBl,Nm@KOjp[r9(j!kb'D"FYmiRQjr + j2>0i?Ai,T'ua>$pfLC"!eCBfGK[J&>8S3;*@/Y-UO%I?'=XDMDXn/rBelX$\4T[mf;iq$7 + u;B*b"[L@&Ol[W"S&-)DjNF'OsU$&Nl:j$.]<'rMcd3B?S*n)/L[B]uO[Ng=m>Le.,'u + G(B0LX+/5LVPO+e;n*"pC4F5XF".&=ZFGhYN=U*FkT[Pn"4QX$q).9#50ZiMIX$l!=DA"1A + [aOob`:h-lSf@F]]C%sL2.NakC8!B)T3ZI&t79f3F_$Xf89o_L5H+Z+0DhJET=S\1$6aNfPL^K-?kjiqE#/Ut(GcHmr=G1mF& + -Td5qt'3KcK&R*!*Vl,kY]4*Z7d#0t)dWpLAACRqpVfnBg8)'di+*I2PH^(Em,PX' + ]D.n(=j5i-$P^u.3Z*T(doU!DhscTL"MFlf9_=(1*/a>+#)Sl%g!*rNY]&oBm/nc=;?GUF_ + H>2'4E('Gc`(XZ5`L^#XSbJTE5t?f84b,Kd$APBX]d"NK)4=&"ql<'2fZuHlT%Q$3A9W5`u + o0,RUkpL)2KYQGOBPl&hA!Ok4<$:F/_:4d#.X(1C5_YG_u)hAF;/*u:h>+g6Yt,lM/!)1de + g3@g@tZb,j0^7$mC->6(;3V=db\H + d+M\H!uki[?!uSOo8k^H)6sCU[NtK=+$daO=!;[Jd5ng9MP6[\@F\K5M!%%g%,ljXTqc"@S + Xu87baG.F[ONYc?51`l0q`'nO&UFGYd7IpR2$&t1E[=u + $rK2kJ_amFVesnq7A(7O*FbUt%7$@/m&i3GRN;+o#[GJE.-&m,R@Q+S;HKF)*]/[M>-$&-1 + o2iP$7t;_DT\?(a_5JCgc(4fOI:T+UZ95tD'gVAOW[!1I*U5R8Tc&Z^Il'fe'-+M%l1EL1r + sYk;NA!BqG]%>lg;oKc\l_2F^AQR+:E.03AN)Omp*MlH7G*npVoP5ZMq:U#G4"/%UV;A2U( + _+SU!Kj%b6-a"+/m3@&s]G#15MbP2X$^gV\%t,S8 + q,7h_%?Tt.sCf>*@6]j(o=TWc1$?]@+@drq(a!87h4[C;0=FLl!"+b1@pa"+JJO[')g%KHf + TXqnrU_&Q5TR3MA\ou.?7T8U-#5R5;,>SCsaY'T-1qnnMhBG9>S)PPY#orfuUK?/X("C.#+ + gfqln(Shota_ED>TuI-rVoAd.WBf(FNFRk\j-4p@'pGnd@>l'iMB*Wn+5tJh!"mIB3A)Hka + o(##2p8!Zi1]0T#b:A+V)V(54jTN\XNb*2U%/qL8/ksN$/os<4+"&;;WrJ;+#3@B@F,R6-` + HpscCHT=>ZFK\=jm^+&j8J*,s2367L8rb'Ko6PN?2DWS/EL"&-1i0pZp#SfG24(%Y9`s+jT + -aqmjC%f>sl*n=26mr"33d"(@oB!N#ji$3;/6!$#MLG_cR^p"GHh(YnrFP0>!="ZRL7kEZ# + Z_%mqN)qY&3`O@kVOZjE6ef],M(S0FaQVJRZ.KVk1ZQN!"!7ft0'HR/KjO;qGi9UmRLNL3B + k>eGs\o8\KgX#ID%%\Q\Rg%U(-URUdmWdiIOZso'YLHqo,FPTB0CB[.IN5"Q"/)_tTJ,D)N + XIg;'<=Ce!QZ6(jqG!74*_(cfXVL)_rP7LIr^dc>?%M*C8B1Z"$hmbThWUm`d + 'ArpilLP8WB_h-hiFIffW.4qb]3#N/c"TG@P.3!%qQ"Md8(i2@+#aqKs<@o)2sQ\uK-J`+7 + _'q-B&+efmkU`I20&,N%LJ7KdCedVQNou.Ti>b1QN4qeY(kC@j^@6Oq3=;4R/()UH`iQll0 + 6k^`G6hR9HYU,ASD4smb374$<+hd_ZBDR;eagKOmVX[&n:?WbV#j(7g+da9mOr:Z#m7qs%o + YX1@Hi$%^;kEg``Hc=Z`Ug87lkNItOO/-@F(:[cr8I]0uB(MGC_1+]Od1WgE]f(47WRYbV + Rb`/%@BnL%ld_GP:N'1/eS=R,cI7?\iGeR^=S(),q_/^#38tdk=MJ*#pt]8bV=OD10\>o[ATk[TGmZIn`f/8H+>($!s%@[=uQ^3? + -G`(;(I!?3dnK-j0qFIssR16d=o+-".'WiC#rI0n&:oY3(R#"aPj_kVIn?o'S + If+LKtHe;oC-(I%X+@6oSp[Yg6$;5"Jd"c:'5>cjG/GSGhaXu)%_l^qJ&;! + QP3O!@e`=-Vk+aDk$X2?/273#2aN@'E(oI4=H]Wi+Tq7\#;K!EJnR\@1=r'[AT%YpJUhH2tQ_nK + .?4hlhlD:U8>8hW.XG;,Nq@)\d?GEP_UU\f^Z,/J8Z8L5icQQ# + 'D02#GK2aKuEYJl"'*#@N'!'`m6#49bgoO+$eP5F:O3"CJWAGPQ-j/9uj)o=bHk"oU + \G#m"EgST_&.C6`A6!Rc54JdlB6T?ned8$!MXa4*)'+bF3UQpMR*_@4::JuDn3F)J,9;O6f + e$%u+^!8qSf6TAch5QD%E"$.Gh6\Hq_n,\=Tpfg-GGnFLB7u7A2KI)h(eDOh:M(&R276%7\ + :'l"_89@mi;7@:7nN:(YTMQ)Zg_`K$)ZkR+)b.?i*92-J2IeL&"5)gO!`X-"&`u5A8.uX\E + t2s4mQitDGM@`UPH9ZOC1+(?3UM9m">J:qa&%X84MZ.gX:Bs<3LekaFK8L[^lI< + P!Tgra>5aO`cJ0uC_*NQGBV8LW_f!>8[0R+Mas-qG(>KP`WEfe''Xa-dSf"3Q=rVBUDgR8Z + OdTqjYX'9MuN;bCm=@^74joJcjAnbIe+6lsQk@g[hSK928D2Wo2NSeK(Ebf1Jtj95%G$93; + A&b:oTFR,PU"GW=AU'dhUici35(((ds>Jg_D(IEdJNFBU]7u[SF'P<>%Z`?5+>gHjNEfhP8 + :cD'hHkk\WGGG")4;opI%S*/I>RkM0; + egFER?0%JeG?+pQY=&e_A#*@R]AUUX^?Rn=rROsa?t`MnfL3f>)j:tMc"m37R.oY6dN!=:@p'F,khrN1F5T[D5DrZ]D7"[>83G\$#usN5]tZ@\eAh`cOtDIZ^:4h + IXGKT;IXk)*"Lgd\2[\%o;7OS]o_-Z8cupsK9>n0N5U:DalF4$])_ZCVB + B?kl+$9h(Z`5sP>_B'G8H#^&K'Rb"qF_Mq+QX40pH1P@):#bBO,4)6((=.fG]CQ?jur&I]< + 0!$\:!9j2'S6X2\So)bLX6/%9SD>K/51#j'r-+Dbabt7'Ze* + ,6]o+l4aGLMG1$:cl-`M5HV_7fOQU3jius!7(@(lTGms0i4tmK<0FbN1#S/TUc^* + :b%,aBkWENB,DOpEYQ0OY;URMg'#SI>MYd9Ek&ro5Y1n'2L2#bTSZnX0K"R#IC+%Gbf&P,O + GlmqO933f(k^Lpk>PVOCh'a4ps2kM9!.[oUTt'Y(+=QENn + ni(kTg]Vg`qeuZB9$&ZI6H)7t,I%82j#Zn3`suDGbjSSrQ)5?R'Uug+#oDKG`"%Q:,`aYW: + #p7mFm8T9f+5LdZ0/:#oRr-&Nj$22l]u(B#a]Tf%V&m1;Z]!YVWF8uX4S+>%feb[>TXV:g) + _qTo,/q?G3lV`Uij/mOb)91d(Or;poIBW!/)5M1Mj + %(JKPKDZu-^GY(k?ZK=$gdjN9\!(r`I*"G`2WgLq4&ZjO+Au0L6D1153uAY!A66GcdDY4L> + 3=*G1:,A,5Ap1UP?RrgPfO(&Hb8jENa+@'s.CH+]KVC8kZKTS,^8)V*-p4^^>WTCWDh6aH# + Tg\Cbs0:j[kG6ABO/(!:V%fi\]i#!gZIQHTB8PR])Le\,Y90RMG8PRoh-_CY1d(!1\]ct'q + 5iP@o"_4a=B=fEm7jh[sB0ApT(F!!^&U'?ut#@$m*oBa0NGneIF_IP!U,S)mT-RMa?%!$)L + PEq=`F7X(gfK6c=N(tWS^ZYTj0Z"_A4=oA"oM]70OY.CEX[$$`#MrB1?u + 2[%^:=DL60-)lUhLT/k1u\!$lJ>h"3%1jI)1)5KBP9!1:)bcPKB&WM!Lh%_S!.sU'$()6ABa*")opu"M;B%pP^obZL\ + 9UPM"(^`5+iY[\Ukb3&lO/%ZFoU9QSmR7&(L5)&\f_#9+IQXO"Wa>=HKW*Lo,](fgfZ;^J6 + f4Y3.qTO8>p.R2R%_]76%ZdMLRgRE2m&F#Yh4P`.MqaYaQ.J1HunnBBU:4)8]gu0pX + LBqj\I8P:,p94p-kW$B9N,s2s[08`J=bTsqcbR#XE+=V:hk_H#:u + DB$nG\rn*![2jd"N*i2!;!>?;XS<2oFP^EXf>Y'0Va(#5`S/dd6bdVMJs*i'2hY5dUQrZ.:!'Y5KI+R]pMt[N=(ITLe"!c;W?T^.`)Ba0V=G<;^5s1nAd` + Ps&/19cs[e2^i]lJ7X;oV`@`8K#4O=J.MQ:D_(roI;YLB9"^2Y"m:b@Cn@alDeW?!Xn + <=t!#JZ`BQ2M#>!lI1M?7Qi1,KFg2!5n9*49iVgce9+WOJY!b/cNpo'#GDX67&:0fG?'o,3 + ?]%p*$^T/lID_:VgVIni?6X$qZ.@[MKk!_TP+R=%b$+l#^f$p_Xdhd+jbXE\D0g\I'a<'L: + PQDc5 + &9(FikKHHqVL?4`S1P?Ml1;a.!)aJEK$dU.gEER\;=Y62+5UT_=PolQ;g%14PW-Gt*`WORG + "sROaWhb:j.pA44cTO?^KrP^r<*IhG+-9=QorL.298$tlOQ^/-r;Iu_QA4<8gL8tCA[gCsh + +V@L>DWq<$upf7Xq0MdJ9=iGX+VFFfg=q/0Uj>`qXPXt"s*>T=*,,1r5Vt-a,gQZgnh[a!C + ^7WNWmL,#6>=\H;]G;d#[B+>p*T^29a;CaPB,I_f/i8Z]&0oZ\m*c!jGu>F[NVfu.a"> + rfXTQT)h[i&QWsWhI:#k(DNWnFf&F&1\:$9=Y7l^[I9Pru)9co!sE(g + nhX0m3S`pt_gHRjZWpN=X-23"^pt&B=8c)Gr_G!J:abN=V2oLlFa*@GXLEjhZ0ek\#kU_YZP='%Ca3Ea?[aCN + UgLY(m:/b=ji<7/fU?`49Ah0K&.QXW+t;n)5$C+h]/SVEtb%Ef]TMK[rP%E2*m-oS%EOjEpCV%SDZ(KS7Im!)Rq$p.T# + tS^?;"!KL'=kY>\Y:qgO7j\W4c+>RM_<3AS,5+%9Z\c?Y0k52uU_+ + k\Fd"@CqO@3+Q>>&nY\(=ZeeW(uYhjt,E.jg&dLKo%?3=P8"@A,i$ + J5l%ESgo-Gg:,UT9OlL#'qAOHY6r=M>giEi1+G!%qgWB:1ekqL4)[SK,sZ=BDQie5X$4]q? + `/X*VP8ETP/#Tb@o6LkeLjS+o)H4IqWMakRN/s[X"BDHCS#_ktZWj?BM.:T*@=5)?dF(L74 + \,R0][L*VPJ+q=s1`oHX'PBn3C$.F71;PNXWbkWY?s:8V]2VeR]*l06@tNh.6cMsA.)C%/< + >mY__gO9t'3-AuZ0@$QK78iO2RSG&cC5\Xq/Bk_1hBm.%%RWr@Ohe;5;B^+Db@#O7:NL[Gj + MVbIrkr%cC1gM0dEC51PZQJQNIherGO-J"\,r?_^3ODdUW)@#dhP+[c[qZ&.#G!jC[?N#7+jPSI$)E$)Z;C8,>nW+R4^ + Dqb/*Qap1F&Ir:7=F9hR2tp8Ls)IUae*U2)K;tVSN'(^[k.l8-\)FaSa_d4TRZS%6#,VCoJ + i6!2@jjGSF\AfnYYgG[din.96&QW-\1()Q"U.N:tCq@mRW=W2_"k:lKL7A:R!'!tM)TbTY`8Cs\*K'bq + &54ss-(J'55A#oH"M,;2fa]Qj7P&?prJ:6Q^E#qReXpGM%>UPDU:ETL*L?%oIdE;T).>WO7 + kKup.'N(=+BpVJG+2cG(P!JY#b!GcZ3]RqT/[4hk'Yq%XS_Aq<(+l(lEJHcu@;YqBiI*uPO&--dVchEL,Hr!(UE0pK0-[]jPI;"B++*!gZoPu&* + *;?o?n$g%b0Mk7&r@!m,cN*k2!rc!TVH5c$Y?1[8b'j!pI>?MQ8*bL\IL]M@%%!YI=>OQIp3G_IP5_3`I4B2rt"UG!VgrUN;8frJ"V;dfRNrE:cK-f%0qPQ@8 + OIE2>n&76sieNMt/53I6Q[ef]53o%?O+k;E6"g9dc/tAQ$'L[D=MC9P(OjUt0BAS5*]q\`E + HV*hYeA8STOINCTdBBiMZT2OumC<+o*#Mb9UCXB'+:]&e*2$/OiBEU>9a + t>]*N*NRa#4O'LkiX6#'>Hqd@S^^3I?H%TqmAnI!59m_qc+#6r3Al;ctO^^%E\F`fT'obE: + qAA8do6So$Bl4r!UKkai8<>ng?I[<1;Jp#K`sWu;Wo.i@;q_4tVaO0sq-:XH2U,XE=S^c:V + cTu0kZE.:IckmD\P`TY7_^SM9CS7RRY&i=Vk^_M&#IYUYa[U.D"&d'RK?3et + GSWo=md#T/79Q-nj^+/%U]KW0m8.Lsmo;Fo%YJT>Qc)bLa#G2g$s/>Xl?'$?C(Wc$V"0?b( + <\=lRE%*Yc?1J0-bUW(1,+O1=^1HE\NXR,e>e&nQ]J0FR_:!aIii:Fnn*)OPfaYPW@685M^ + &.t#b4%E2),n!,7:VA8QdZAcB"Oi5b=GoVgjC!hOOd\KreVUO3=0Q($ANpF8NGPSK[E+21J + sGVu-eK/NKe(<''9Q_V(/*sJWeue$BA*`AR'BfFNNAA/( + $"7^#9t[]9q0_ja!ieD=((!2or7PQFH53k8%/,#Cr+>6Gi`[l1>fkdtetjO\rW*/HRX`=r- + !4pl`M0@$n;;#1:s6+Vp\E"%%tkXXd1n>3:!6NFiG0emIO,X&WW%Q9K/VkDI6UJP?M6r!CP.-f` + -Od:__A/+TNT1#T^_g=JKL%\g$Br=X"YRY>eJg^hUJZmBPt%4EKq)l$(g5&Q>fr\]-uudSc + h%KLNMLYZ/YCGE]ets`Fd(u=7g,BD[8Y+&CG[rL\#ap\l6/-2FQMfBrA5+4' + WYs.AcXs54"\H9qB/(cVdCTG.]`:bDr;fGt(O9F$*p&dUd*/Ht'73J1+d^B5<9"sF*mKM[[ + A6840$i8PIO:p%om_%R3uM"Z'Ibg\a59&g?nW-I[1L4dQq$=X-(Lf"X+6s,E\i^?@p;(a1` + fUW]8KMdV(:+A\7XVKj6=c6-p/k+F+(ZPX,N)>Tj7TdnQj$[U@;6&S5RQ9:/_BX5]l%W;m(:=g"eaQKZ]i + !SoW-pm60XNp6q0\2c#k?5Ni7OTMu(t!/R/R^t=I::AAkP)B;g%ZR1G\)H=A*q*WK,WM<5H + .+-a'8'#J9!"A.S;H2r/KmbDGe?%uIJuqZZ0XR]Pi?j)]92$eNf8]l`,(XKV)sRL`)3j9X1 + *QR.Sg:5.Om\s7AHW&!K2.X'2GhgO8Q@7Vf,,6=_2S6(N%FjK)M + +\+^<"-mIq%5ul$::6OUAdMZ\8EQnu;9oTH@X`SHs-4dS&8ceh&G/NOu]N8_)>??`#,GjHO + "-W@=jW(HhUbTPVmbltaln\%FA%trJN<'S%!>_N"^=Qu\?o(\CE'P8V8oi!\C[=1QL'e"c% + V#\_/KBKSl+trBo2Md;no38X#'c,"#@'uZ=/GT/(3q!_;)sQba>J/A1]m_7]30,Z]"ki:\; + B!gV_*Gda-SbIA6E"I:Bg;LEHMO0FARi5r^/K)NQ'%2ojDg&8Nn=(_154lht"q2`E@qsNGQ + fXZUDfiG;D!T!Ur3AE;^kGk8i^5aD!r;Gq`kI4'VF"G;W1.78m9R:0M+:.1%1%*Tc/de)I.M"'g__T4SN652A1!#u%0^&leqD2_f\$!K3X + \LI@XL$18pU%Qej_mE2Md=$U@!7&\9@]O*WFNpYjF.aKL9K_]C[KYZ2fb>?[*,QT[S&]KL$ + :)+#KYU? + H3?RUk/I,cR + ,3EC@d?e<9Bpe#`"$<%mO.]8LgDZKh]=kUATN.]P*F[5/@)*$7ckO9]"JAWo5S?tR]E!Mj%Ic^[N_9bVX + r+td%F6R?^odlmp)`2Y"gI4^VP5,.g1eH^g7\#D!NtP2E[5SR&]i,p,"?!SMVk7q$&oYOYl + aejg_U6LR*5+1CbY#29ad(A9EFW(!SS=IdKr`HgqdA0!8+Ga#8ADf%ReD6d8!Hqj;```'gS + 2k%kJV"4:tAT)Gd[UE!jT5K^Xi#&n0H3/_q#9c6uM66DbO^JeHs/##h9=)aXI":jun`pa!, + a.V9IBiXep`\-\s!7"pg);)BGI[Mo8((1C;adIA;Uo,huN+0knhOp)ru#9Yc.+S#sb1(,7G + &L!;P+gN77ng,I-.3^Mt,'#7[1,1"o0-db[,LSRsnjOfZ8L+pC,]Z[+Z;Dog"F!U%l3,jsk-.-/lZUnW:'iH<>#V%h + C5H5[5Ahg)X%O)'VKqP#EoP`@S/qkq7#D/lEAhTS*ZnOKt + Mb#2j5%JMn0-9(V$2e8_E4nJX*$/0lHc0p%VFOj;SG$7$o#5XYhi6:u2`#]9+kd0WFXk]Xl + G&er/C)ZYNpiE8#o=#EoZ2=k*31KubY@5a<\2R@B]o5ut?GrIO+2fjC,1P%N,IlOcg37E^D + o9DP\N=kU#VF,TMcpbbaN,ht-mahWP,_.UqD:Ke% + m[fVPMQ\rg)iWkg0q_Hc6<^L71^-`8jV__+j(O-TES+B)5/Sm&E>6YRd7g040u=]1a,2,]g + >[K6Bj&h1bh@>013*(6e"+`oL2/)8OO58"5k^;.&)/u,[G!>cI3D'75,uD@Nb;Q1A#0%E/l + '&MBt\J-q"(Ko0B$F!u-qn2&&bQFH],"PtA?N8bA?A1n@6'gin6#UOCm;?kJpofbu#h + B-M6$/uX6JOg_fSd1s#.(V=Q*jfg[p(`#>P5[727m+9_-E8E>d_saoo9>dF;7?:ZCh]s!4NWF#s@7-4Y) + 4^A8E-7/._<-(BE"mEDjkE6G*_#%\cTm[IcT0\/eJSo$X]k;SXP8dp1HU@^\!s<\Ir`1LkS + kA%"[5Q:5(/q>@T'1AcK5J"kbkG.CS9Zu_4930ECQ7A+a/33EtrWcCl/E=1\QKdQAGpq8T%9-'A + "@\.c:Hr[kg?TC0)B4!PfN1A/-^^o$B&q&1]4SO^V@>D&?\ + WuY+Vfa9(LiiqXp0]BD6n"f*+WFL2Qa;F>;l6D2i^V"q*A[@oQP>2l/t&O`M>+/HO9<+cem + ==">Dj"n5,&!h"/^XuISn'&`q0@%7BDiZ(j<,WEhmX`G(D1f&XGIcm1?&K,iQ_MHu!JB8LMSF8Ff1:W$g2h?L%7>QO4Cbm5^7qmg?jc40s57eA9q'B`!jbjur-c,E + rJ`IUIfEm^s)Bh@D,.EN!/h7N[)rXa&i)9-^QkFrI,oK:=X>`@_X9h_-'[X5jGlN:3$%Q.f + GaX%"q19cSG5oKG77'6uO8(J,QUke0JQJ2(9XB;df*:86P1cWXeBf$u!"?/h)$(Qa@K2C_S + !H(?.:J5K5iX@;U]mIY*J)V((r#JAUln=pfde'fNuV>)fKWW/eG + fVATK&[f*7.Kr&6Ls(2A+U',D1))8"RVXm65\YH10Q)D4G+T]q-iJJ@Of+0",#'Se'=Q*%: + hC5/D)1dJiJZ'9V,URi8YIbCO-0XkMDK!Q#dX7?'Q4HQeD%>7\!^Bdl>e%7$6M_ + .!efG>7rDSn=%T]/d9G=D)V-,8'+HYe.1ZI:-uoMtk.H)`P2krYqPK'bZu/PgR"Q;"r_6]_g&Jq\a)%ddt + )CU#D4K37E"skQJ_V&7EnuHa15q