Both sides previous revision
Previous revision
Next revision

Previous revision
Next revision
Both sides next revision

start [2014/12/11 19:30] yun [Tutorial / Examples] 
start [2018/02/08 14:08] prerana [Introduction] 
====== Introduction ======  ====== Introduction ====== 
 
AlphaZ is an open source toolset 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 toolset for program analysis, transformation and parallelization in the Polyhedral Equational Model. It is being developed by the Mélange group ([[melange:schedule:spring2018See 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 / 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 how to use external functions [[Tutorial External Function]].\\  Tutorial on how to use external functions [[Tutorial External Function]].\\ 
 
The //**polyhedral model**// is a framework for analysis and transformations of programs, extensively used for highlevel 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 socalled //affine// computations). However, such programs are very widespread, and constitute the compute and dataintensive kernels in most applications.  The //**polyhedral model**// is a framework for analysis and transformations of programs, extensively used for highlevel 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 socalled //affine// computations). However, such programs are very widespread, and constitute the compute and dataintensive kernels in most applications. 
 