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.

Tutorial on how to use external functions [[Tutorial External Function]].\\

Tutorial on Check Program [[Check Program]].\\

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 write program with subsystem [[Tutorial SubSystem]]. \\

{{^ [[Calculator]].}}\\

{{^ [[Calculator]].}}\\

Examples of how to use [[Normalize]].\\

Examples of how to use [[Normalize]].\\

Line 74:

Line 76:

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 83:

Line 85:

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.