194 lines
8.7 KiB
Plaintext
194 lines
8.7 KiB
Plaintext
|
|
This is the code for the Omega Test. The interface for sage consists
|
|
in the file sagedriver.c and the include file lang-interf.h.
|
|
This is a preliminary interface, It does not use yet all the capabilities
|
|
of the omega test. More should follow.
|
|
|
|
Foloowing the original README for the tiny/omega test distribution.
|
|
|
|
********************************************************************
|
|
README file for omega/tiny distribution
|
|
README,v 1.1 1993/09/17 22:13:45 fbodin Exp
|
|
********************************************************************
|
|
|
|
|
|
|
|
This is the readme file for version 3.0.0 of the distribution of the Omega
|
|
test, which is available via anonymous ftp from ftp.cs.umd.edu (128.8.128.8)
|
|
in the directory pub/omega.
|
|
|
|
This release consists of three components:
|
|
|
|
* The Omega test: A system for performing symbolic
|
|
manipulations of conjunctions of linear constraints
|
|
over integer variables. In particular, the operations
|
|
supported include:
|
|
* Checking if integer solutions exist
|
|
|
|
* Eliminating an existential quantifier. For example,
|
|
we can transform
|
|
{ Exists b s.t. 0 <= a <= 5; b < a <= 5b}
|
|
to
|
|
{ 2 <= a <= 5}
|
|
|
|
* Checking to see if one set of constraints implies
|
|
another. For example, we can check to see if:
|
|
|
|
{0 <= x <= 3; -3 <= 2y <= 3} => {0 <= x+y, x-y <= 3}
|
|
|
|
The interface to the Omega test is described
|
|
in the file doc/omega_interface.tex
|
|
|
|
* The Omega test dependence analyzer: A system built on top
|
|
of the Omega test to analyze array data dependences. This
|
|
system builds the appropriate problems and makes the appropriate
|
|
queries of the Omega test to analyze array-based data dependences
|
|
in programs. The analyzer computes data difference/direction
|
|
vectors, recognizes reduction dependences, analyzes array kills
|
|
(which enables array expansion and array privatization),
|
|
and determines when assertions can be used to eliminate dependences.
|
|
|
|
We have attempted to define an interface that allows other users
|
|
to make use of the Omega test dependence analyzer. This interface
|
|
is described in include/lang-interf.generic and Lang-Interf3.0
|
|
(keep in touch if you plan to use this interface; we are continuing
|
|
to refine it).
|
|
|
|
* Extended tiny. We have extended Michael Wolfe's tiny tool. The
|
|
major extensions are:
|
|
|
|
* Improved user interface (scrolling, dependence browsing
|
|
windows)
|
|
|
|
* Capabilities that improve the accuracy of data dependence
|
|
analysis (induction variable recognition, forward
|
|
substitution).
|
|
|
|
* Features that demonstrate the additional information we
|
|
collect (scalar/array expansion and privatization,
|
|
interactive dependence zapping)
|
|
|
|
* An semi-automatic procedure for converting FORTRAN programs
|
|
into tiny
|
|
|
|
* A prototype implementation of a unified framework
|
|
for reordering transformations. The framework
|
|
unifies loop interchange, skewing, distribution,
|
|
fusion, reversal, statement reordering, and some
|
|
cases of access normalization, loop alignment, loop
|
|
peeling and index set splitting.
|
|
|
|
The Omega test is implemented on top of the December 1990 version of
|
|
Michael Wolfe's tiny program, as well as in a stand-alone test driver.
|
|
The Omega test computes exact data dependence information, including checks
|
|
for array kills. The Omega test data dependence analyzer is substantially
|
|
more accurate than dependence analyzers in many existing research
|
|
and commercial systems.
|
|
|
|
Tiny is a research implementation of an interactive program
|
|
restructuring tool. Tiny computes data dependence relations
|
|
and interactively performs many restructuring transformations, such
|
|
as loop interchanging, distribution, skewing, ... . Michael Wolfe
|
|
has put his tiny tool into the public domain, which allowed
|
|
us to build on top of his software. We are very grateful for Michael's
|
|
contributions.
|
|
|
|
This implementation is a research prototype and has not been subjected
|
|
to rigorous testing. In other words:
|
|
|
|
THERE ARE BUGS IN THIS SOFTWARE
|
|
|
|
We don't know of any at the moment (other that the ones listed
|
|
under KNOWN BUGS/LIMITATIONS below), but we are sure that other,
|
|
undiscovered bugs remain in the software. This software has been
|
|
put into the public domain as a public service on an "as-is"
|
|
basis, without warranty or liability.
|
|
|
|
Since this version incorporates a large number of major new features,
|
|
there will almost certain be bug fixes that will be shortly released as
|
|
version 3.0.1.
|
|
|
|
If you register with us as someone who has a copy of the Omega test,
|
|
we will send you update notices. Send email to omega@cs.umd.edu to
|
|
be added to the list of registered users.
|
|
|
|
We are committed to continued distribution and support of the Omega
|
|
test for other researchers, and a number of research groups are already
|
|
incorporating the Omega test into their compilers and programming
|
|
environments. We welcome any additional researchers. Please stay
|
|
in contact with us if you plan to make serious us of the Omega test so
|
|
that we can provide you with updates and get feedback from your use.
|
|
|
|
|
|
The implementation of the Omega test and extensions to tiny have
|
|
been done by a number of people at the University of Maryland:
|
|
William Pugh
|
|
Dave Wonnacott
|
|
Udayan Borkar
|
|
Wayne Kelly
|
|
Jerry Sobieski
|
|
Vadim Maslov
|
|
|
|
This software is public domain, and no legal restrictions of any
|
|
kind whatsoever are placed on uses of it). You may do whatever you want
|
|
with it, and no guarantees of any kind are made about its performance or
|
|
lack of errors. You can copy it, use it, incorporate it or even sell it.
|
|
We request that any research or products that make use of this software
|
|
acknowledge that use and that you keep us informed of your use.
|
|
|
|
Please send mail to omega@cs.umd.edu if you wish to be added to a mailing
|
|
list for people interesting in using this software. We will notify
|
|
people on the mail list of bug fixes and new releases.
|
|
|
|
Also send mail to omega@cs.umd.edu if you have any trouble installing
|
|
the software, bug reports or questions.
|
|
|
|
Our work on this software has been supported by NSF grants CCR-8908900 and
|
|
CCR-9157384 and by a Packard Fellowship, as well as being based on
|
|
Michael Wolfe's original implementation of tiny.
|
|
|
|
|
|
FILES
|
|
-----
|
|
The following tar files can be ftp-ed from ftp.cs.umd.edu (128.8.128.8)
|
|
from the directory pub/omega:
|
|
|
|
|
|
* README This file
|
|
* WOLFE_README The readme file that originally accompanied Michael Wolfe's
|
|
distributing of tiny
|
|
* src.tar.Z Source for the omega test and our enhanced version of tiny
|
|
* sparc_demo.tar.Z Sun Sparc executable versions of the programs that can be
|
|
made from the src files, demo files, and documentation of
|
|
of how to use our extended version of tiny.
|
|
* dec3100_demo.tar.Z Decstations 3100 executable versions of the programs that
|
|
can be made from the src files. demo files, and documentation of
|
|
of how to use our extended version of tiny.
|
|
* demo.tar.Z Test files for demos
|
|
* rt.tar.Z Regression test files
|
|
* doc.tar.Z Documentation
|
|
* techReports A directory containing postscript and dvi copies of
|
|
relevant tech reports.
|
|
|
|
Together, these tar files constitute the entire tiny system, with the
|
|
following directories:
|
|
|
|
* include header files (from src.tar.Z)
|
|
* src source code (from src.tar.Z)
|
|
* obj makefile (from src.tar.Z), generated files (from sparc_bin.tar)
|
|
* doc documentation for tiny and for other drivers for the omega test
|
|
* demo sample files documented to show features of the Omega test and
|
|
extended tiny
|
|
* f2t A FORTRAN to tiny converter based on f2c
|
|
* rt regression test sample files and expected results
|
|
* misc shell scripts used for regression testing (rt.tar and src.tar)
|
|
|
|
The executable programs are:
|
|
|
|
* "t" the tiny environment, upgraded to use the omega test and
|
|
test for refinement, killing, and covering of dependences
|
|
|
|
* "f2t" A FORTRAN to tiny converter based on f2c
|
|
|
|
|