This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
start [2014/07/07 11:50] yun [Tutorial / Examples] |
start [2018/10/23 09:23] sanjay [Installing AlphaZ and Getting Started] |
||
---|---|---|---|
Line 5: | Line 5: | ||
====== Introduction ====== | ====== Introduction ====== | ||
- | AlphaZ is an open source tool-set for program analysis, transformation and parallelization in the Polyhedral Equational Model. It is being developed by the Mélange group at CSU, and uses an equational language called Alpha/Alphabets. | + | AlphaZ is an open source tool-set for program analysis, transformation and parallelization in the Polyhedral Equational Model. It is being developed by the Mélange group ([[melange:schedule:spring2018|See schedule]]) at CSU, and uses an equational language called Alpha/Alphabets. |
AlphaZ is a general framework for analysis, transformation and code generation in the Polyhedral Equational Model. The input "program" consists of one or more mathematical equations that specify just //**what**// needs to be computed. It can be viewed as a specification. In order to produce a (conventional/imperative) program that //implements// this specification, one needs to specify a schedule (when), a processor allocation (who), and a memory allocation (where to store). Actually, even this is not strictly necessary. We also have a "memoized demand driven" code generator that produces executable code in the absence of any schedule or memory/processor allocation information. | AlphaZ is a general framework for analysis, transformation and code generation in the Polyhedral Equational Model. The input "program" consists of one or more mathematical equations that specify just //**what**// needs to be computed. It can be viewed as a specification. In order to produce a (conventional/imperative) program that //implements// this specification, one needs to specify a schedule (when), a processor allocation (who), and a memory allocation (where to store). Actually, even this is not strictly necessary. We also have a "memoized demand driven" code generator that produces executable code in the absence of any schedule or memory/processor allocation information. | ||
Line 21: | Line 21: | ||
====== Installing AlphaZ and Getting Started ====== | ====== Installing AlphaZ and Getting Started ====== | ||
- | Instruction to setup AlphaZ for CS department accounts, and to install in an external machine is available in a separate page.\\ | + | Instruction to setup AlphaZ for CS department accounts, and to on an external machine are available in a separate page. |
Operating systems other than MacOSX and Linux are not supported at this time.\\ | Operating systems other than MacOSX and Linux are not supported at this time.\\ | ||
- | Support for 32bit Linux is limited, since we have very little access to 32bit machines.\\ | + | Support for 32bit Linux is limited, since we have very little access to 32bit machines. |
- | [[Eclipse Setup]] | + | |
+ | To use AlphaZ on the CS department machines, follow the [[Eclipse Setup]] | ||
Source for AlphaZ are available in our repository, but our system depends on Eclipse and plug-ins developed for Eclipse Modeling Framework as well. We also use a large number of plug-ins from CAIRN team at IRISA, Rennes. The repository structure of CSU and IRISA is outlined in this page : [[Source Access]]. However, it is not a complete list, and we recommend users to download the bundle and then checkout projects corresponding to where you would like to make changes. | Source for AlphaZ are available in our repository, but our system depends on Eclipse and plug-ins developed for Eclipse Modeling Framework as well. We also use a large number of plug-ins from CAIRN team at IRISA, Rennes. The repository structure of CSU and IRISA is outlined in this page : [[Source Access]]. However, it is not a complete list, and we recommend users to download the bundle and then checkout projects corresponding to where you would like to make changes. | ||
Line 64: | Line 66: | ||
====== Tutorial / Examples ===== | ====== Tutorial / Examples ===== | ||
- | List of Commands http://www.cs.colostate.edu/AlphaZ/AlphaZCommandRefV2.pdf\\ | + | List of Commands http://www.cs.colostate.edu/AlphaZ/AlphaZCommandRef.pdf\\ |
Tutorial using LU decomposition [[Tutorial LUD]].\\ | Tutorial using LU decomposition [[Tutorial LUD]].\\ | ||
+ | Tutorial on Check Program [[Check Program]].\\ | ||
+ | Example of how to use [[Schedule Code Generator]].\\ | ||
Tutorial on how to use external functions [[Tutorial External Function]].\\ | Tutorial on how to use external functions [[Tutorial External Function]].\\ | ||
Tutorial on how to write program with subsystem [[Tutorial SubSystem]]. \\ | Tutorial on how to write program with subsystem [[Tutorial SubSystem]]. \\ | ||
- | Tutorial on Check Program [[Check Program]].\\ | ||
{{^ [[Calculator]].}}\\ | {{^ [[Calculator]].}}\\ | ||
Examples of how to use [[Normalize]].\\ | Examples of how to use [[Normalize]].\\ | ||
Line 75: | Line 78: | ||
Example of how to use [[Schedulers]].\\ | Example of how to use [[Schedulers]].\\ | ||
{{^ [[Verifier]].}}\\ | {{^ [[Verifier]].}}\\ | ||
- | Example of how to use [[Schedule Code Generator]].\\ | ||
List of [[Code Gen Options]].\\ | List of [[Code Gen Options]].\\ | ||
- | Example of how to use [[Schedule Code Generator for code with SubSystem]].\\ | + | Examples of how to use [[Schedule Code Generator for code with SubSystem]].\\ |
+ | Examples of how to use [[Tiled Code Generator (DTiler)]].\\ | ||
Tutorial on transformations of reductions [[Reduction Tutorial]].\\ | Tutorial on transformations of reductions [[Reduction Tutorial]].\\ | ||
How to run compiler scripts from terminal. [[Command Line AlphaZ]] | How to run compiler scripts from terminal. [[Command Line AlphaZ]] | ||
Line 84: | Line 87: | ||
The //**polyhedral model**// is a framework for analysis and transformations of programs, extensively used for high-level loop optimizations in compilers today. The //polyhedral **equational** model// has the same goals, but focuses on equational/functional programming. The model provides the ability to reason mathematically about programs, their dependences, and semantics. This has lead to a number of very powerful tools for automatic parallelization. By design, the model is applicable to a limited class of programs: dense, regular, computations (the so-called //affine// computations). However, such programs are very widespread, and constitute the compute- and data-intensive kernels in most applications. | The //**polyhedral model**// is a framework for analysis and transformations of programs, extensively used for high-level loop optimizations in compilers today. The //polyhedral **equational** model// has the same goals, but focuses on equational/functional programming. The model provides the ability to reason mathematically about programs, their dependences, and semantics. This has lead to a number of very powerful tools for automatic parallelization. By design, the model is applicable to a limited class of programs: dense, regular, computations (the so-called //affine// computations). However, such programs are very widespread, and constitute the compute- and data-intensive kernels in most applications. | ||
+ |