# HG changeset patch # User Some Random Person # Date 1337888157 25200 # Node ID 364de5b006db50985886af00745218a569171fd0 # Parent e3e35676068a95f1221a726e59c07df24cf4122a Perf Tuning -- merged, plus bunch of other stuff diff -r e3e35676068a -r 364de5b006db 0__Papers/Holistic_Model/Perf_Tune/latex/Holistic_Perf_Tuning.tex --- a/0__Papers/Holistic_Model/Perf_Tune/latex/Holistic_Perf_Tuning.tex Wed May 23 18:31:52 2012 +0200 +++ b/0__Papers/Holistic_Model/Perf_Tune/latex/Holistic_Perf_Tuning.tex Thu May 24 12:35:57 2012 -0700 @@ -347,7 +347,9 @@ -For example, Tau is a highly cited older system for performance tuning parallel applications, which is representative of thread-centric approaches. It integrates many data sources, and has rich displays. However its model was cores and memories and thread contexts, with actions taken on or by each. It had no well defined concept of scheduling, unit scheduled, nor constraints on scheduling those units. Hence, it had no view that integrated the parallelism-specific information at the heart of performance: tasks, constraints on them, and scheduling choices. +For example, Tau is a highly cited older system for performance tuning parallel applications, which is representative of thread-centric approaches. It integrates many data sources, and has rich displays. However its model was cores and memories and thread contexts, with actions taken on or by each. + + It had no well defined concept of unit of work, instead its concept was ``which virtual processor (thread) is running?" It had the concept of scheduling such virtual processors, but this scheduling is disconnected from the application, leaving the user with little or no understanding of what to do to their code to get better behavior. What it is missing is the concept: tasks, constraints on them, and scheduling choices. \subsection{Application-intensive approach} @@ -429,30 +431,42 @@ In our session, we wish to tune a standard program that the reader has likely already experienced attempting to performance tune, and/or knows well. The best example is likely matrix multiply, with which the reader should be familiar, allowing concentration on the tool without distraction about the application. We run it on a machine with 4 sockets by 10 cores each, for a total of 40 physical cores. -The application code includes a function that automatically divides the work into a number of tasks, based on the number of cores and a tuning parameter. It distributes the tasks across the cores in a round-robin fashion, and then waits for completion of the calculation before initiating shutdown. The answers produced by the tasks are collected by a ``receiver" and accumulated into the result matrix, whereupon it notifies the setup function of completion. +The application code includes a function that automatically divides the work into a number of tasks, based on the number of cores and a tuning parameter. It distributes the tasks across the cores in a round-robin fashion, and then waits for completion of the calculation before initiating shutdown. The answers produced by the tasks are sent to a results collector and accumulated into the result matrix. When done, it notifies the setup function of completion. -The language used is SSR, which is based on rendez-vous style send and receive operations made between virtual processors (VPs). It has commands for creating and destroying virtutal processors, and three kinds of send-receive paired operations. The first, \emph{send\_from\_to} specifies a specific sender and specific receiver. We use it to notify the VP dedicated to dividing the work (``creator VP'') that the VP collecting results (``results VP'') has received all sub-results, so it can output the final result. The second, \emph{send\_of\_type\_to}, specifies a specific receiver, but the sender is anonymous, which increases flexibility while maintaining some control over scope. This construct is used by the processors multiplying sub-matrices to send their sub-result to the results processor. The third kind, \emph{send\_of\_type}, only specifies the type, and so acts as a global communication channel; this is not used in our application. The language also includes a \emph{singleton} construct that designates a piece of code as to be executed only once, which we use to rearrange and copy data to get better cache behavior. A given copy is shared by several virtual processors on different cores, but the copy only needs to be performed once. Miscellaneous performance constructs are also available, such as one to force which core a virtual processor is assigned to, which is used in our example program. +The language used is SSR, which is based on rendez-vous style send and receive operations made between virtual processors (VPs). It has commands for creating and destroying virtutal processors, and three kinds of send-receive paired operations. The first, \emph{send\_from\_to} specifies a specific sender and specific receiver. We use it to notify the VP dedicated to dividing the work (``creator VP'') that the VP collecting results (``results VP'') has received all sub-results, so it can output the final result. The second, \emph{send\_of\_type\_to}, specifies a specific receiver, but the sender is anonymous, which increases flexibility while maintaining some control over scope. This construct is used by the processors multiplying sub-matrices, to send their sub-result to the results processor. The third kind, \emph{send\_of\_type}, only specifies the type, and so acts as a global communication channel; this is not used in our application. + + The language also includes a \emph{singleton} construct that designates a piece of code as to be executed only once, which we use to rearrange and copy data to get better cache behavior. A given copy is shared by several virtual processors on different cores, but the copy only needs to be performed once. + +Miscellaneous performance constructs are also available, such as one to force which core a virtual processor is assigned to. We use this in our example program to control scheduling. A note on terminology: the word ``task'' has acquired multiple meanings in the literature, making it a vague term. We often use, instead, the term ``work-unit'', which is defined precisely as the trace-segment performed on a core, between two successive scheduling events, plus the set of datums consumed by that trace segment. The word task often maps well onto this precise definition, and we use both words, but mean the precise work-unit definition when we say task. -A second visualization, seen in Figure X, depicts the constraints on the scheduling decisions, which limit the choices the runtime is allowed to make. We call this the Unit \& Constraint Collection, or UCC. This shows only application-derived information. -\subsection{Walk through} -After functional debugging, the first run produces the visualization seen in Fig \ref{story}. This is what we refer to as a scheduling consequence graph. It depicts all the scheduling operations performed by the runtime, along with the consequent usage of the cores. -Each column is associated with one core. -A blue vertical block represents the time the core spends doing the actual work of one work-unit, the height being proportional to the number of cycles taken for execution. Just above each, in light blue, is the runtime overhead spent on that work-unit, which can be broken into pieces representing acquisition of the lock on the shared semantic state, time spent performing the semantics of the parallelism construct, time spent deciding which ready task to execute next, and time spent switching from virtual processor, to the runtime, and back. +\subsection{The Visualizations} + The ffirst is what we refer to as a scheduling consequence graph. It depicts all the scheduling operations performed by the runtime, along with the consequent usage of the cores. + +The second visualization depicts the application-derived constraints on the scheduling decisions. These limit the choices the runtime is allowed to make. We call this the Unit \& Constraint Collection, or UCC. + +The UCC shows only application-derived information, as opposed to the consequence graph, which combines the \textit{use} of the UCC-depicted constraints with runtime-imposed dependencies and hardware-imposed constraints. Hence, the UCC states the degrees of freedom enabled by the application, while the consequence graph states how those were made use of, by a particular runtime on particular hardware. + +Returning to Fig X, each column is associated with one core. +A blue-violet vertical block in a column represents the time the core spends doing the actual work of one work-unit, the height being proportional to the number of cycles taken for execution, and the color indicating intensity of cache misses. Pure red indicates that work-unit had the most cache misses, pure blue indicates the least. + + Just above each of these, in gray, is the runtime overhead spent on that work-unit, which can be broken into pieces representing acquisition of the lock on the shared semantic state, time spent performing the semantics of the parallelism construct, time spent deciding which ready task to execute next, and time spent switching from virtual processor, to the runtime, and back. -The blue blocks are arranged according to the choices the scheduler in the runtime made. Because they determine the succession of activities on a given core, these choices show causal dependencies between work-units. - +Successive work-unit (blue-violet) blocks that go in sequence often have a causal dependency between them, due to the semantics of the base language. + Many different orderings could also have been validly chosen. Which scheduler choices are valid is determined by three kinds of constraints: the application code constraints, hardware constraints, and runtime implementation imposed constraints. Returning to Fig \ref{story}, the lines in red, orange, and green represent application-code constraints that each tie two work-units together. The color represents the kind of constraint imposed by one kind of parallelism construct. Red is creation of a virtual processor, green is the many-to-one \texttt{send\_of\_type\_to}, and orange is the singleton construct. For better visibility, only constraints that cross cores are shown. The columns represent each core, and the vertical axis represents the progress of the program execution, starting from the top. This gives at a glance the total runtime (height), level of parallelism during the run (number of filled columns at a specific height), and processor utilization (blue-covered area vs. white). All figures are at the same scale, so they can be compared directly. -The first thing to notice, then, is that the first picture is slimmer than expected: of the 40 available cores, only 13 were being used. As the application places work on cores explicitly, this must be a bug in the dividing code. A cursory inspection revealed that a closing bracket in the distribution loop had been misplaced. This may be a very simple bug, but it went unnoticed despite using this application as test program for development of the language runtime, including analyzing performance, for several months. +\subsection{Walk-through} + +After functional debugging, the first run produces the visualizations seen in Figures X and X. The first thing to notice, then, is that the first picture is slimmer than expected: of the 40 available cores, only 13 were being used. As the application places work on cores explicitly, this must be a bug in the dividing code. A cursory inspection revealed that a closing bracket in the distribution loop had been misplaced. This may be a very simple bug, but it went unnoticed despite using this application as test program for development of the language runtime, including performance, for several months. The second run (Fig \ref{story:b}) already corresponds much more to the expected execution behaviour. However, there remains a noticeable section at the beginning where only 3 cores have work and the other 37 remain idle. Focusing on core 0, we can see that the task creation VP (short tasks with red edges outgoing) creates work in order of cores, starting with core 0. The core's scheduler operates a simple round-robin between VPs assigned to its core, so the creator VP gets switched out for the newly created work unit quickly. The work tasks take a large amount of time to complete, during which task creation is suspended. @@ -884,3 +898,4 @@ %%---------------------------------------------------------------------- destroying virtutal processors, and three kinds of send-receive pairs. The + graph. It depicts all the scheduling operations performed by the runtime, \ No newline at end of file diff -r e3e35676068a -r 364de5b006db 0__Papers/VMS/Languages/HWSim/latex/HWSim_ref_manual_3.pdf Binary file 0__Papers/VMS/Languages/HWSim/latex/HWSim_ref_manual_3.pdf has changed diff -r e3e35676068a -r 364de5b006db 0__Papers/VMS/Languages/HWSim/latex/HWSim_ref_manual_3.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/Languages/HWSim/latex/HWSim_ref_manual_3.tex Thu May 24 12:35:57 2012 -0700 @@ -0,0 +1,288 @@ +%&latex +\documentclass{scrbook} + +%+MakeIndex +\usepackage{makeidx} +\makeindex +%-MakeIndex + +\begin{document} + +%+Title +\title{\Huge\bf The HWSim Simulation Language\\ Reference Manual} +\author{Sean Halle} +\date{\today} +\maketitle +%-Title + +%+Contents +\tableofcontents +%+Contents + +%+Make Parts +%\part{First Part} +%-Make Parts + +\chapter{Introduction and Overview} + + +\section{The Philosophy of the Language} + +A simulator consists of two parts: behavior logic, and a separate underlying implementation of simulated time. +Many simulators tightly integrate the behavior logic with the code of the simulator itself. + +In contrast, HWSim takes the approach of providing a separate language that implements simulated time. One creates elements, each of which has an independent timeline, and sends communications between them. The communications trigger behaviors in the elements, which then send more communications. + +What HWSim provides is assurance that the memory image of the Host machine executing the behavior is always consistent with the memory image that should exist due to the simulated-time ordering. This is valuable on multi-core machines, as it allows full usage of the parallel Host hardware. + +Providing such consistency is tricky because, in general, a given core takes turns executing behavior of different elements. If not carefully controlled, behavior will be executed in a different order in physical time than in simulated time. Such out of order execution can cause different results to be calculated on the Host than should be calculated by the simulated hardware. + +HWSim tracks the start and end of simulated-time activities and implements an algorithm to ensure the state of each element stays consistent with the simulated-time order. + + + +\section{Overview of Usage of the Language} +Elements, and the connections between them, are specified in a netlist. Behavior and timing of the elements are provided as functions, which are attached to the elements. A behavior can call an HWSim construct to send a communication on an out-port. The out-port connects to the in-port of another element. The destination in-port has an activity-type attached, which contains pointers to the behavior and timing functions. Reception of the communication then triggers the functions in the destination element. + +The language is supplied as a library, divided into calls for a main program to use, and calls for use within the behavior and timing functions. + +The main program is currently (as of May 2012) charged with constructing the netlist and passing it to HWSim. It is also charged with handling results, although services are supplied to transform HWSim results into formats for various visualizers like Paraver. + +The hardware behavior and timing functions are collected into a separate directory and pointed to by the netlist. The behavior and timing functions for a particular kind of element are grouped in informal ways, such as defining them in the same file, or using naming schemes. The functions are attached to elements inside the netlist creator. + +The hardware behavior is defined separately, then referred to by a netlist. The netlist is created within a main C program, then passed to an HWSim call that initiates the simulation. The main thread suspends until simulation completes, then calls HWSim services to transform the results to the form for the visualizers. + + +\chapter{Commands and Usage} +This chapter gives precise information about the various calls available in HWSim, and how to use them. +As of May 2012, we take the shortcut of defining these through an example of their usage. The example is a circuit with two elements that are cross-coupled. The output from one goes to the input of the other. One of them is connected to the reset signal, triggers it's behavior, which is simply to send a communication on its outport. That triggers the same behavior in the other, and so on, back and forth. + +\section{Configuration File} +The configuration file states the amount of simulated time and the name of the file to save the generated traces in. +\begin{small}\begin{verbatim} + +int, SimulationEndTime, 100 + +string, resultTraceFileName, + data_files/HWSim_results/Ping_Pong_results/test_config_results.txt + +\end{verbatim} +\end{small} + +\section{Netlist Creation} +Here is an example of netlist creation: + +The circuit has two elements, each with one input port, one output port, and a single activity-type. The elements are cross-coupled, so output port of one connects to input port of the other. The input port has the activity-type attached as its trigger. The activity is empty, and just sends a NULL message on the output port. The activity's duration in simulated time and the resulting communication's flight duration in simulated time are both constants. + + Note that HWSimElem data type is generic. An elem is specialized by declaring inports and outports, and by connecting activity types to in-ports. Behavior is attached to an element by attaching activity types to in-ports of the element. + +First, here is the top-level function that creates and returns the netlist structure: +\begin{small}\begin{verbatim} +HWSimNetlist * +createPingPongNetlist() + { HWSimNetlist *netlist; + HWSimElem **elems; + HWSimActivityType **activityTypes; + HWSimCommPath **commPaths; + int32 numElems, numActivityTypes, numCommPaths; +\end{verbatim}\end{small} + +The first thing to do is create the netlist structure, which holds three things: element structs, activity type structs, and communication path structs. It also has two collections of pointers to the traces collected during the run, but these are handled internally by HWSim. +\begin{small}\begin{verbatim} + netlist = malloc( sizeof(HWSimNetlist) ); + + numElems = 2; + elems = malloc( numElems * sizeof(HWSimElem *) ); + + numCommPaths = 2; + commPaths = malloc( numCommPaths * sizeof(HWSimCommPath *) ); + + numActivityTypes = 1; + activityTypes = malloc( numActivityTypes * sizeof(HWSimActivityType *) ); + + netlist->numElems = numElems; + netlist->elems = elems; + netlist->numCommPaths = numCommPaths; + netlist->commPaths = commPaths; + netlist->numActivityTypes = numActivityTypes; + netlist->activityTypes = activityTypes; +\end{verbatim}\end{small} + +Now, create the activity types. During the run, an activity instance is created each time a communication arrives on an in-port. The activity instance is a data structure that points to the activity type. The activity type holds the pointers to the behavior and timing functions. +\begin{small}\begin{verbatim} + //have to create activity types before create elements + //PING_PONG_ACTIVITY is just a #define for readability + netlist->activityTypes[PING_PONG_ACTIVITY] = createPingPongActivityType(); +\end{verbatim}\end{small} + +Next, create the elements, and pass the netlist structure to the creator. It will take pointers to activity types out of the netlist and place them into the in-ports of the elements. +\begin{small}\begin{verbatim} + elems[0] = createAPingPongElem( netlist ); //use activity types from netlist + elems[1] = createAPingPongElem( netlist ); +\end{verbatim}\end{small} + +Now, the reset in-port of one of the elements has to be set up to trigger an activity. Every element has a reset in-port, but normally they are set to NULL activity type. Here, we want only one of the two elements to have an activity triggered when the reset signal is sent to start the simulation. + +Note that during initialization, all the elements become active, each with its own timeline, but unless an activity is triggered in them they remain idle, with their timeline suspended and not making progress. Only ones that have an activity type attached to their reset in-port will begin to do something in simulated time when simulation starts. +\begin{small}\begin{verbatim} + //make reset trigger an action on one of the elements + elems[1]->inPorts[-1].triggeredActivityType = + netlist->activityTypes[PING_PONG_ACTIVITY]; +\end{verbatim}\end{small} + +Now, connect the elements together by creating commPath structures. A comm path connects the out-port of one element to the in-port of another. A given port may have many comm paths attached. However, an in-port has only one kind of activity type attached, and all incoming communications fire that same activity. There are multiple kinds of activity, including kinds that have no timing, and so can act as a dispatcher. These end themselves with a continuation activity, which is chosen according to the code in the behavior function. So, a commPath only connects an out port to an in port. + +This code sets fixed timing on the comm paths. It also uses a macro for setting the connections. The format is: sending elem-index, out-port, dest elem-index, in-port: +\begin{small}\begin{verbatim} + //elem 0, out-port 0 to elem 1, in-port 0 + commPaths[0]= malloc(sizeof(HWSimCommPath)); + setCommPathValuesTo(commPaths[0],0,0,1,0); + commPaths[0]->hasFixedTiming = TRUE; + commPaths[0]->fixedFlightTime = 10; //all time is stated in (integer) units + + //elem 1, out-port 0 to elem 0, in-port 0 + commPaths[1]= malloc(sizeof(HWSimCommPath)); + setCommPathValuesTo(commPaths[1], 1,0,0,0); + commPaths[1]->hasFixedTiming = TRUE; + commPaths[1]->fixedFlightTime = 10; //all time is stated in (integer) units +\end{verbatim}\end{small} + +done building netlist, return it +\begin{small}\begin{verbatim} + return netlist; + } +\end{verbatim}\end{small} + +The macro that sets the connections inside a comm path struct +\begin{small}\begin{verbatim} +#define setCommPathValuesTo( commPath, fromElIdx, outPort, toElIdx, inPort)\ +do{\ + commPath->idxOfFromElem = fromElIdx; \ + commPath->idxOfFromOutPort = outPort; \ + commPath->idxOfToElem = toElIdx; \ + commPath->idxOfToInPort = inPort; \ + }while(0); //macro magic for namespace +\end{verbatim}\end{small} + +Creating an element involves creating arrays for the in-ports and out-ports, then configuring the in-ports. The out-ports are automatically filled in during simulation start-up, by HWSim. The most interesting feature is that each in-port is assigned an activity type, which all arriving communications trigger. During the simulation, each incoming communication creates an activity instance, which points to this triggered activity type. The behavior and timing of the instance are calculated by the behavior and timing functions in the activity type. Notice that the activity type pointers are taken from the netlist, so they have to be created before creating the elements. +\begin{small}\begin{verbatim} +HWSimElem * +createAPingPongElem( HWSimNetlist *netlist ) + { HWSimElem *elem; + elem = malloc( sizeof(HWSimElem) ); + elem->numInPorts = 1; + elem->numOutPorts = 1; + elem->inPorts = HWSim_ext__make_inPortsArray( elem->numInPorts ); + elem->inPorts[-1].triggeredActivityType = IDLE_SPAN; //reset port + elem->inPorts[0].triggeredActivityType = netlist->activityTypes[PING_PONG_ACTIVITY]; + return elem; + } +\end{verbatim}\end{small} + +Creating an activity type involves setting the pointers to the behavior and timing functions, which are defined inside a separate directory where all the behavior and timing functions are defined. An activity may have behavior set to NULL, or timing set to NULL, and may have fixed timing. The structure has flags to state the combination. +\begin{small}\begin{verbatim} +HWSimActivityType * +createPingPongActivityType( ) + { HWSimActivityType *pingPongActivityType; + pingPongActivityType = malloc( sizeof(HWSimActivityType) ); + + pingPongActivityType->hasBehavior = TRUE; + pingPongActivityType->hasTiming = TRUE; + pingPongActivityType->timingIsFixed = TRUE; + pingPongActivityType->fixedTime = 10; + pingPongActivityType->behaviorFn = &pingPongElem_PingActivity_behavior; + return pingPongActivityType; + } +\end{verbatim} \end{small} + +\section{Activities, Behavior, Timing, and Communications} + +\subsection{ActivityType and ActivityInst} +Not all activities have both behavior and timing. This leads to four kinds of activity: +\begin{description} + +\item{behavior + timing:} + the normal case, representing behavior in the hardware + +\item behavior only: + used for bookkeeping in the simulation, such as dispatching to other kinds of activity, as continuations of this one. + +\item timing only: + useful in network simulations, where there may be no behavior of an element, but timing is a complex function. + +\item neither behavior nor timing: used when only want the reception of the communication to be noted by HWSim, and saved in the in-port. Will later be used by an activity triggered on a different port. For example, flip-flops where the input is ignored until the clock input triggers activity. +\end{description}The kind of activity is set by the combination of flags inside the activity type structure. +Some activities perform internal bookkeeping for the simulation, or dispatch different behaviors based on message contents. These have no timing. See the netlist creation comments above to see the actual flags and setting them. + +\subsection{Behavior Functions and Ending Activities} + +All behavior functions take a ptr to the activity instance they are executing the behavior of. The instance contains a pointer to the elem, and most behaviors will use the element's elemState field. It holds all the persistent state of the element, which remains between activities. + +Here is the behavior function from the ping-pong example: +\begin{small}\begin{verbatim} +void +pingPongElem_PingActivity_behavior( HWSimActivityInst *activityInst ) + { //NO_MSG is #define'd to NULL, and PORT0 to 0 + HWSim__send_comm_on_port_and_idle( NO_MSG, PORT0, activityInst ); + } +\end{verbatim}\end{small} + +There are four ways a behavior can end: +\begin{description} +\item end, no continuation: +\begin{small}\begin{verbatim} HWSim__end_activity_then_idle( HWSimActivityInst *endingActivityInstance )\end{verbatim}\end{small} +\item end, with continuation: +\begin{small}\begin{verbatim} HWSim__end_activity_then_cont( HWSimActivityInst *endingActivityInstance, + HWSimActivityType *continuationActivityType)\end{verbatim}\end{small} +\item end by sending a communication, with no continuation: +\begin{small}\begin{verbatim} HWSim__send_comm_on_port_then_idle( void *msg, int32 outPort, + HWSimActivityInst *endingActivityInstance)\end{verbatim}\end{small} +\item end by sending a communication, with continuation: +\begin{small}\begin{verbatim} HWSim__send_comm_on_port_then_cont( void *msg, int32 outPort, + HWSimActivityInst *endingActivityInstance + HWSimActivityType *continuationActivityType)\end{verbatim}\end{small} + +\end{description} + +Ending with a continuation means that a new activity instance is created. It's simulated-time starting point is the same as the end point of the instance being ended. The call passes a pointer to an activity type, which is the type of the new activity instance. + +\subsection{Activity Timing Functions} +All activity timing functions take a ptr to the activity instance they are calculating the timing of. The instance contains a pointer to the element the activity is in. The behavior function is free to communicate to the timing function by leaving special data inside the element state. The timing function might also simply depend on the current state of the element. + +Here's an example: +\begin{small}\begin{verbatim} +HWSimTimeSpan +sampleElem_sampleActivity_timing( HWSimActivityInst *activityInst ) + { + return doSomethingWithStateOfElem( sendingActivity->elem->elemState ); + } +\end{verbatim}\end{small} + +\subsection{Calculating the time-in-flight of a communication path} + +The timing function for a communication path is similar to that of an activity. Except, the timing might also depend on configuration data or state stored inside the comm path struct, so that is passed to the timing function as well. + +\begin{small}\begin{verbatim} +HWSimTimeSpan +commPath_TimeSpanCalc( HWSimCommPath *commPath, HWSimActivityInst *sendingActivity ) + { return doSomethingWithStateOfPathAndElem( commPath, sendingActivity->elem->elemState ); + } +\end{verbatim}\end{small} + + + + +%+Bibliography +\begin{thebibliography}{99} +\bibitem{Label1} ... +\bibitem{Label2} ... +\end{thebibliography} +%-Bibliography + +%+MakeIndex +\printindex +%-MakeIndex + +\end{document} + + diff -r e3e35676068a -r 364de5b006db 0__Papers/VMS/Universal/figures/control_flow_big_page.pdf Binary file 0__Papers/VMS/Universal/figures/control_flow_big_page.pdf has changed diff -r e3e35676068a -r 364de5b006db 0__Papers/VMS/Universal/figures/control_flow_big_page.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/Universal/figures/control_flow_big_page.svg Thu May 24 12:35:57 2012 -0700 @@ -0,0 +1,3090 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + save VPcontext + + + + whichcontextswitch + + + + constraintupdate hdlr + + + + Push workonto Q + + + + Take work-unit from Q + + + + Non-suspend end of work-unit + + Suspend at end of work-unit + + + + + new work-unit is attached to a VP's context + new work-unit hasown localcontext + + load curr VPwith contextfrom newwork-unit + + + which has attached context + + Non-suspend end of work-unit + purely local (no ctxt attached) + + save stack& frame ptrs + + + CILK is example of this case,when leaf child finishes + Dataflow is example of this case + pthread is example of this case,as is Cilk when suspends on sync + + + + no workin Q + + + (in CILK, counts child ends, and handles sync) + (for CILK, Q filled by async spawns) + + + time tochk msgs? + + + + + scan for in-coming msgs,give to hdlrs.check timers,fire hdlr forexpired ones + + + + send curr VPto pool,switch toVP of newwork-unit + + + + constraintmsg handler + + + + Push Workonto Q + + + + + send construpdate msg + + + (in dataflow & CILK, msgs from other cores that ask for or push work, go to assigner) + (in dataflow & CILK, push work to other cores via msgs -- remember constraints that cross cores) + + + Assignermsg handler + + + + + + + send construpdate msgs + + + + done withmsgs + no + yes,chk + constraintmsgs + Assignermsgs + (in CILK, completion of child on remote core notifies parent's core. In dataflow, remote pro- pendent sends data to dependents' cores) + + + send "needwork" msg + + + receivework-push msg + + receive need-work msg & have work to give + No work + + Jmp to newwork-unit + + + + + + + Assigner + + + + request hdlr + + + + + time tochk msgs? + + + + + yes,chk + + no + done withmsgs + + push workonto Q, andsend "cancelneed work" + + + + send construpdate msgs + + + + + Push workonto Q + + + + send Assignermessages + + + + + + + + get VP frompool (makenew if none).Load it withcontext fromnew work-unit + + + new work-unit has ownlocal context, butprev VP suspended + + (in pthreads, checks mutex structures, cond var structs, etc) + work-unitstate chgs + done with msgs + + Suspend at end of work-unit + pthread is example of this case,as is Cilk when suspends on sync + + Assigner + + + + request hdlr + + + + + time tochk msgs? + + + + + yes,chk + no + done withmsgs + + get semEnvlock & updatestate of VP + + + + + get semEnvlock & pick aready VP + + + (in pthreads, checks mutex structures, cond var structs, etc) + work-unitstate chgs + + + Jmp to newwork-unit + + + + + + switch toready VP + + + + + + save VPcontext + + + + No VPsready + increase backoff eachrepetition & updatebackoff stateTry to make core enterpower-down idle statewhile waiting + + do Backoffwait + + + + + + + send "needwork"? + + + yes, send + + + gotwork? + + + + Don'tsend + + yes,gotwork + The difference between top two pathsis the way the request hdlr+assigner hasbeen implemented -- use shared state ontop path, but only local on the second.NOTE: the request hdlr and assigner arecombined into a single straight-line pieceof code. + + + No VPs ready + + Local semantic Env holds the Q of ready work-units -] Msgs update the local semantic state, and put work-units into this Q-] Shared sem state is traditional VMS, except req hdlr and assigner are same Fn-] Shared sem has its own structs to decide which VP is ready, and switches to it at end of Assigner-] Which core a VP runs on is decided between req hdlr and assigner, based on shared structs that hold the VPs-] For local-only, VP is moved to the core it runs on -- assigner only moves VPs to diff cores and receives them-] For atomic tasks, the task-info is sent betwn cores.. for VPs, whole live portion of stack is sent.Okay, so this fits the standard VMS model -- except now the core-controller is gone, so the extra level of UCC is taken away. Now, the MasterVP is "reusing" whatever VP has suspended. -- in a way, the core-controller plu AnimationMaster are reduced to the assembly call that the WrapperLib (WL) makes to end the current work-unit, which suspends the VP. Inside that suspend call, is the opportunity to switch between different processes, call upon VMS-only helper services, and so on.So, the switch-over is a function call to a wrapp-lib, which then does an assembly Fn call -- the assembly saves the stack state (regs already saved when did the wrapper-lib call), and then puts localEnv into the param reg (for 64 bit convention) and jumps to the plugin-fn. Note, there are three different assembly calls, one for each kind of work-unit, to end it. Sometimes work-unit calls assembly directly, sometimes it calls a wrapper-lib that just does all the work right there, sometimes the wrapper lib calls the appropriate assembly Fn.Need to modify request structure, so abstraction can supply services via request -- and perhaps library Fns that perform some of services direct from app, and other Fns for use inside the plugins.. such as Malloc-Free, create VP, create atomic-Task.. some are pure wrapper-lib, others are combo.. seeing one version of malloc for wrapper-lib, different for plugin and msg-system use.The msg system is details of impl of Lang Animator -- so plugin is still "completing" the lang animator by adding semanticsCore-controller was a second level beneath the runtime (Language Animator is the runtime).. The sched slots were virtual physical animators, and the masterVP was the Language Animator, which the AnimationMaster Fn and the plugin Fns supplied the behavior of. The coreCtlr switched between levels -- The MasterVP was "outside" the framework of the schedling slots -- in a way it was beside them (they took turns getting the actual phys animator, so same level) and in other way was above -- it controlled what went into the slots, so above them. I another way, the MasterVP was the Language Animator, while the slots were virtual physical, so they had no locial connection -- the slots were related to the same thing that animatored the language animator.. a very strange arrangement. + + send work-push msgand start timer for it. + + + Control Flow of Universal Proto-Runtime + + Expired timerhandler + + + + Expired timer + When send work to other core,it may be sleeping. So when timerexpires, do escrow, which is atomiccheck of whether work was received.If not, then check if dest core is sleeping -- if no, then take workback. If yes, do wakeup and set a new timer, which will do thishandling again. + + diff -r e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/2.png Binary file 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/2.png has changed diff -r e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/Portability_stack_combined.pdf Binary file 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/Portability_stack_combined.pdf has changed diff -r e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/Portability_stack_combined.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/Portability_stack_combined.svg Thu May 24 12:35:57 2012 -0700 @@ -0,0 +1,2691 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lang Syntax + + + + Request Intf + + + + VMS Intf + + + + ISA + + + + + + + + + Interface + Layer + + + + + + + Toolchain + + + + Specializer + + + + + Specializer + + + + + + + + + Toolchain + + + + Specializer + + + + + Specializer + + + + + + + + + Toolchain + + + + Specializer + + + + + Specializer + + + + + + diff -r e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/cray1_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/not_used/cray1_pthreads_8_32_128_512thds__o30000__perfCtrs.result.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/not_used/cray1_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/not_used/vms_pthreads_8_32_128thds__o30000__perfCtrs.result.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/not_used/vms_vthread_8_32_128_512thds__o30000__perfCtrs.result.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-out.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/not_used/xoanon_pthreads_vthread_40core_80_160_320_640thds__o30000__perfCtrs.meas.key-right.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/not_used/xoanon_vthread_40cores_80_160_320_640thds__o30000__perfCtrs.result.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/not_used/xoanon_vthread_80cores_80_160_320_640thds__o30000__perfCtrs.result.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/vms_pthread_vthread_8_32_128_512thds__o30000__perfCtrs.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/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/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/figures/plots_exec_vs_task_size/xoanon_pthread_vthread_40core_80_160_320_640thds__o30000__perfCtrs.eps Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/helpers/bib_for_papers.bib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/helpers/bib_for_papers.bib Thu May 24 12:35:57 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 e3e35676068a -r 364de5b006db 0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/latex/VMS__Full_conf_paper.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/0__Papers/VMS/VMS__Foundation_Paper/VMS__Full_conference_version/latex/VMS__Full_conf_paper.tex Thu May 24 12:35:57 2012 -0700 @@ -0,0 +1,635 @@ +% template-v1.tex: LaTeX2e template for Usenix papers. +% Version: usetex-v1, 31-Oct-2002 +% Revision history at end. + +\documentclass[finalversion,endnotes]{usetex-v1} +% Choose the appropriate option: +% +% 1. workingdraft: +% +% For initial submission and shepherding. Features prominent +% date, notice of draft status, page numbers, and annotation +% facilities. The three supported annotation macros are: +% \edannote{text} -- anonymous annotation note +% \begin{ednote}{who} -- annotation note attributed +% text to ``who'' +% \end{ednote} +% \HERE -- a marker that can be left +% in the text and easily +% searched for later +% 2. proof: +% +% A galley proof identical to the final copy except for page +% numbering and proof date on the bottom. Annotations are +% removed. +% +% 3. webversion: +% +% A web-publishable version, uses \docstatus{} to indicate +% publication information (where and when paper was published), +% and page numbers. +% +% 4. finalversion: +% +% The final camera-ready-copy (CRC) version of the paper. +% Published in conference proceedings. This doesn't include +% page numbers, annotations, or draft status (Usenix adds +% headers, footers, and page numbers onto the CRC). +% +% If several are used, the last one in this list wins +% + +% +% In addition, the option "endnotes" permits the use of the +% otherwise-disabled, Usenix-deprecated footnote{} command in +% documents. In this case, be sure to include a +% \makeendnotes command at the end of your document or +% the endnotes will not actually appear. +% +% +%%======================================================================= + +% These packages are optional, but useful +\usepackage{epsfig} % postscript figures +\usepackage{url} % \url{} command with good linebreaks + +%\usepackage{geometry} %chgs the margins and layout! +\usepackage{graphicx,calc,ifthen,makeidx,amssymb,makeidx} +\usepackage[tight,footnotesize]{subfigure} + +\graphicspath{{../figures/}} + +%======================================================================= + +\begin{document} + +\bibliographystyle{plain} + +\title{A Proto-Runtime Embodiment of a Unified Approach to Parallelism Constructs for Use in Domain-Specific Languages} + +\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 triple challenge. Many believe productivity and portability can be solved with domain-specific languages. But adoptability is hindered by practical problems due to small user-base. Few users to support a language means development time must be small and porting language across machines must be low effort. + +If buy domain-specific, then we have a toolkit to address the time-to-create and time-to-port. It is based on recognizing a pattern common to all parallel languages, and embodying that in a partial runtime, or "proto" runtime. The proto-runtime embodies most of the implementation effort, and is reused among all the domain-specific languages. Each language just adds sequential-reasoning algorithms to control the relative progress of different timelines and to control which hardware generates that progress, through a well-defined interface. + +? + + + +\end{abstract} + +%======================================================================= + + + +\section{} +Current parallel programming is blocked from the mainstream for several reasons: it has lower productivity than sequential programming, forces a rewrite of source for each new target to get good performance, and disrupts the ways programmers think and their workflow. These cause high expense, and slow adoption. + +Many believe a solution to the productivity issue is domain-specific languages. +They encode common data structures, operations on those, and patterns of execution common to a domain of applications, all as custom constructs of the language. + +The value lies in the ability to hide parallelism issues from the application programmer. They don't see the difficulties involved in distributing data structures, which is done to reduce inter-core communication. For complex patterns or operations, they don't see the synchronization needed to deal with distributed system issues. + +Constructs such as Abstract Data Types like linked lists and trees receive performance benefit from careful implementation. Further, common data structures like matrices or graphs can be put into the language and operations common to the domain supplied for them. + + +However, to be a real solution, a large number of such domain-specific languages have to be created and ported to each hardware target. + +Such creation and porting must be done inexpensively due to the small user base of such a specific language. + + + + + + +In this paper, if the premise that domain-specific languages addresses the productivity problem is accepted, then we present an approach that ameliorates the practical issues of creating them and porting them across hardware. + +The approach gains its benefits by being consistent with a basic pattern of synchronization constructs. This is that the behavior of a sync construct is simply to suspend forward progress for a controlled amount of time. In the application code, a sync construct is seen as taking a variable amount of time, such that certain conditions are true when it returns. + +We embody this pattern with a partial runtime, called a \textit{proto-runtime}. The proto-runtime provides mechanisms to create timelines, as well as suspend and resume them. + +However, the proto-runtime has no means to determine how long to suspend nor in what order to resume. Instead, it provides an interface that is used by a plugin supplied by the language implementation. The plugin calculates how long a timeline remains suspended and which order to resume, as well as which hardware to give the timeline to for its forward progress. + +The plugin is much simpler to produce than a full runtime for two reasons. First, only the logic of deciding how long to keep a timeline suspended is needed. This uses sequential reasoning, which is possible because it sees consistent scheduling state provided by the proto-runtime. The proto-runtime handles concurrency to supply the plugin with consistent scheduling state to use. + +Second, the low-level hardware-oriented tuning happens inside the proto-runtime. The tricky dynamic interaction among the cores to achieve consistent scheduling state for the plugin's use is encapsulated inside the proto-runtime, and so tuned there. + +In practice, two benefits come from this: reduced time to create a new parallelism construct, and reduced effort to port constructs to new hardware. + +Both benefits are achieved while keeping overhead very low. Both pthreads and OpenMP are beaten in head-to-head comparisons of proto-runtime implementations vs the standard ones. + +This approach doesn't fully solve the portability issue for application software, but it helps by moving much of the performance tuning out of the application and into custom constructs. Performance of those constructs is tuned on given hardware. Applications in the domain that use those tuned constructs inherit that tuning effort. + +The effort of tuning constructs is thus amortized across all the applications that use them, while the effort of low-level tuning of the proto-runtime is amortized across all constructs in all languages. + + + +In Section \ref{secWhatHW} we analyze a number of languages to show how their constructs fit that basic pattern, including low-level parallel languages like TBB and pthreads, and show how a proto-runtime differs from them. In Section \ref{secResponsibility} we give the details of our proto-runtime implementation. In Section \ref{secTopics} we show how to use the proto-runtime to create a new language construct. In Section X we give measurements of time-to-implement several different languages, and overhead in a direct comparison to pthreads and OpenMP. We conclude in Section \ref{secConclusion}. + +\section{Background and Related Work} + +More on domain-specific + +HWSim as a domain-specific + +Other ways of doing domain-specific + +Low-level sync language, like pthreads or TBB at base. Build constructs on top -- same flexibility, but don't hide low-level from construct creator, don't provide interface, don't provide same level of reuse. The interface can be provided on top of these, but that's just an alternate implementation of our proposal, and as we show, will be much higher overhead. + +Library based -- limited, can't encode patterns like HWSim, can't supply new sync constructs. + +SEJITs -- limited to just operations -- can't encode patterns like HWSim, can't supply new sync constructs. + + +\section{Paper Design} + +Starting-point: + +What do people know, buy right away as "yes, this is problem, need solution" + +The line about: software lags behind hardware, and line about: need to be easier to introduce new hardware. + +?Three goals, as per future arch paper into ? + +For productivity, Domain-specific langs.. + +Point 1 is lots of languages onto lots of hardware. + +Point 2 is new hardware runs software right away, from all those langs (domain-specific) + +Serious logistical, real-world issue.. if no solution, then don't get domain-specific -- has to be low-labor to add domain-specific for all popular hardware, or else domain-specific not viable. If domain-specific succeeds, then need low-labor to enable all on new hardware, else have software-deficit for new hardware -- retards hardware advancement.. + +No matter what, for domain-specific to succeed and allow hardware to advance freely, need a solution for many languages low-labor onto many hardware. + + +Golden bridge: + +Thing provides that has to have a way of + +Near-side: +Features + +-] Tie-point as fundamental + +-] Proto-runtime provides primitives + +-] Standard mechanism for executable to connect to runtime (request primitive) + +Benefits + +-] Labor reduction from tie-point making sequential, plus reduction of what language provides. (lang-part reduced to only seq semantics of construct and choosing assignment of work onto location) + +-] Labor reduction from regularization: + +--] request-interface between executable and runtime is standard + +--] interface btwn plugin and proto-runtime is standard + +--] support primitives are standard + +-] Labor reduction from plugin reuse -- complex parts of assigner can remain the same among many languages + + +\section{Key Passages} + + + + +Unified pattern within parallel languages: create multiple timelines, then control relative progress of them, and control location each chunk of progress takes place. + +========== + +By keeping control-flow inside VMS, the language-supplied portion of the runtime is simplified. Control flow includes concurrency, and so is inside the VMS-implementation. + +This is how the language-supplied runtime functions end up being sequential code, even though they implement the \textit{semantics} of parallelism constructs. + +Another way to think about it is analogy with the x86 implementation of atomic instructions. They are normal instructions, but with the ``atomic access" bit set. The processor separates the instruction behavior into two parts: 1) ensuring exclusive access to the memory location, and 2) the semantics. Exclusive access is in the memory system, while the semantics are in the pipeline. + +VMS also makes this separation: the semantics are in the plugin, while the VMS implementation holds the part that handles relative timing between different slave VPs. +This arrangement 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. + +The assignment code is critical to performance because application performance is most strongly influenced by communication within the hardware, which depends on the choice of when and where work is assigned. For high performance, it also tends to be complex. Thus, simple reuse of it is a significant benefit. + + + + +%%%%%%%%%%%%%%%%%%%%% +\section{Context: PStack} + + + +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} + + + +\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 + + +%%%%%%%%%%%%%%%%%%%%%%%% + + +\bibliography{../helpers/bib_for_papers} + + +\end{document} + +-] sell VMS as targeted to domain-specific languages +-] a bunch of such languages need to be created and ported, so ease of creation and porting trumps other concerns. +-] These are *practical* issues which stop domain-specific dead in the water if they're not solved.. efficiency just needs to be close. +-] spend time in the paper describing the problem +-] first slow uptake of parallel-programming, +-] how domain-specific languages can help with that (solve productivity and porting issues, plus fit with existing tools and approach to solve adoptability issues) +-] small number of users means such a language has to be quick to create and quick to port, +-] but to be adopted, still has to maintain low overhead + +-------- Make case that VMS really does support domain-specific +-] HWSim is example of "real" domain-specific created with VMS +-] Describe the philosophy, so can see it's something original +-] Describe the constructs, so can see no languages with that exist +-] Describe process of creating, so can see VMS helped: most time was design + +-] maybe the graph language for Unister? Send some ideas to Clemens.. + +-------- Make case that VMS really does simplify language creation +-] Time to impl lang: SSR, VCilk, Vthread, VOMP, VStarSs, HWSim.. give times for all +-] Time to add construct: Adding Transaction, atomic, and singleton.. give times to design & impl +-------- Make case for reuse +-] Copied singleton, transaction, and atomic to all the languages.. less than an hour.. just add an entry to dispatch and copy-replace lang name +-] Copied mutex from Vthread to VOMP, and critical section was variation, and whatever other code borrow from SSR or Vthread +-] mention that just need common data structure between constraint-handler and assigner, and then reuse of assigner -- all languages use the same one right now.. haven't gotten to implementing data-tracking high perf ones yet. +------- Make case for modularity and clean decomposition +-] reuse demonstrates modularity is real +-] app switch to runtime, do Master stuff, switch back is universal pattern +-] switch mechanism to get to runtime is universal +-] runtime has internal communication -- always a piece on each core, even when centralize create and constraint handling and assignment +-] runtime does create of virtual processors -- whether short-lived atomic tasks, or long-lived suspendable ones -- universal pattern +-] These patterns exist in every runtime, even ones that have part hardware. VMS just is consistent with the patterns, embodies them. It breaks into pieces along these natural lines. +-] libGomp, Cilk runtime, OS threads, and others mash things together.. don't decompose in coherence with these universal patterns -- that causes those others to be non-generic +-] discovered this way of arranging makes many things simple -- refer to instrumenting VMS runtime to collect Holistic Model measurements +-] + + Okay, so taking this into mind, I've decided to sell VMS as targeted to domain-specific languages, and ignore any other uses. That's because a bunch of such languages need to be created and ported, so ease of creation and porting trumps other concerns. These are *practical* issues which stop domain-specific dead in the water if they're not solved.. as long as performance is close, it wins. + I'll spend time in the paper describing the problem -- first slow uptake of parallel-programming, and how domain-specific languages can help with that. Then that the small number of users means such a language has to be quick to create and quick to port, but still has to maintain low overhead. + HWSim is my example of a *real* domain-specific language created on top of VMS -- it's done and working now, reference manual attached for curiosity sake. I logged a total of 94 hours on it, spread over many months, but around 80% was design, and the implementation was super tricky to get it both efficient and exploit maximum of the parallelism that is available.. the VMS-specific part was only around 20 to 30 hours, once I actually sat down to write the code. + So that covers the case of implementing a real domain-specific language using VMS. I'll support that by talking about time and effort to create the other languages with VMS -- doing OpenMP right now, and will do StarSs after that, might even do WorkTable if have time, to provide enough examples. + What's left is overhead. I have head-to-head vs pthread, and will do against OpenMP, and StarSs if I have time. The only issue is that a fair amount of OpenMP is scoping rules around variables, which is handled by the compiler. I'll have to do that scoping part by hand for VOMP (VMS version of OpenMP) applications. But it's a runtime to runtime overhead comparison, so that should be fine.. + + I don't know if I mentioned this before.. I've realized during creation of the new version that VMS actually follows a pattern that appears to be fundamental to all runtimes. They all have a mechanism to escape the application and transfer to the runtime. That's what the assembly primitives for suspending do. All runtimes have some way to create virtual processors, whether atomic ones like dataflow or suspendable like pthreads. VMS provides services to do this. And all runtimes have some form of scheduler that both handles constraints on work and chooses which hardware to do the work on. This is what the Master is. The only thing VMS does is decompose the code in accordance with that basic pattern. + The new paper follows this line of reasoning, and simplifies the explanation, making it much easier to follow. I'll still put a little bit about the tie-point stuff, but just as an "extra" rather than driving the paper with it. + + + + +At 04:53 PM 5/20/2012, you wrote: +Hi Sean, + +I am lagging behind and have been postponing answering your messages for too long, sorry about this. + +On 05/08/2012 04:28 PM, Sean Halle wrote: + + +Hi Albert, + +I have a favor to ask. I need a "case study" of using libGomp as the +basis for the runtime, as a comparison for effort. May I use your +experience on TeraFlux? I'm thinking just one paragraph, with things +like how long your guy spent learning the libGomp code, what it was like +to debug his changes, how much effort went into just the sequential part +of the semantics, vs everything else. Simple stuff and quick to answer. + +May I ask your guy? That would make a great contribution to the paper :-) + +The pb with libgomp itself is that it is rather simplistic and non-scalable. Lots of locking, and centralized data structure. + +Boris Arnoux (former Master student, now at Facebook) had very little trouble understanding it and could modify it quicly. Feng Li had little difficulties as well, when he was a google SoC student a while ago, and contributed to the compilation side. But I think that again, libgomp is too simple. + +Ahhh.. hmmm.. okay.. + If libGomp is implemented that way, then it will be interesting to see the performance difference, using the 4 socket by 10 core each machine here, between OpenMP with libGomp and VOMP with our tuned VMS. + That's a selling point of VMS -- tune it once, and let the languages inherit.. and the tuning so far was largely invisible, underneath the plugin. That's an important practical point for domain-specific languages. + + I think the simplicity of libGomp also makes our case for us: even libGomp, which is widely used, hasn't been performance tuned ! That can only be because of the practical difficulties involved.. It supports the case that you want to concentrate the low-level hardware hacking in one place, and let it inherit into all the languages. + For Domain Specific languages, which will have smaller user-bases than libGomp, the same practical considerations that have kept libGomp unoptimized all this time will prevent individual Domain Specific languages from low-level hardware tweaking. + + +The Cilk runtime is more interesting. I came to study again the tradeoffs behind workstealing, the impact of the scheduling decisions on the implementation of "sync", and the impact of the strictness of the (very simple) task model of Cilk on the efficiency of the implementation. I believe it is a better case for testing VMS. + +Good point. The simplicity of the Cilk constructs allows a highly efficient runtime. However, this kind of simplicity is rare -- and won't, in general, arise in domain-specific languages.. so if VMS can do well against Cilk, that's impressive. But I don't think Cilk is a valid comparison, because it's runtime can't be used to support most domain-specific languages in the direct, low effort, way that VMS can. + +Not just simulating the functionalities and task model of Cilk, as you did in VCilk, but comparing the actual performance on highly stressed scheduling scenarios (short-lived tasks, contention, load imbalance). + +I do want to do this kind of comparison -- it matters because runtimes are more complex than simple overhead. However, this kind of stressing mixes VMS responsibilities with those of the plugin.. load imbalance is largely the job of the assigner function in the plugin. For short-lived tasks, it is all about pure overhead, but it's also already measured well by synthetic micro-benchmarks, such as the one Merten and I did for pthread vs Vthread. For contention, it depends on what is contended.. if it's a lock inside the runtime, then this is important.. but measuring it is highly implementation dependent.. the contention point moves around, and what stresses that point depends on the details of the VMS internals. + +If you are able to reproduce the nice features of a finely designed runtime with VMS, and if it really makes the code more modular (i.e., generic components of VMS simplifying the implementation, reducing the plugin's code size, and allowing reuse across plugins), it will be a very strong case. + In fact, for the modularity itself, you really need *two* plugins, to show how much they have in common. I am totally convinced that there is hope in this direction, and that VMS makes important progresses. Talking about reuse, modularity, simplicity of implementation, should appeal to many people. + +Nice.. I'll concentrate on the modularize and simplify and reuse parts, then. Thanks :-) + +These are critical for Domain-Specifica and I think I can make a reasonable case. In fact, in the VOMP implementation, I'm reusing constructs from other languages -- it's a snap, the code just drops in. I'll be sure to highlight that fact, to support the reuse claim. + + +But this will only be a convincing case if the performance numbers are there, and the methodology to assess this performance is very solid. + +Right -- I'm doing head-to-head Vthread vs pthread and VOMP vs libGomp in OpenMP to make the overhead and performance case. + +This, though, brings up an issue -- I have had the hardest time finding decent benchmarks that have small work-unit sizes that are tunable. It's no problem to find ones with embarrassing parallelism, but a real bear to find any with interesting dependency/constraint structures.. + +Any pointers on where to get benchmarks with interesting dependencies and tunable work-unit sizes? + + +Now, my skepticism towards VMS is on whether we have been able to capture the essence of what makes a runtime a scalable and efficient runtime. + +Ahhhh.. yessss :-) +Very good point :-) + + Yes, the current VMS interface does, indeed have a scalability problem, because it exposes shared semantic state. Although, that shared semantic state seems to be the only thing in the interface that affects scalability. Also, there are ways to implement such shared state that should scale reasonably. + That's a subtle and important point, though.. what's part of VMS vs simply a detail of one implementation. The core_loop thing is really not part of VMS, which I've realized now.. it's simply an implementation detail meant to amortize the cost of acquiring that centralized lock (which we measured, and it's a big deal on the larger machine, where lock-acquisition time dominates the overhead and hence total execution time for small work sizes). + The new VMS version leaves the choice over localized vs centralized up to the plugin writer. This appears to leave a great deal of room for variations in the internal implementation, at least based on my investigations so far. It allows the use of a shared semantic state, but it also allows dividing the state among cores or among nodes -- it presents this choice to the plugin writer. + So, the current simplicity is maintained, if desired. It's now the choice of the plugin writer whether to spend extra effort on scalability/overhead or just do the simplest thing. Even still, the plugin is STILL isolated from the bit-twiddling level. + The heavy-duty bit-twiddling, which happens inside VMS, gets reused across all languages, then all applications on top every one of those languages.. that's a massive enough amortization to make the low-level bit-hacking pay off. + + The simple fact that libGomp remains such a poorly tuned runtime after many years, suggests that inheritance of bit-twiddling will be powerful in practice. The part that is specific to a language stays the same, across different low-level VMS implementations. + + This is a really good point to highlight in the paper.. demonstrate by showing an implementation without the core_loop stuff (which I call core controller now), which runs on the 1 socket 4 core, and then the version that does have the core controller for the multi-socket machine.. show that one is better on the 4 core and the other better on the 40 core.. + + +We certainly captured much about what is generic, reusable across runtimes and languages, improving the experience of developping plugins. But regarding the fine tuning of the performance, I am not sure. And I increasingly realize that runtimes may not be such complex beasts of code like compilers that really push the difficulty on the modularity and reuse side. They are pretty small overall. + +Hmmm.. so far, my investigations have led me to a different conclusion -- that runtimes appear to span a wide range of complexities, which depends upon the hardware and application. The Holistic work has shown that the nature of the application actually has a major role in the qualities a runtime should have. The particular input data also plays a role. + +nd should actually be multi-level. (Nearly) each level of communication hardware should have its own runtime that manages the work that flows through that communication hardware. The higher the level, the more precious the bandwidth in that network. So, computation can be burned in order to minimize the communication, to avoid bottlenecking, and the units of work are larger at that level, so, for both reasons, more time is available to use complex work-assignment algorithms. It will be important to be able to reuse such algorithms across languages. + But in the lowest level, for simple constructs like Cilk and even Erbium, the runtime can indeed gain efficiency by tricks that take advantage of quirks of the constructs. However, for Domain Specific, few constructs will have such quirks to exploit, and also, this level of effort is off the table for them for practical reasons. + Putting that aside, when the new version comes, I really do think it will be close to Cilk and Erbium in overhead and performance.. unfortunately that has to wait for the next paper. It will require access to multiple machines, and require a lot of work preparing benchmarks, designing tests to apply stress in the right way, and implementing on all the platforms.. plus tuning the implementations. That's years worth of effort. I don't have the luxury of waiting that long before publishing. ; ) + +What makes them hard to program is the interaction between the concurrency model and the efficient exploitation of the hardware, that must be very well thought and reflected in the implementation. + +I think this is only true for a small class of specialized constructs like Cilk and Erbium. For example, with StarSs, the runtime overhead is dominated by creating tasks, which involves setting up dependency tables, and then later handling dependencies when a task finishes. That's according to the people in Ben's group who are working on a hardware accelerator for StarSs. + +Maybe VMS, especially your more recent incarnation of it (with less centralization and intermediate steps) is widely applicable to express this subtle interaction. But it has yet to be confirmed, and I am logically skeptical because I don't have the impression it was designed with this primary objective in mind. It had modularity and reuse in mind, which may not necessarily contradict the performance goals, but may not help it either. + +The new VMS was, actually, inspired by patterns discovered while tuning the current implementation on the 4x10 machine. I realized that keeping things local and having a high-speed mechanism for small control messages is the highest performance form of runtime in what appears to be most cases. This holds for both shared memory and distributed. + The interface tries to keep what it exposes minimal. It exposes the message handlers, task-types, and a work-queue for the simple types. + We did do one thing to make it more general, but it should preserve the performance -- we push work rather than steal it. That allows idle cores to be put into hardware sleep when it becomes clear they will remain idle for a long time. It also allows using micro-idle during back-off while waiting for work to come in. + If you stop to think about it, work-stealing forces the work-less cores to stay active, scanning for and trying to steal work. But work push allows the cores to turn off, because the pusher is able to turn it back on, at the point it actually has work. + The idea is to use lossy broadcast of "I need work" then do increasing periods of idle. If it waits too long, it goes to sleep (implemented as wait on cond-var). Other cores push work when they can, which wakes the recipient if it was asleep. At the point a core pushes work, it broadcasts a cancel of the "I need work". + An "escrow" service guarantees no work is lost. This is the only place a lock is used, to guarantee no loss. The work is either taken by recipient or returned to sender, with a timer built in to avoid it sitting indefinitely. + The messages sent are all very small -- a single word in the message system we built for the new VMS. I proposed hardware have a separate network just for these small control messages that are internal to the runtime. It should minimize latency, and have efficient broadcast -- it can be a single wire-pair serial, and connect cores in a very different pattern than the normal data network, to minimize latency. That's because latency is relatively easy to hide for data, but latency inside the runtime itself appears to be difficult, if not fundamentally impossible, to overlap effectively. + + +If you can prove both modularity and the ability to fine-tune the concurrency model and hardware interactions with VMS, it is clearly a panacea. It also helps explaining this story and getting some rarely taught perspective about runtime and parallel language implementation. + +Okay, words to think about -- I'll use that to design the new VMS paper: show the next generation has ultra-low overhead, and how tuning of the runtime takes place, on each of several hardware platforms. For this paper, focus just on the modularity and development effort, and only show that overhead is competitive. Next paper, add increased flexibility and focus on the overhead story. + This way, the current paper should be enough to get the existing work out there and get me a paper to leverage into a professorship. I can't afford to let the effort that went into the current version go into a dark hole, with only one workshop paper! + The "perfect" paper will be the next one ;-) + + + +====================================== +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. + diff -r e3e35676068a -r 364de5b006db CVs/12_Ap__Euro_Fellowship_CV/euro_fellowship_CV_w_pubs.pdf Binary file CVs/12_Ap__Euro_Fellowship_CV/euro_fellowship_CV_w_pubs.pdf has changed diff -r e3e35676068a -r 364de5b006db CVs/12_Ap__Euro_Fellowship_CV/sean_halle_CV.pdf Binary file CVs/12_Ap__Euro_Fellowship_CV/sean_halle_CV.pdf has changed diff -r e3e35676068a -r 364de5b006db CVs/12_Ap__LLNL_CV/sean_halle_CV.pdf Binary file CVs/12_Ap__LLNL_CV/sean_halle_CV.pdf has changed diff -r e3e35676068a -r 364de5b006db CVs/12_Ap__LLNL_CV/sean_halle_CV_2.pdf Binary file CVs/12_Ap__LLNL_CV/sean_halle_CV_2.pdf has changed