A Synergistic Approach to Specifying Simple Number Independent Layouts by Example Scott E. Hudson Chen-Ning Hsi Graphics Visualization and Usability Center College of Computing Georgia Institute of Technology Atlanta , GA 30332-0280 ABSTRACT A grid-based technique to specify simple number independent layouts by example is described . This technique was originally developed to support layout specification for a parallel program visualization system but can be applied to aid other simple graphical layout tasks as well . The technique works by allowing the user to construct an example layout using a grid-based interaction technique . This example can then be generalized into a layout algorithm which can be applied to create layouts of any size . However , rather than simply choosing the `` best '' generalization , the system described here takes a synergistic approach . New examples from a set of alternative generalizations are presented to the user so that they can guide and control the generalization process . This provides more understanding and control of the generalization process and typically allows a correct generalization to be constructed from only one small example . 1 INTRODUCTION In a number of application domains , it is important to be able to create customized layouts of graphical objects with a minimum of effort . For example , when using program visualization systems in a debugging context , very little time can be devoted to specifying a display layout . On the other hand , displays must be flexible enough to accommodate This work was supported in part by the National Science Foundation under grant IRI-9015407 . varying numbers and sizes of display elements . This paper describes a new technique for specifying simple layouts of this type by example and its implementation in a small prototype system . This system provides an easy to use grid-based interaction technique for creating an example layout in a constrained fashion . Based on an example created with the grid , the system guides the user in quickly exploring alternative generalizations that can be used to turn the single example layout into a more general layout algorithm . A central feature of the technique presented here is its synergistic approach which combines automated generalization with specific user choice and control . The technique allows users to quickly consider alternative inferences rather than trying to find the `` best '' generalization in a fully automatic fashion . This provides more control and understandability than typical by-example approaches , but still provides the ease of use advantages of pure by-example systems that require no explicit specification or programming . 2 . AN EXAMPLE To illustrate the techniques to be described here , this section will provide a small but complete example . Here , the system is used to specify the layout of a visualization in our parallel program visualization application . This particular visualization is designed to show the communication patterns among a group of processes at some stage in a parallel algorithm . As illustrated in Figure 1 , layouts generated by the system have a hierarchical structure . In this case , the layout consists of a static component containing a pair of buttons along with a sequence of process visualizations . Each process visualization in turn contains within it a sequence of sub-visualizations representing the buffers and communication channels of the process object . The number of processes and buffer displays within each process is determined at run-time . This hierarchy results in a simple boxes-withinboxes visualization -LRB- as shown later in Figure 5 -RRB- . Overall Layout Button Button Text BoxText Box ProcessProcess All Processes ??? ??? Text BoxText Box ??? -RCB- Static Portion -RCB- Proc Buff Buff Buff Buff ... Proc Buff Buff Buff ... Proc Buff Buff Buff Buff ... ??? Process Data Sequence Figure 1 . The Structure of an Example Layout Parts of the hierarchy where the number of items is known in advance can be constructed in a direct manipulation fashion by simply snapping items to a grid as shown in Figure 2 . In this case we know the size and type of the two button items in the first row in advance and can use a direct representation of those items . In the case of the process visualization sub-grid -LRB- in the third row -RRB- , a variable sized placeholder item is used to represent a range of potential sizes . As described in Section 4 , the grid provides a simple mechanism for adapting to varying sized objects . Figure 2 . Using the Grid for a Static Layout For layouts where items come from a varying length sequence , a graphical representation of the sequence is used to construct a single example . As with the static portions , this example is constructed by snapping numbered elements from the sequence to a grid . Two such example layouts -LRB- one for the layout of buffers within each process and one for the overall display of processes -RRB- are shown in Figure 3 -LRB- a -RRB- -LRB- b -RRB- Figure 3 . Two Example Layouts After snapping together an example and manipulating the grid spacing , the user can ask the system to generalize the example into a layout procedure which can handle any number of examples . The system does this by generating a series of viable generalizations -LRB- using the mechanism described in Section 5 -RRB- . Each of these generalizations represents a layout procedure . These procedures are then employed to generate additional examples based on longer sequences . Figure 4 shows this process for the example from Figure 3b . Here the user is presented with a set of new examples and allowed to choose among them in order to select the final generalization . Alternately , the user can request additional generalizations . Figure 4 . New Examples Illustrating Generalizations of Figure 3b The generalizations presented in Figure 4 are generated using a fixed set of generalization strategies -LRB- as described in Section 5 -RRB- . Note that many of the generalizations illustrated in Figure 4 are clearly not what the user intended . In fact , this is to be expected of essentially any generalization method since only one very small example has been given and there is very little basis for making a correct choice . By providing more examples -LRB- as well as perhaps a set of negative or counterexamples -RRB- a generalization system might be able to perform much better . However , this would be dramatically more work for the user and much more cumbersome . Instead , by getting the user involved in the selection process , the correct generalization can normally be selected with minimal effort -LRB- e.g. from only one small example -RRB- . To finish our example , Figure 5 shows a complete display of real data from our application constructed from generalizations of the examples shown in Figures 2 and 3 . -LRB- Note that the horizontal , vertical , and diagonal lines in this example represent messages and are not laid out by the system itself , but are simply drawn between buffer visualizations as part of the final animated display -RRB- . Figure 5 . A Completed Visualization In the next section techniques from related work will be discussed . Then , Section 4 will briefly describe the operation of the grid layout technique and Section 5 will describe the generalization strategies employed by the system . Finally , Section 6 will consider limitations of the system , describe future work , and provide conclusions . 3 . RELATED WORK A number of systems have provided direct manipulation interfaces to layout specification -LRB- see for example -LSB- Hend86 -RSB- -RRB- . These system essentially allow layouts to be specified by drawing them . In addition to its inherent speed and interactivity , this approach has a number of advantages over more traditional programmatic specifications . In particular , layout specifications are expressed as concrete entities , the objects of interest are visible and can be directly manipulated , and the effects of changes can be made immediately apparent . In addition , these systems have the advantage of using primarily visual means to describe visual entities . Unfortunately , many direct manipulation layout or presentation editors are limited to fixed displays containing static elements . Although techniques such as constraints have allowed some interactive layout specification systems to support size independent layouts -LRB- see for example -LSB- Card88 , Huds90 -RSB- -RRB- , few if any support layouts where the number of items is not fixed in advance . Although tolerable for many user interface applications , this limitation makes it difficult to employ these systems in data-rich environments -LRB- such as visualization -RRB- . In these environments the nature of the display needs to be influenced more by the actual data encountered than by the fixed structure of the application . The system presented here produces layouts which are both object size and number independent . The work presented here builds on previous work in specification or programming by example or by demonstration -LRB- see for example -LSB- Mau89 , Cyph91 -RSB- -RRB- . These systems attempt to infer a general procedure for carrying out some task based on one or more examples . For example , the Peridot system and its successors -LSB- Myer86 , Myer87 , Myer89 -RSB- have been very successful in inferring the specification of interaction techniques and simple constraints by demonstration . In addition , these systems take some steps toward user involvement in the inference process by allowing users to reject inferences . However , alternatives are not presented to the user directly , and examples are not generated to aid with selection . The work presented here goes further by using examples both for specification and for evaluation of the results or exploration of alternative results . By-example systems maintain many of the advantages of direct manipulation approaches . However , they go further by eliminating any explicit or implicit programming step all together . However , by-example systems also have drawbacks . In particular , if the system fails to infer what the user intends by an example ? chooses the wrong generalization -LRB- s -RRB- from the example to a full procedure ? difficulties can arise . In some cases , the user can simply specify more examples or provide counter examples . However , generalization techniques are currently limited and tend to be very domain specific . As a result , the user often must try to `` reverse engineer '' the inferences being made in order to coerce the system into choosing the correct generalization -LRB- s -RRB- . The system presented here attempts to overcome this difficulty by allowing the user to play a stronger role in the generalization process . In particular , the system plays the role of creating or suggesting generalizations , but the user -LRB- who has more explicit knowledge of the intended result -RRB- controls the process by evaluating and choosing between generalizations . This synergistic approach proposed here is related to the one taken in the FLATS system -LSB- Koch90a , Koch90b , Koch90c -RSB- which allows a design space of computer generated floor plans to be interactively explored by the user . Unlike the FLATS system , the work presented here seeks both to create and express the action of a procedure by means of examples -LRB- rather than aiding in the choice of a single design instance from a set of automatically created designs -RRB- . 4 . USING THE GRID LAYOUT TECHNIQUE As illustrated in the example of Section 2 , the first step in creating a layout is to use a grid to construct an example layout based on a small number of elements . This section describes the grid interaction technique and how it may be used to construct constrained layouts suitable for the generalizations described in the next section . Requiring all layout elements to lie on grid points restricts the nature of the layouts . This can be constraining and limits the form of layouts that can be produced ? in fact , this limitation can be seen as a central drawback of the work presented here . However , grids provide structure to the layout process , are very easy and natural to use , and are suitable for reuse in new design contexts . These properties , particularly the provision of structure to the layout , allow a more powerful generalization technique to be applied . In addition , although grids can be restrictive , because they establish a common framework for designs they have been used successfully -LRB- and in fact advocated -RRB- for general graphic design -LSB- Hurl78 , Mull81 , Fein88 -RSB- as well as tasks such as text or table layout -LSB- Beac85 -RSB- . In the prototype described here , the grid is implemented as an interactor object -LRB- sometimes called a widget -RRB- in the Artkit user interface toolkit -LSB- Henr90 -RSB- . This same interactor -LRB- with different default appearance and action -RRB- is used both for creation or editing of the initial layout and to manage the display of the layout in the final interface . As a result , the system requires no extra code or special provisions to allow the end-user to modify or customize the layout -LRB- when this is desirable -RRB- . As one would expect , the grid interactor allows objects to be snapped to the intersection of its horizontal and vertical guide lines . In addition , the grid provides operations to reposition rows and columns , flip , rotate , and exchange a selected area , and interactively modify the point of attachment -LRB- e.g. to the top , bottom , left , right , middle , etc. of each object -RRB- . By default , items are simply attached to grid points and the position of adjacent row and column grid lines is independent of the size of these items . Optionally , the size of items can be taken into account when computing grid line positions for the final layout . When this option is invoked -LRB- on a selected set of rows or columns -RRB- , grid line positions are constrained to be relative to the nearest edge of the largest item in the row or column . For example , if a grid line is 5 pixels away from the largest sample items in an adjacent row , then in the resulting final layout , the grid line will be placed at a distance of 5 pixels from the widest item in that row . This strategy is similar to the stretching behavior described in -LSB- Card88 -RSB- and can be used to create layouts which automatically adjust to the size of the objects within them . A final operation provided by the grid is a special clean up or normalization operation . This operation can be used to adjust both distances between adjacent grid lines and object size scale factors so that they form ratios of small integral multiples . This technique allows approximate placements to be `` cleaned up '' by the system . For example , a set of 5 grid lines could be initially placed with the first 4 at nearly uniform distances and the last with close to double this spacing . After normalization , the resulting rows would have exactly 1:1:1:2 spacing . Figure 6 shows the algorithm used for normalization . This algorithm accepts a set of N input distances -LRB- or sizes -RRB- , and computes scale factor plus the closest integral ratio such that all elements of the ratio are less than a small fixed limit M -LRB- e.g. each element of the ratio may range from 0 to M -RRB- . For our systems we have used M = 9 successfully . The final distances -LRB- or sizes -RRB- are computed as the product of the scale and ratio number . / * Input : int in -LSB- i -RSB- , i = 1 , N output : int ratio -LSB- i -RSB- , i = 1 , N int scale ; * / int scale , error , minerror , temp ; minidx = find_minidx -LRB- & in -LSB- 0 -RSB- -RRB- ; minerror = MAXERROR ; for -LRB- i = 1 ; i < = M ; i + + -RRB- -LCB- scale = in -LSB- minidx -RSB- / i ; error = 0 ; for -LRB- j = 1 ; j < = N ; j + + -RRB- -LCB- temp = in -LSB- j -RSB- / scale ; error + = abs -LRB- temp * scale - in -LSB- j -RSB- -RRB- ; -RCB- if -LRB- error < minerror -RRB- -LCB- min_ratio = i ; minerror = error ; if -LRB- error == 0 -RRB- break ; -RCB- -RCB- scale = in -LSB- minidx -RSB- / min_ratio ; for -LRB- i = 1 ; i < = N ; i + + -RRB- -LCB- ratio -LSB- i -RSB- = in -LSB- i -RSB- / scale ; -RCB- Figure 6 . Normalization Algorithm 5 . GENERALIZING FROM EXAMPLES A layout instance defines the positions and sizes for a fixed number of objects in a specific layout . A generalization process is employed to convert this example into a complete procedure that can work with any number of elements . The generalizations used by the system are based on the assumption that the objects in the layout come from an ordered sequence -LRB- more complex structures are currently being explored as a part of future work -RRB- . Following that order , a list of vectors traveling from the first object to the last object can be calculated . The path produced by these vectors forms the basis of our generalization strategies . For example , Figure 7 shows the path resulting from the placement of three objects . Note that each vector of a path is recorded in units of grid position not in absolute coordinate values . Figure 7 . An Example Path In each of the generalization strategies , the path formed by the traveling vectors is deemed as a pattern . Each generalization strategy represents one method of enumerating new instances from that pattern . The two overall strategies currently employed are interpolation and repetition . Interpolation takes the viewpoint that the original pattern is the desired overall shape of the layout and that a larger or smaller layout with the same shape is the desired result . As illustrated in Figure 8 , this generalization strategy works by inserting points into line segments of the path and uses those extra points to layout the objects . Figure 8 . An Interpolation of Figure 7 Repetition takes the viewpoint that the example path forms a primitive shape and the desired result is some repetition of this shape . Figure 9 , illustrates one form of repetition . Figure 9 . An Example Repetition of Figure 7 Each of the two overall generalization strategies has several variations . For the interpolation approach , interpolation can be done horizontally , vertically , or both . This results in three different specific generalizations as listed below . Line Segments of Interpolation Generalization Strategy No . horizontal -LRB- 1 -RRB- vertical -LRB- 2 -RRB- horizontal and vertical -LRB- 3 -RRB- The repetition generalization strategy has three orthogonal ways in which it can be varied . Different scale factors can be applied to repeated sub-patterns , different rotations can be applied to the repeated sub-patterns , and the repeated subpatterns can be related to their parent patterns at different points . In our initial prototype we have limited the choices for these variations . Only small number of scale factors -LRB- 1 and 1/2 -RRB- and rotation factors -LRB- 0o and 90o -RRB- are considered , and three variations are used for selecting repetition positions . They are repetition only at end points , repetition at each child point , and repetition at each point in the pattern . Here , the set of child points includes every point in the initial pattern except the first point and all the points generated by the subpattern repetition . This results in 12 specific generalizations as shown below . After more experience is gained with these generalizations , additional variations will be considered . These include several variations on row and column expansion as well as repetitions at identifiable extreme points of the pattern . Repetition Positions Generalization Strategy No . end point child points all points -LRB- 1,0 -RRB- -LRB- 4 -RRB- -LRB- 5 -RRB- -LRB- 6 -RRB- -LRB- Scale , -LRB- 1/2 , 0 -RRB- -LRB- 7 -RRB- -LRB- 8 -RRB- -LRB- 9 -RRB- Rotation -RRB- -LRB- 1,90 -RRB- -LRB- 10 -RRB- -LRB- 11 -RRB- -LRB- 12 -RRB- -LRB- 1/2 , 90 -RRB- -LRB- 13 -RRB- -LRB- 14 -RRB- -LRB- 15 -RRB- Figure 10 shows examples of a number of these generalization strategies . Note that in Figure 10 , only 10 alternatives are present . The others are not shown because position collisions occur among objects during application of those generalization strategies to large examples . This criteria is used to cull potential generalizations before presentation to the user -LRB- the size of examples considered in this test is set by the user -RRB- . Figure 10 . Examples of using generalization strategies : -LRB- a -RRB- original layout , -LRB- b -RRB- ? -LRB- k -RRB- after applying generalization strategies -LRB- 1 -RRB- , -LRB- 3 -RRB- , -LRB- 4 -RRB- , -LRB- 7 -RRB- , -LRB- 8 -RRB- , -LRB- 9 -RRB- , -LRB- 10 -RRB- , -LRB- 13 -RRB- , -LRB- 14 -RRB- , and -LRB- 15 -RRB- . New strategies can also be created by composing the above fifteen basic generalization strategies . This composition can be done by applying the generalization strategies repeatedly . If none of the first-time generalization is desired , users can pick a partially correct generalization and request additional generalization . This process can continue until the desired layout is generated . When a layout generated using multiple strategies is chosen , a composite generalization strategy is formed . In addition to the sequence of basic strategies applied to create a composite generalization , the system also records one parameter for each strategy . This parameter records the number of points inserted by an interpolation strategy or the number of replications done by a repetition strategy . Based on the ratio formed by these numbers , the composite strategy generalizes layouts by proportionally applying the respective basic strategies . For instance , a composite strategy composed of a two-point horizontal interpolation and one end-point repetition will generalize a layout by inserting 2N points horizontally and repeating the resulting pattern N times at the end points -LRB- i.e. in a 2:1 ratio -RRB- . Using composed layouts provided by the mechanism described above allows the system to produce a wider range of more interesting layouts than can be generated from a simple example . Additional variations on the composition mechanism are also under study . Including exploration of different kinds of composition and an automatic mechanism for promoting `` interesting '' composite strategies to basic -LRB- `` onestep '' -RRB- strategies . Although the use of rectangular grids and only a few generalizations strategies would seem to severely limit the class of layouts that can be produced , in practice many simple layout strategies can be effectively specified in a very simple fashion . To illustrate the flexibility of this method , the generalizations needed to produce a complete breadth-first binary tree layout are presented below . To specify this layout , the user initially places three objects in the grid as shown in Figure 11 -LRB- a -RRB- . The user then stretches the grid to adjust the distances among those objects . When the distances look right as shown in Figure 11 -LRB- b -RRB- , the user sets the grid edge distances to `` dependent on the object size '' , and then applies the normalization operation to clean up the example . In this instance , both the horizontal distance ratio and vertical distance ratio are normalized to `` 1:1:1 '' . The object size normalization operation produces horizontal and vertical scale ratios of `` 1:1 '' and `` 3:2 '' . Next , the user asks the system to generalize . From the generated layouts presented the user picks the example resulting from generalization strategy 8 -LRB- shown in Figure 10 -LRB- f -RRB- -RRB- . The binary tree layout can then be saved and used to layout different number of objects with different sizes . Figure 11 -LRB- c -RRB- and 11 -LRB- d -RRB- shows the use of the algorithm to lay out different numbers of objects and objects with different sizes , respectively . -LRB- a -RRB- -LRB- b -RRB- -LRB- c -RRB- -LRB- d -RRB- Figure 11 . Laying out a binary tree by example . 6 . CONCLUSIONS AND FUTURE WORK The specific prototype system presented here has a number of limitations . Central amongst these is the use of a fairly limited set of generalizations . We are currently exploring extensions in this area . However , the intent of this system has been to serve not as a final solution for by-example layout , but instead to serve as a testbed for exploring synergistic by-example techniques . Further , despite its limitations , the system has performed very well for our parallel visualization application . In particular , most common layout patterns in the domain can be specified , common layouts can be reused , and the system is very easy to use . We believe the synergistic techniques presented here have potential for many by-example systems . By involving the knowledge and capabilities of the user in the inference process , a good balance between automatic inference and `` manual '' user action is achieved . Tasks which are easy for the system and tedious for the user -LRB- e.g. , generating a range of candidate generalizations -RRB- are performed by the system . Tasks which are hard for the system but can be performed quickly by the user -LRB- e.g. , evaluation and selection of the proper generalization -RRB- are performed by the user . By employing examples at each stage . Little additional work is needed on the part of the user , and correct results can be obtained with fewer examples and more reliably than with pure byexample systems . REFERENCES -LSB- Beac85 -RSB- Beach , R. , Setting Tables and Illustrations with Style. , Ph.D. . Thesis , Dept. of Computer Science , University of Waterloo , Ontario , 1985 . -LRB- Xerox PARC Report CS-85-3 , May 1985 -RRB- . -LSB- Card88 -RSB- Cardelli , L. , `` Building User Interfaces by Direct Manipulation '' , Proceedings of the ACM SIGGRAPH Symposium on User Interface Software , Banff , Alberta , Canada , October 1988 , pp. 152-166 . -LSB- Cyph91 -RSB- Cypher , A. , `` Eager : Programming Repetitive Tasks by Example '' , Proceedings of CHI ' 91 , May 1991 . -LSB- Fein88 -RSB- Feiner , S. , `` A Grid-Based Approach To Automating Display Layout . '' , Proc . Graphics Interface ' 88 , 1988 , pp. 192-197 . -LSB- Hend86 -RSB- Henderson , D.A. , `` The Trillium User Interface Design Environment '' , Proceedings of CHI ' 86 , April 1986 , pp. 221-227 . -LSB- Henr90 -RSB- Henry , T.R. , Hudson , S.E. , Newell G.L. , `` Integrating Gesture and Snapping into a User Interface Toolkit '' , Proceedings of the ACM/SIGGRAPH Symposium on User Interface Software and Technology , October 1990 , pp. 112 - 121 . -LSB- Huds90 -RSB- Hudson , S. Mohamed , S. , `` Interactive Specification of Flexible User Interface Displays '' , ACM Transactions on Information Systems , v 8 , n 3 , July 1990 , pp. 269-288 . -LSB- Hurl78 -RSB- Hurlburt , A. , The Grid. , NY : Van Nostrand Reinhold Co. , 1978 . -LSB- Koch90a -RSB- Kochar , S. , Cooperative ComputerAided Design , Ph.D. . Dissertation , Harvard University , 1990 . -LSB- Koch90b -RSB- Kochar , S. , `` A Prototype System for Design Automation via the Browsing Paradigm '' , Proceedings of Graphics Interface ' 90 , Halifax , Canada , May 1990 , pp. 156-166 . -LSB- Koch90c -RSB- Kochar , S , and Friedell , M. , `` User Control in Cooperative ComputerAided Design '' , Proceedings of the ACM Symposium on User Interface Software and Technology , October , 1990 , pp. 143-151 . -LSB- Mau89 -RSB- Maulsby , D.L. , Kittlitz , K.A. , and Witten , I.H. , Metamouse : Specifying Graphical Procedures by Example , Proceedings of SIGGRAPH ' 89 , Boston , July 1989 , pp. 127-136 . -LSB- Mull81 -RSB- Muller-Brockmann , J. , Grid Systems in graphic design. , Niederteufen , Switzerland : Verlag Arthur Niggli , 1981 . -LSB- Myer86 -RSB- Myers , B. and Buxton , B. , `` Creating Highly-Interactive and Graphical User Interfaces by Demonstration . '' , Computer Graphics , 20:4 , August 1986 , pp. 249-258 . -LSB- Myer87 -RSB- Myers , B. , `` Creating User Interfaces By Demonstration '' , University of Toronto Technical Report , CSRI-196 -LRB- Ph.D. . Thesis -RRB- , May 1987 . -LSB- Myer89 -RSB- Myers , B. , Vander Zanden , B. , Dannenberg , R. , `` Creating Graphical Interactive Application Objects by Demonstration '' , Proceedings of the ACM Symposium on User Interface Software and Technology , November 1989 , pp. 95-104 .

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O O O O O O O O B O O O O O O O O O B O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O

