POET stands for Parameterized Optimizations for Empirical Tuning, or Programmable Optimizations for Empirical tuning. Consider it a scripting language for building small-scale optimizing compilers. The language implementation is open-source. Find the most recent releases at the Downloads section.

POET has been used to support a large number of compiler optimizations, including loop interchange, parallelization, blocking, fusion/ fission, strength reduction, scalar replacement, SSE vectorization, among others, and to fully support the code generation of several domain-specific languages, including automatic tester/timer generation, and automatically translating a finite-statemachine- based behavior modeling language to C++/Java code.
For more information on POET, refer Documents or Publications sections.
History
The POET language was designed and implemented by Qing Yi at the University of Texas at San Antonio in Mar, 2007 before she moved to Unversity of Colorado at Colorado Springs in 2012.
POET Transformation Engine

POET is an interpreted language designed for applying advanced program transformations to code in arbitrary languages as well as quickly building ad-hoc source-to-source translators between these languages. It has been used to support the transformation needs of both popular programming languages such as C/C++, Java, FORTRAN, and several domain-specific languages that we have designed on the fly for various purposes. Figure shows the structure of a typical POET transformation engine, which is essentially a POET language interpreter coupled with a set of transformation libraries and language syntax descriptions. The transformation libraries include predefined POET routines which can be invoked to apply a large number of compiler optimizations such as loop interchange, parallelization, fusion, blocking, unrolling, array copying, scalar replacement, among others. The language syntax specifications, on the other hand, are used by the POET interpreter to dynamically parse input code in a variety of different programming languages. The developer needs to write a POET script to specify which input files to parse using which syntax descriptions, what transformations to apply to the input code after parsing, and which syntax to use to unparse the transformation result. The POET script can be extensively parameterized and reconfigured via command-line options when invoking the transformation engine.