|
Compiler optimization technology |
||
|
While we do offer some end-user products, our primary business is providing versions of our VAST high-level optimization product (parallelizing, vectorizing, and/or optimizing compiler components) to developers of compiler systems targeting high-speed architectures, whether embedded processors, reconfigurable systems, desktop boxes or supercomputers. How does VAST interface with the Compiler?VAST operates on compiler intermediate representations of the program (such as Edison Design Group IR) or directly on source code (through a compiler driver) to perform high-level optimizations, including loop nest optimizations and automatic vectorization and parallelization. For example in a compiler system that used the EDG front end, VAST runs as a high-level optimization pass after the front end has parsed the program and before the back end generates code for the particular target system; VAST operates on the input EDG IR and generates restructured EDG IR where necessary to speed up the program.What if I don't use EDG?For compilers using other intermediate representations, VAST is customized to take in that IR and regenerate its transformations in that IR. VAST is generally customized to fit in with the specific programming methodology, programming tools, and architectural details of the target system.What can VAST do?VAST can restructure loops, add calls to performance intrinsics, bring external functions inline, and signal to the compiler backend by adding pragmas or marking other data structures. VAST features a large variety of loop optimizations, and has very extensive data dependency analysis, which it uses in its vectorization and parallelization of the code. It can also pass this information on to the rest of the compiler in a variety of ways, ranging from indicating loops that have no array or pointer dependencies to explicitly adding data dependence arcs for all dependencies in a loop nest. (See the menu for a list of VAST's features.) |
||
|
Target Systems |
What types of systems can VAST target?The VAST technology supports many types of systems, including paralel, vector, VLIW, SIMD, superscalar, and others. VAST itself is highly portable, and runs on all popular Unix, Linux and Windows versions. |
|
|
Technology menu |
VAST Optimization ListWe provide a very wide array of possible optimizations, transformations and information, both in off-the-shelf modules and in customized forms, and can operate on either intermediate representation or source language. See the menu for a list of VAST's features. |
|
|
Examples |
Example TransformationsHere are some code examples that show a few of the transformations VAST can add to a compilation system. |
|
| Doing business |
How can we license VAST?We have a "standard" business model, but we've had to deal with so many different kinds of customers and products that in practice we're pretty flexible. We always work closely with our customers to customize and support the products to make sure we get peak performance from the target compiler and architecture. Testing and support are very high priorities for us. |
|
| Contact us |
How do we proceed?Don't hesitate to email or call us to discuss possibilities, even if you're unclear about what we have to offer and/or what you need. We're easy to talk to. |
|
Contact
Legal