home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / compiler / 2020 < prev    next >
Encoding:
Text File  |  1992-12-12  |  9.7 KB  |  222 lines

  1. Newsgroups: comp.compilers
  2. Path: sparky!uunet!think.com!spdcc!iecc!compilers-sender
  3. From: pugh@cs.umd.edu (Bill Pugh)
  4. Subject: Release of v 3.0.0 of Omega test / Extended Tiny
  5. Reply-To: pugh@cs.umd.edu (Bill Pugh)
  6. Organization: U of Maryland, Dept. of Computer Science, Coll. Pk., MD 20742
  7. Date: Sat, 12 Dec 1992 20:57:45 GMT
  8. Approved: compilers@iecc.cambridge.ma.us
  9. Message-ID: <92-12-052@comp.compilers>
  10. Keywords: tools, optimize, FTP
  11. Sender: compilers-sender@iecc.cambridge.ma.us
  12. Lines: 208
  13.  
  14. Version 3.0.0 of our implementation of the Omega test is now available for
  15. anonymous ftp from ftp.cs.umd.edu:pub/omega.  The Omega test is
  16. implemented in an extended version of Michael Wolfe's tiny tool, a
  17. research/educational tool for examining array data dependence algorithms
  18. and program transformations for scientific computations.
  19.  
  20. New features include:
  21.  
  22.     Array & scalar expansion and privatization
  23.  
  24.     Reduction dependences
  25.  
  26.     Induction variable recognition
  27.  
  28.     Scalar forward substitution
  29.  
  30.     Storage classes
  31.  
  32.     A prototype partial implementation of a unified framework
  33.     for reordering transformations. This framework reorders
  34.     reordering transformations such as loop interchange, loop
  35.     skewing, loop distribution, loop fusion and statement reordering.
  36.     This framework can be used to optimize code fragments for 
  37.     parallelism and/or locality.
  38.  
  39.     A FORTRAN to tiny translator (f2t) based on f2c
  40.  
  41.  
  42. Features from version 2.1:
  43.  
  44.     Exact dependence analysis algorithms. 
  45.  
  46.     Array kill analysis (determining when intermediate writes kill
  47.     a dependence). Array kill analysis is required in order to
  48.     perform array privatization or expansion.
  49.  
  50.     Analysis of when "interesting" assertions can eliminate a dependence
  51.     (a dependence is uninteresting if it is false only when the loop that
  52.     carries the dependence executes less than 2 iterations).
  53.  
  54. This code is freely available for research or commercial use. The extended
  55. version of tiny can be used as a educational or research tool.  Several
  56. research groups are incorporating the Omega test dependence analyzer into
  57. their compilers/programming environments, include groups at University of
  58. Illinois, Urbana-Champaign and at Georgia Tech. Anyone interested in doing
  59. this is strongly urged to stay in contact with us (at omega@cs.umd.edu) as
  60. we are continuing to update and improve the interface that allows external
  61. users to hook into our data dependence analyze.
  62.  
  63.  
  64. This release consists of three components:
  65.  
  66.      *    The Omega test: A system for performing symbolic
  67.     manipulations of conjunctions of linear constraints
  68.     over integer variables. In particular, the operations
  69.     supported include:
  70.         * Checking if integer solutions exist
  71.  
  72.         * Eliminating an existential quantifier. For example,
  73.           we can transform 
  74.             { Exists b s.t. 0 <= a <= 5; b < a <= 5b}
  75.           to
  76.             { 2 <= a <= 5}
  77.  
  78.         * Checking to see if one set of constraints implies
  79.           another. For example, we can check to see if:
  80.         
  81.                    {0 <= x <= 3; -3 <= 2y <= 3} => {0 <= x+y, x-y <= 3}  
  82.  
  83.         The interface to the Omega test is described
  84.         in the file doc/omega_interface.tex
  85.  
  86.      *    The Omega test dependence analyzer: A system built on top
  87.     of the Omega test to analyze array data dependences. This
  88.     system builds the appropriate problems and makes the appropriate
  89.     queries of the Omega test to analyze array-based data dependences
  90.     in programs. The analyzer computes data difference/direction
  91.     vectors, recognizes reduction dependences, analyzes array kills
  92.     (which enables array expansion and array privatization), 
  93.     and determines when assertions can be used to eliminate dependences.
  94.  
  95.     We have attempted to define an interface that allows other users
  96.         to make use of the Omega test dependence analyzer. This interface
  97.         is described in include/lang-interf.generic and Lang-Interf3.0 
  98.         (keep in touch if you plan to use this interface; we are continuing 
  99.         to refine it).
  100.  
  101.      *  Extended tiny. We have extended Michael Wolfe's tiny tool. The
  102.     major extensions are:
  103.     
  104.         * Improved user interface (scrolling, dependence browsing
  105.           windows)
  106.  
  107.         * Capabilities that improve the accuracy of data dependence
  108.           analysis (induction variable recognition, forward
  109.           substitution).
  110.  
  111.         * Features that demonstrate the additional information we
  112.           collect (scalar/array expansion and privatization,
  113.           interactive dependence zapping)
  114.  
  115.         * A semi-automatic procedure for converting FORTRAN programs
  116.           into tiny
  117.  
  118.         * A prototype implementation of a unified framework
  119.           for reordering transformations. The framework 
  120.           unifies loop interchange, skewing, distribution,
  121.           fusion, reversal, statement reordering, and some
  122.           cases of access normalization, loop alignment, loop
  123.           peeling and index set splitting.
  124.  
  125.  
  126. Also available are copies of several recent technical reports:
  127.  
  128.     William Pugh & David Wonnacott, Eliminating False Data Dependences using 
  129.     the Omega Test, Tech. Report CS-TR-2993, Dept. of Computer Science,
  130.     Univ. of Maryland, College Park (An earlier version of this paper
  131.     appeared at the ACM SIGPLAN PLDI'92 conference).
  132.  
  133.                 Abstract
  134.       Array data dependence analysis methods currently in use generate 
  135.       false dependences that can prevent useful program transformations. 
  136.       These false dependences arise because the questions asked are
  137.       conservative approximations to the questions we really should be 
  138.       asking.  Unfortunately, the questions we really should be asking
  139.       go beyond integer programming and require decision procedures for 
  140.       a subclass of Presburger formulas.  In this paper, we describe how 
  141.       to extend the Omega test so that it can answer these queries and 
  142.       allow us to eliminate these false data dependences. We have 
  143.       implemented the techniques described here and believe they are 
  144.       suitable for use in production compilers.
  145.  
  146.  
  147.     William Pugh, The Definition of Dependence Distance, Tech. 
  148.     Report CS-TR-2992, Dept. of Computer Science, Univ. of 
  149.     Maryland, College Park
  150.  
  151.                 Abstract
  152.       Data dependence distance is widely used to characterize data 
  153.       dependences in advanced optimizing compilers.  The standard 
  154.       definition of dependence distance assumes that loops are normalized 
  155.       (have constant lower bounds and a step of 1); there is not a 
  156.       commonly accepted definition for unnormalized loops.
  157.       
  158.       There are a number of subtleties involved in the definition of 
  159.       dependence distance for unnormalized loops.  In particular, a number 
  160.       of compilers and programming environments seem to be implicitly using
  161.       a definition that can result in non-integral dependence distances.
  162.       Since non-integral distances were not anticipated, the compilers 
  163.       decide that such dependences do not exist. This results in the 
  164.       compiler failing to recognize the existence of a dependence that 
  165.       actually exists, which allows the compiler to make illegal program 
  166.       transformations. This error existed in Parafrase-2, Parascope, and 
  167.       the KAP compiler (this error has been reported and may be corrected 
  168.       in these systems by now).
  169.      
  170.  
  171.     William Pugh and Dave Wonnacott, Static Analysis of Upper Bounds 
  172.         on Parallelism, Tech Report CS-TR-2994, Dept. of Computer 
  173.     Science, Univ. of Maryland, College Park
  174.  
  175.                 Abstract
  176.       Substantial parallelism exists in all of the Perfect Benchmarks 
  177.       codes, although existing automatic techniques are able to find it
  178.       in only a few cases.  Exposing much of this parallelism required a 
  179.       careful, manual examination of all the dependences which appeared to 
  180.       prevent parallelism, and the development and manual application of 
  181.       new program transformations that have not yet been automated.
  182.  
  183.       We describe methods for statically analyzing the program to
  184.       determine which code segments must either be run sequentially or
  185.       rewritten using a new algorithm, and which might contain parallelism
  186.       that automatic techniques are unable to expose. We can also provide
  187.       some feedback about the kinds of additional, possibly manual, 
  188.       analysis or transformations that may be required to expose the 
  189.       parallelism.
  190.  
  191.       In order to determine upper bounds on parallelism, we describe
  192.       methods for computing exact data dependence information, incorporating
  193.       information about array kills and conditional dependences.  In cases 
  194.       involving non-linear references, our information is inexact but we 
  195.       calculate upper and lower bounds on the true dependences.  Since 
  196.       we do not have to compute this more exact information for every array 
  197.       reference pair in a program, but those for which an apparent 
  198.       dependence threatens our ability to run part of the program in 
  199.       parallel, the increased cost of performing this analysis should not 
  200.       be prohibitive.
  201.  
  202.  
  203.     Wayne Kelly and William Pugh, Generating Schedules and Code within a
  204.         Unified Reordering Transformation Framework, Tech
  205.     Report CS-TR-2995, Dept. of Computer Science, Univ. of 
  206.     Maryland, College Park
  207.  
  208.                 Abstract
  209.       We discuss using schedules as a framework for unifying reordering 
  210.       transformations such as loop interchange, loop skewing, loop 
  211.       distribution and loop alignment. This framework subsumes unimodular 
  212.       loop transformations. We describe algorithms to align schedules
  213.       and to produce the transformed code.
  214.  
  215.       This framework is capable of handling more complex schedules than we 
  216.       currently generate, such as schedules that describe loop blocking and 
  217.       interleaving. We are able to check the validity of these schedules 
  218.       and produce appropriate transformed code.
  219. -- 
  220. Send compilers articles to compilers@iecc.cambridge.ma.us or
  221. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  222.