generalization
layout specification
programming by example


Algorithm mapping with parallel simulated annealing Borut Robi < = c and Jurij < = Silc Jo < = zef Stefan Institute , Computer Systems Department Jamova 39 , 61111 Ljubljana , Slovenia E-mail : borut.robic@ijs.si Technical Report CSD-95-1 February 1995 Algorithm mapping with parallel simulated annealing ? Borut Robi < = c and Jurij < = Silc Jo < = zef Stefan Institute , Computer Systems Department Jamova 39 , 61111 Ljubljana , Slovenia E-mail : borut.robic@ijs.si Abstract This paper presents a parallel simulated annealing algorithm for solving the problem of mapping irregular parallel programs onto homogeneous processor arrays with regular topology . The algorithm constructs and uses joint transformations . These transformations guarantee a high degree of parallelism that is bounded below by d jNpj deg -LRB- Gp -RRB- +1 e , where jNpj is the number of task nodes in the mapped program graph Gp and deg -LRB- Gp -RRB- is the maximal degree of a node in Gp . The mapping algorithm provides good program mappings -LRB- in terms of program execution time and the number of processors used -RRB- in a reasonable number of steps . ? This work has been supported by Ministry of Science and Technology of the Republic of Slovenia under Grant Numbers J2-5092-106 and Z2-5509-106 . This report will appear in the Journal of Computers and Artificial Intelligence . Technical Report CSD-95-1 February 1995 1 Introduction A parallel computation is usually viewed as a directed graph with nodes representing tasks and arcs representing data dependencies among the tasks . This program graph must eventually be mapped onto a target parallel computer for execution . Typically , the mapping must also optimize a given cost function and , at the same time , satisfy all the constraints imposed by the target computer architecture . For example , the load distribution may have to be maximized while the amount of communication is to be minimized -LSB- 1 -RSB- , or the number of directly communicating nodes that are mapped onto adjacent processors must be maximized -LSB- 2 -RSB- . Finding an optimal mapping is often NP-complete problem , however , even for the simplest models of computational and communication cost -LSB- 3 -RSB- . Since there are good reasons to believe that there is no deterministic polynomial time algorithm that can solve any of these NP-complete mapping problems , several heuristics have been proposed for finding suboptimal solutions . Some of these heuristic methods , such as neural networks -LSB- 4 -RSB- , genetic algorithms -LSB- 5 -RSB- , and simulated annealing -LSB- 1,6 -RSB- employ techniques from natural sciences . But these physical optimization methods are often too slow for realistic applications . To improve their convergence , one can make additional use of the problem-specific information -LSB- 7,8 -RSB- . This approach , however , may be a very difficult one . Parallelization is another possibility for improving the convergence of these heuristic methods . In this paper we present a parallel simulated annealing algorithm which we designed to solve the problem of mapping parallel algorithms onto a processor array with regular topology . The outline of the paper is as follows : In Section 2 we discuss some general problems which appear in parallelization of the simulated annealing algorithm . In Section 3 we define a variant of the mapping problem . In Section 4 we present a parallel simulated annealing algorithm for solving this problem . Section 5 analyses the degree of parallelism in the algorithm and gives an example . Finally , Section 6 discusses some future research directions . 2 Parallel simulated annealing The simulated annealing algorithm SA is based on the analogy between the simulation of the annealing of solids and the problem of solving large combinatorial optimization problems -LSB- 9 -RSB- . The algorithm is a probabilistic modification of the greedy algorithm that does not get trapped in a local minimum . This hill-climbing property makes SA capable of finding good near optimal solutions . Moreover , the algorithm can be relatively easily implemented or adjusted when the problem changes . The principal shortcoming of SA is that it may require large amounts of computation time . One of the attempts to remedy this deficiency of SA is to make use of parallel computers . As a result , there are many parallel implementations of SA -LSB- 10 -LCB- 13 -RSB- as well as several theoretical results on the behavior of parallel SA -LSB- 14,15 -RSB- . Some algorithms use several processors to generate and test in parallel several configurations , and then choose one of the transformations satisfying the acceptance test . However , these algorithms are not efficient with a large number of processors as they require a large amount of communication . Another class of parallel SA algorithms contains so-called \ error '' algorithms -LSB- 11 -RSB- . These algorithms simultaneously generate , test and accept many transformations which are not necessarily independent . The change of the cost function involved by a transformation is computed with the erroneous assumption that there were no other simultaneously performed transformations . It is argued that these errors disappear as the value of the control parameter -LRB- i.e. temperature -RRB- becomes small and that they do not affect the global performance of the algorithm -LSB- 11,16 -RSB- . The advantage of these algorithms is that they can be implemented on massively parallel computers . In this paper we will develop and apply a parallel SA algorithm which belongs to the second class with the additional property of \ zero-errorness '' -LRB- to be defined in Section 4 -RRB- . 3 The mapping problem Let Gp = -LRB- Np ; Ap -RRB- be a program graph , where Np represents tasks and Ap represents data dependencies among them . Let a parallel computer be represented by a graph Gc = -LRB- Nc ; Ec -RRB- , where Nc is the set of processors and Ec is a set of physical interconnections . A mapping of the program graph into the parallel computer associates a processor to each task and a sequence of interconnections to each data dependency -LRB- Fig. 1 -RRB- . Formally , a mapping ? of Gp into Gc is a pair -LRB- ? N ; ? A -RRB- of functions ? N : Np ?! Nc and ? A : Ap ?! Sk > = 1 Ekc , such that for each a = -LRB- u ; v -RRB- 2 Ap , ? A -LRB- a -RRB- is a path in Gc , starting in ? N -LRB- u -RRB- and ending in ? N -LRB- v -RRB- . A mapping must be feasible , i.e. , it must satisfy all the constraints imposed by the target computer . The fundamental constraint is imposed by the topology of the computer architecture , i.e. , the set Ec of processor interconnections . Another limiting factor may be the load of the mapping , which is the maximum number of tasks that may be mapped to any single processor . Mapping may also take into consideration the congestion , which is the maximum number of arcs that are routed through any single interconnection link . We define the cost of the mapping ? as follows . Let us define the dilation ` -LRB- a -RRB- of an arc a 2 Ap to be the number of intermediate processors along the associated communication path in Gc , i.e. , ` -LRB- a -RRB- = k ? 1 if ? A -LRB- a -RRB- 2 Ekc . Then we define the cost of the mapping to be Q -LRB- ? -RRB- = Pa2Np ` -LRB- a -RRB- . A mapping ? is optimal if it minimizes Q -LRB- ? -RRB- . ffifl fflfi ffifl fflfi ffifl fflfi ffifl fflfi ffifl fflfi ffifl ffl ffifl ffl ffifl ffl ffifl ffl 9 6 7 8 5 4 3 1 2 ? ? ? 6 oe - ? ? ? ? ? ? -RRB- ? 6 - oe ? ? ? ? ? ? -RRB- - PPPPPPq ? ? ? ? ? ?? ? ? 3 7 5 4 2 9 8 1 6 ? 6 oe 6 6 6 ? oeoeoe oe 6 6 Gp Gc u ? N -LRB- u -RRB- a ? A -LRB- a -RRB- | -LCB- z -RCB- ` -LRB- a -RRB- =-RRB- ? Q -LRB- ? -RRB- = 5 ' & $ % Fig. 1 . A mapping . In this paper , the target computer is a processor array with r-regular topology . That is , Gc is a graph where each node has degree r , for some fixed r. Fig. 2 shows parts of regular processor arrays for r = 4 ; 6 ; 8 and 10 . Several parallel computers with regular topology appeared in the past . For example , Illiac-IV -LSB- 17 -RSB- -LRB- r = 4 -RRB- , datadriven processor array -LSB- 18 -RSB- -LRB- r = 6 -RRB- , Finite Element Machine -LSB- 19 -RSB- , EDDY -LSB- 20 -RSB- -LRB- r = 8 -RRB- . In the rest of the paper , we assume the load of the mapping to be one , i.e. , the function ? N is injective . We also assume that the congestion of the mapping is 1 , implying that Gp has to be restructured -LRB- e.g. by inserting split nodes -LSB- 18 -RSB- -RRB- to have the degree at most r . The problem of minimizing Q -LRB- ? -RRB- is NP-complete . -LRB- Proof is by reduction of the quadratic assignment problem -RRB- . Thus , heuristic techniques must be applied for finding suboptimal solutions . There are two basic approaches one can undertake when solving the mapping problem . In the direct approach a -LRB- sophisticated -RRB- mapping algorithm is constructed yielding results which are as good as possible . This may be a difficult task since one must consider as many characteristics of the program graphs and target architecture as possible . The indirect approach , however , fixes some -LRB- simple -RRB- initial mapping algorithm and then improves its results using heuristic techniques . Both approaches have been considered . In the first case a mapping algorithm from -LSB- 18 -RSB- was adopted and enhanced by three nontrivial improvements -LSB- 21 -RSB- . However , these improvements involve solving several NP-complete problems . In the second case several heuristic algorithms were applied and considerably improved the initial mappings -LSB- 8 -RSB- . Next , we will consider the parallelization of one of these indirect improvements . ~ ~ ~ ~ ~ ~ ~ ~ ~ ???? ??????? ??????????? ??????? ???? ~ ~ ~ ~ ~ ~ ~ ~ ~ ???? ??????? ??????????? ??????? ???? @ @@@ @@@@@@@ @@@@@@@@@@@ @@@@@@@ @@@@ ~ ~ ~ ~ ~ ~ ~ ~ ~ ???? ??????? ??????????? ??????? ???? @ @@@ @@@@@@@ @@@@@@@@@@@ @@@@@@@ @@@@ ?????? ????????? ??????????? ??????????? ??????????? ????????? ?????? ~ ~ ~ ~ ~ ~ ~ ~ ~ r = 4 r = 6 r = 8 r = 10 ' & $ % Fig. 2 . Some r-regular processor arrays . 4 Suboptimal mapping with parallel SA In this section we first give some preliminary definitions . Then we present two algorithms for construction of joint transformations , which are basic elements used in the parallelization of SA . Let Gp and Gc be a program graph and a r-regular processor array , respectively . The configuration space M of Gp is the set of all possible mappings of Gp onto Gc , i.e. , M = fM jM = ? -LRB- Gp -RRB- for some mapping ? : Gp ?! Gcg . If M 2 M for some ? , then the cost of the configuration M is defined to be equal to Q -LRB- ? -RRB- and is denoted by Q -LRB- M -RRB- . Furthermore , we say that a transformation ffl : M 7 ! M 2 M is elementary if it moves a single node v to one of r neighboring processors and reroutes all incident paths , i.e. , if there is some v 2 Np such that ? N -LRB- v -RRB- < > ? 0N -LRB- v -RRB- while ? N -LRB- u -RRB- = ? 0N -LRB- u -RRB- for all u ; u < > v . In this case the shifted node v will also be called ffl-node . The parallel SA algorithm will make use of joint transformations which are defined as follows . Given some configuration M 2 M , a joint transformation is a set fffl1 ; ffl2 ; : : : ; fflk g of elementary transformations of M whose order of execution is not important , i.e. , fflk ffi fflk ? 1 ffi : : : ffi ffl1 -LRB- M -RRB- is the same for any permutation ikik ? 1 : : : i1 of indices 1 ; 2 ; : : : ; k. Therefore , a joint transformation can be executed in parallel . Moreover , the cost variation ? Q = Q -LRB- -LRB- M -RRB- -RRB- ? Q -LRB- M -RRB- after the application of a joint transformation = fffl1 ; ffl2 ; : : : ; fflkg can easily be determined since ? Q = P 1 < = i < = k ? ffli Q , where ? ffli Q = Q -LRB- ffli -LRB- M -RRB- -RRB- ? Q -LRB- M -RRB- . Let dist -LRB- p ; P -RRB- denote the number of intermediate processors along the shortest path from a processor p 2 Nc to any processor in P ? Nc . -LRB- We define dist -LRB- p ; ;-RRB- = 1 . -RRB- Joint transformations can be constructed by the following simple algorithm JT . Algorithm JT : ffl-Nodes : = ; repeat choose u in Gp such that dist -LRB- ? N -LRB- u -RRB- ; ? N -LRB- ffl-Nodes -RRB- -RRB- > = 2 if not found u then exit ffl-Nodes : = ffl-Nodes -LSB- fug Gp : = Gp ? -LRB- fug -LSB- fneighbors of u in Gpg -RRB- until Gp = Algorithm JT returns a set ffl-Nodes of nodes which can be moved by a joint transformation . This transformation can be performed in parallel using k = jffl-Nodesj processing units , where each of the units takes one ffl-node , chooses and performs an elementary transformation ffl , and computes the corresponding ? fflQ . Note , that condition dist -LRB- : : :-RRB- > = 2 guarantees that each processing unit is allowed to perform any of the possible elementary transformations on the associated node since it excludes the possibility of shifting two ffl-nodes into the same processor . The condition dist -LRB- : : :-RRB- > = 2 in Algorithm JT restricts the number k of ffl-nodes and , subsequently , the degree of parallelization . To remedy this , we relax the condition dist -LRB- : : :-RRB- > = 2 , for the price of some extra computation . That is , for each new generated ffl-node we also determine its destination processor . The details are described in the improved algorithm JT ? below . Algorithm JT ? : ffl-Nodes : = ; Destinations : = ; repeat choose u in Gp ffl-Nodes : = ffl-Nodes -LSB- fug pick a free q in Gc such that q = 2 Destinations Destinations : = Destinations -LSB- fqg Gp : = Gp ? -LRB- fug -LSB- fneighbors of u in Gpg -RRB- until Gp = Algorithm JT ? returns a set ffl-Nodes of nodes that can be moved by a joint transformation , and a set Destinations , which is the set of corresponding processors , where the nodes will be moved . Hence , the constructed joint transformation can be described as a set of pairs -LRB- u ; q -RRB- , with u 2 ffl-Nodes and q 2 Destinations . This transformation can be performed in parallel using k = jffl-Nodesj processing units , where each of the units takes one ffl-node u , performs the elementary transformation ffl represented by -LRB- u ; q -RRB- , and computes the corresponding ? fflQ . Note , that a processor is free if it does not host any of the nodes of Gp , or if it hosts an ffl-node . Joint transformations are constructed with Algorithm JT ? and used in the following parallel simulated annealing algorithm PSA . Algorithm PSA : let M = ? -LRB- Gp -RRB- be initial configuration choose an initial temperature T > repeat construct joint transformation = fffl1 ; ffl2 ; : : : ; fflk g applying Algorithm JT ? Mold : = M forall ffli 2 in parallel ? ffli Q : = Q -LRB- ffli -LRB- M -RRB- -RRB- ? Q -LRB- M -RRB- if ? ffli Q < then apply ffli on M else if random -LRB- 0 ; 1 -RRB- < = e ?? ffli Q = T then apply ffli on M else : = ? ffflig endforall ? Q : = P ffl2 ? fflQ if random -LRB- 0 ; 1 -RRB- > e ?? Q = T then M : = Mold if a long time no decrease in Q or too many iterations then lower T until some time no change in Q After the construction of a candidate joint transformation , its elementary transformations are probabilistically accepted in parallel using Metropolis test . The resulting joint transformation is then probabilistically accepted with a global acceptance test . Performing global tests results in the improved convergence of the algorithm as it was shown in -LSB- 13 -RSB- . We use the following annealing schedule . Initially , the temperature T is set to aQ -LRB- ? -LRB- Gp -RRB- -RRB- , where a > is such that it guarantees high probability of accepting elementary transformations with ? fflQ > 0 . At each T changes are attempted until cjNpj acceptances occur , or djNpj attempts are performed , where < c < = d . After that , the temperature is lowered to bT , < b < 1 . PSA generates , tests and accepts many elementary transformations in parallel and is , therefore , a member of the class of \ error '' algorithms . It synchronizes after each joint transformation consisting of independent elementary transformations . Since there is no error accumulated it can also be termed as \ zero-error '' algorithm . 5 Performance analysis The convergence of the Algorithm PSA depends on the degree of its parallelism -LRB- and , of course , on the annealing schedule -RRB- . The only parallelism in the algorithm ?? HHHH HH HH HH ?? @@ ?? HH HH @@ ?? ?? @@ @@ @@ @@ ?? @@ ???? @@ @@ @@ HH HH @@ ?? ?? HH HH @@ @@ @@ @@ @@ @@ @@ @@ HH HH ?? HH HH HH HH HH HH HH HH ?? ?? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ' & $ % Fig. 3 . Initial configuration . is available in the forall : : : endforall loop , so one immediately observes that the number of elementary transformations in each is crucial . Let us concentrate on Algorithm JT ? since it is the task of this algorithm to construct joint transformation . The number of ffl-nodes is the same as the number of iterations of the repeat : : : until loop because , in each iteration , a node u is chosen in the current Gp and included in the set ffl-Nodes . Next , the node u and all its neighbors are excluded from current Gp . Since there are at most r neighbors , we find that d jNpj r +1 e < = jffl-Nodesj : Note , however , that this lower bound can be improved . Let deg -LRB- Gp -RRB- be the degree of the program graph Gp , i.e. , the maximal degree of a node in Gp . Then an improved lower bound on the number of ffl-nodes is given by the relation d jNpj deg -LRB- Gp -RRB- +1 e < = jffl-Nodesj : Generally , this lower bound is not tight -LRB- see example below -RRB- . For example , the number of ffl-nodes may be increased by choosing nodes with low degree first . To demonstrate the efficiency of PSA algorithm in solving the mapping problem , we consider an example program graph Gp from -LSB- 18 -RSB- where the target parallel computer architecture Gc was a data-driven array with r = 6 . Here , jNpj = 29 and deg -LRB- Gp -RRB- = 3 . The mapping algorithm ? from -LSB- 18 -RSB- mapped Gp onto Gc yielding the HH HH @@ @@ HH HH @@ ?? @@ ?? ?? ?? HH @@ @@ ?? 1 23 4 5 6 7 8 9 10 11 12 13 14 15 16 1718 19 20 21 22 23 24 25 2627 28 29 ' & $ % Fig. 4 . Final configuration after using parallel SA . cost Q -LRB- ? -RRB- = 120 -LRB- Fig. 3 -RRB- . As we mentioned at the end of Section 3 , we use the indirect approach to mapping optimization . Therefore , we proclaim the mapping algorithm from -LSB- 18 -RSB- to be an initial mapping algorithm and interpret Fig. 3 to be initial configuration used in the Algorithm PSA . The results of the algorithm PSA -LRB- with annealing schedule a = :3 ; b = :9 ; c = :2 ; d = :3 -RRB- are depicted on Fig. 4 . The cost was reduced from 120 to 27 . Note , that this result was achieved with only 39 -LRB- globally accepted -RRB- joint transformations -LRB- Fig. 5b -RRB- . The reason for such a low number of joint transformations was a high degree of parallelism in the Algorithm PSA . Namely , the Algorithm JT ? generated joint transformations -LRB- with random choosing -RRB- containing at least 11 elementary transformations . This is strictly greater than both lower bounds d jNpj r +1 e = d 29 6 +1 e = 5 and d jNpj deg -LRB- Gp -RRB- +1 e = d 29 3 +1 e = 8 , implying that many parts of each configuration were processed in parallel . To compare PSA with sequential simulated annealing , we applied both algorithms on the same initial configuration -LRB- Fig. 3 -RRB- . For this purpose , we used the SA algorithm from -LSB- 6 -RSB- , since that algorithm sequentially performs elementary transformations . The experiment with this SA , which returned comparable cost of 29 , took 294 accepting elementary transformations -LRB- Fig. 5a -RRB- . a -RRB- 39 accepted joint transformations a = :30 ; b = :90 ; c = :30 ; d = :20 initial cost Q = 120 final cost Q = 27 b -RRB- 294 accepted transformations a = :10 ; b = :95 ; c = :25 ; d = :30 initial cost Q = 120 final cost Q = 29 ' & $ % Fig. 5 . Cost reduction : a -RRB- with sequential SA , b -RRB- with PSA . Actually , the cost function Q , as it was defined in Section 3 , is not of primary interest to us . It is but a means to reduce other more important parameters of the mapped algorithms . Some of these parameters describe chip size which is the number of processors in the smallest rectangle enclosing the final configuration , the average execution time of the configuration , and maximum and/or average path length between any two communicating processors . In fact , it has been shown in -LSB- 8 -RSB- that all these parameters can be simultaneously , drastically reduced by reducing the cost function Q. For example , initial chip size can be reduced by 51 % on average while , at the same time , the average execution time is reduced by 36 % . However , these figures are still not the best possible . The use of simulated annealing with slower annealing would produce even better results . But this can be a rather lengthy process . Hence , the proposed parallel SA is a means to achieve better results in acceptable time . 6 Conclusion and future work In this paper we presented a parallel simulated annealing algorithm PSA for solving the problem of mapping parallel algorithms onto processor arrays with regular topology . The algorithm PSA takes an initial mapping and constructs a sequence of joint transformations to eventually produce an optimized mapping . Each joint transformation is a set of elementary transformations that can be applied in parallel to a given configuration . Hence , algorithm PSA is a member of the class of \ error '' parallel SA algorithms . Moreover , these elementary transformations are independent in the sense that they change independent parts of a given configuration . Hence , the erroneous assumption that there are no other simultaneously performed elementary transformations has no impact on computing the total cost variation of a joint transformation . Since there is o error caused by this assumption , our PSA algorithm can be termed \ zero-error '' parallel simulated annealing algorithm . It is difficult to analytically compare SA with the PSA . Nevertheless , we have shown that at least d jNpj deg -LRB- Gp -RRB- +1 e elementary transformations are tested for acceptance in each sequential step of the PSA algorithm . This figure may as well represent a lower bound of the speedup of the PSA compared to SA giving a solution with a similar value of the cost function . When fine grain parallelism is used one may expect a high degree of parallelism in algorithm PSA since the degree deg -LRB- Gp -RRB- is a small number due to the small number of operands/results of each arithmetical/logical operation and , at the same time , the number jNpj of operations in program graph is high . The future work should concentrate on generalizations of the mapping . For example , the constraint that the congestion of processor arrays equals to one might be relaxed . Also , the existence of global buses might be considered . In this case , the communication between distant processors may be redirected to the bus . Finally , the production and/or run-time failures should be taken into account implying that fault-tolerance should be integrated into the algorithm PSA . References -LSB- 1 -RSB- Lee , C. , Bic , L. : Comparing quenching and slow simulated annealing on the mapping problem . Proc . 3rd Annual Parallel Proc . Symp . -LRB- 1989 -RRB- 671 -LCB- 685 -LSB- 2 -RSB- Bokhari , S.H. : On the mapping problem . IEEE Trans . Comput . C-30 -LRB- 1981 -RRB- 207 -LCB- 214 -LSB- 3 -RSB- Sadayappan , P. , Ercal , F. : Nearest-neighbor mapping of finite element graphs onto processor meshes . IEEE Trans . Comput . C-36 -LRB- 1987 -RRB- 1408 -LCB- 1424 -LSB- 4 -RSB- Fox , G.C. , Furmanski , W. : Load balancing loosely synchronous problems with a neural network . Proc . 3rd Conf . Hypercube Concurrent Computers , and Applications -LRB- 1988 -RRB- 241 -LCB- 278 -LSB- 5 -RSB- Mansour , N. , Fox , G.C. : A hybrid genetic algorithm for task allocation . Proc . Int ' l Conf . Genetic Algorithms -LRB- 1991 -RRB- 466 -LCB- 473 -LSB- 6 -RSB- Robi < = c , B. , Kolbezen , P. , < = Silc , J. : Area optimization of dataflow-graph mappings . Parallel Comput . 18 -LRB- 1992 -RRB- 297 -LCB- 311 -LSB- 7 -RSB- Tovey , C.A. : Simulated simulated annealing . American Journal of Mathematical and Management Sciences 8 -LRB- 1988 -RRB- 389 -LCB- 407 -LSB- 8 -RSB- Robi < = c , B. , < = Silc , J. : High-performance computing on a honeycomb architecture . Lect . Notes Comput . Sc . 734 -LRB- 1993 -RRB- 1 -LCB- 13 -LSB- 9 -RSB- Kirkpatrick , S. , Gelatt Jr. , C.D. , Vecchi , M.P. : Optimization by simulated annealing . Science 220 -LRB- 1983 -RRB- 671 -LCB- 680 -LSB- 10 -RSB- Aarts , E. , de Bond , F. , Habers , E. , van Laarhoven , P. : Parallel implementations of the statical cooling algorithm . Integration 4 -LRB- 1986 -RRB- 209 -LCB- 238 -LSB- 11 -RSB- Darema , F. , Kirkpatrick , S. , Norton , V. : Parallel algorithm for chip placement by simulated annealing . IBM J. Res . Develop . 31 -LRB- 1987 -RRB- 391 -LCB- 402 -LSB- 12 -RSB- Mansour , N. , Fox , G.C. : Parallel physical optimization algorithms for data mapping . Lect . Notes Comput . Sc , 634 -LRB- 1992 -RRB- 91 -LCB- 96 -LSB- 13 -RSB- Boissin , N. , Lutton , J.-L. : A parallel simulated annealing algorithm . Parallel Comput . 19 -LRB- 1993 -RRB- 859 -LCB- 872 -LSB- 14 -RSB- Braschi , B. , Ferreira , A.G. , < = Zerovnik , J. : On the behavior of parallel simulated annealing . In : Parallel Computing 89 , Evans , D.J. , Joubert , G.R. and Peters , F.J. -LRB- Eds -RRB- -LRB- North-Holland , 1990 -RRB- 263 -LCB- 268 -LSB- 15 -RSB- Casotto , A. , Romeo , F. , Sangiovanni-Vincentelli , A.L. : A parallel simulated annealing algorithm for the placement of macro-cells . Proc . IEEE Int ' l Conf . Computer-Aided Design -LRB- 1986 -RRB- 30 -LCB- 33 -LSB- 16 -RSB- Ferreira , A.G. , < = Zerovnik , J. : Bounding the probability of success of stochastic methods for global optimization . Computers Math . Applic . 25:10 & 11 -LRB- 1993 -RRB- 1 -LCB- 8 -LSB- 17 -RSB- Barnes , G.H. , Brown , R.M. , Kato , M. , Kuck , D.J. , Slotnik , D.L. , Stokes , R.A. : The ILLIAC IV computer . IEEE Trans . Comput . C-17 -LRB- 1968 -RRB- 746 -LCB- 757 -LSB- 18 -RSB- Koren , I. , Mendelson , B. , Peled , I. , Silberman , G.M. : A data-driven VLSI array for arbitrary algorithms . IEEE Computer 21:10 -LRB- 1988 -RRB- 30 -LCB- 43 -LSB- 19 -RSB- Jordan , H. : A special purpose architecture for finite element analysis . Proc . Int ' l Conf . Parallel Processing -LRB- 1978 -RRB- 263 -LCB- 266 -LSB- 20 -RSB- Takahashi , N. , Amamiya , M. : A data flow processor array system : design and analysis . Proc . 10th Annual Symp . Computer Architecture -LRB- 1983 -RRB- 243 -LCB- 250 -LSB- 21 -RSB- Robi < = c , B. : Optimization of parallel algorithm mappings onto regular processor arrays . PhD Thesis -LRB- University of Ljubljana , 1993 -RRB-

B I O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O

algorithm mapping
optimization
parallel simulated annealing