VAST auto-parallelization, auto-vectorization tools
We bought the VAST auto parallelization
tool to use with Absoft Fortran on our Dual CPU machine. As
a serial program our code ran quite quickly but we wanted to
leverage both processors. VAST automatically converted our serial
code into code designed for the dual processors. Before VAST
the run time was 18.5 seconds, after VAST it was reduced to
8.1 seconds!!
This was such a dramatic improvement, especially since it did
not require any recoding on our part. Everybody here was elated.
We think that if we install dual core CPUs, i.e., four CPUs
we will be where we dreamed to be in terms of speed.
Dr. Kosta J. Leontaritis
Flow Assurance Advisor
AsphWax, Inc.
Product Overview
VAST is a family of powerful software tools
which can automatically convert serial code into code
designed for dual processors (Windows/Macintosh
and Linux), add OpenMP directives, or vectorize
(G4/G5 Macintosh and PPC/Linux) your code for AltiVec.
Available for both Absoft and IBM compilers. More... |
|
- VAST/AltiVec automatically
translates Fortran, C and C++ to use the AltiVec
vector unit on PowerPC G4- and G5-based systems.
Example
- VAST/Parallel automatically
translates Fortran and C to use multiple processors
via threads parallelism on Linux-based, Windows
and MacOS X systems. A special Lite version
of VAST-F/Parallel is included with Pro FortranMP
for Windows.
|
|
VAST
parallel includes:
-
Full Loop
Nest Analysis. Loops are analyzed in simple and complicated
loop nests; loops containing the largest amount of work
are parallelized. Loops do not have to be tightly nested.
-
Extended Parallel
Regions. VAST/Parallel extends parallel regions to include
multiple parallel loops and intervening scalar code. This
cuts down on parallel overhead.
-
Threshold
testing. All parallel systems have some overhead. When
VAST/Parallel finds a parallel region, if the amount of
work in the region is not clear at compile time, then
VAST/Parallel creates a run-time test. Through this run-time
test, the parallel region will only be executed if there
is enough work; otherwise, the original serial version
is executed.
-
Dependence
Analysis. VAST/Parallel has very sophisticated data dependency
analysis capabilities that allow it to optimize complicated
situations. All loop nests are examined to see if they
can be executed in parallel safely. VAST/Parallel can
resolve ambiguous subscripting by examining variable assignments
outside of loops, and restructure the use of variables
to avoid certain other dependencies.
-
Potential
Dependence Testing. When dependencies are unclear at compile
time, sometimes VAST/Parallel can generate run-time tests
to allow parallelism to proceed.
-
Special Reduction
Optimization. Summations and other reductions are parallelized
through the use of locks or critical regions.
-
Shared/Private
Determination. All variables in a parallel loop are categorized
as shared (seen by all threads) or private (copy in each
thread). VAST/Parallel can detect and create private arrays.
-
Interprocedural
Analysis for Parallel Calls. VAST/Parallel can examine
call chains to determine their dependencies, and then
parallelize loops containing calls or groups of calls
outside loops.
-
Automatic
recognition of parallel cases. When sections of code deal
with disjoint operations, VAST/Parallel can process each
section in a separate parallel case.
-
Superscalar
optimizations. VAST/Parallel includes scalar optimizations
to boost performance even in a single thread. Parallel
optimizations can be done to outer loops while inner loops
are optimized for efficient execution on one thread.
-
Array Syntax.
VAST/Parallel can in general parallelize and optimize
multi-dimensional array syntax just as efficiently as
loop nests.
-
Choice of
static or dynamic partitioning of loop iterations. Load
balancing can tradeoff with loop overhead. Use dynamic
partitioning when you need more load balancing, static
partioning when you are concerned about overhead.
-
Number of
threads can be set with an environment variable. This
allows degree of parallelism to be changed from run to
run. When the system is busy you can run with two threads,
when it is empty you can run with eight threads, without
recompiling your program.
-
Choice of
thread waiting strategy. You can select either busy waiting
or sleep waiting for threads, so that the parallel program
can adapt to loaded or dedicated workloads on the target
system. Use busy waiting on a lightly loaded system, and
sleep waiting when another job might need the cycles.
- A special Lite version of VAST-F/Parallel is included with
Pro FortranMP for Windows.
VAST Vector (AltiVec) features include:
-
Optimization
of entire loop nests, not just inner loops. Critical
optimizations include loop fusion (squeezing multiple
loops into one loop), outer loop unrolling (unrolling
an outer loop inside an inner loop), loop collapse
(making one long loop from a multiple dimension
loop), and loop interchange (changing the order
of the loops in a loop nest to get more efficient
memory access).
-
Unrolled
vector loops. Unrolling vectorized loops is very
important in making sure that the vector instructions
are overlapped the the maximum extent possible.
-
Vectorization
of reduction loops. Includes array summations, dot
products, minimum and maximum element of an array,
product of array elements, etc. These operations
take a large fraction of the CPU time for many programs.
-
Vectorization
of conditional loops. "if" statements and conditional
operators are vectorized.
-
Non-aligned
vectors can be vectorized efficiently. VAST introduces
"permute" operations to align vectors "on the fly"
prior to computation.
-
32-bit
float and 8, 16 and 32-bit integer vectorization.
Integers can be signed and unsigned. Also, VAST
can vectorize loops that contain mixed data sizes.
-
ALIGNED
pragma so that the user can inform VAST-C about
arrays that are aligned on 16-byte boundaries. Also
the -Valigned command line switch.
-
-Vmessages
switch to get vectorization messages for all loops
in the program. Find out what constructs are inhibiting
vectorization of your important loops.
-
DISJOINT,
NODEPCHK pragmas for disambiguating data dependencies.
Especially useful if the target program uses lots
of pointers rather than array notation.
-
-L parameter
for assertion levels to allow vectorization in the
presence of pointer arguments. Can be very useful
if the program is written to pass most of the data
as pointer arguments.
-
Vector
load lifting. Move all loads to the top of the loop,
as far as they will go (safely). Allows the compiler
to do a better job of instruction scheduling.
-
Vectorization
of complex data type. Uses the permute instructions
to reorder interleaved complex data so that it can
be operated on with the vector unit.
-
Testing
for stride one on loops with variable stride. Inserts
a run-time test to see if variable array strides
are all one; executes a vector version of the loop
if the strides are one, otherwise executes the original
scalar loop.
-
Partial
vectorization of loops with strided or gather/scatter
vectors.
-
Vectorization
of "table lookup" loops. Loops that have a branch
out of the loop can be vectorized in certain cases.
VAST is a family of
powerful software tools which can convert serial code into
code designed for dual processors (Windows/Linux
and Macintosh), or vectorize (G4/G5 Macintosh and
PPC/Linux) your code for AltiVec.
All code restructuring can be done automatically at the
click of a mouse. The original source files are retained
in unmodified form.
VAST
products are developed by Crescent Bay Software who is an Absoft partner and the
leading developer of superscalar, auto-parallelization and
auto vectorization tools for workstations and supercomputers.
VAST/Parallel
VAST/Parallel
is a preprocessor that provides automatic parallelization
and superscalar optimization of code for maximum performance.
VAST/Parallel optimizations can provide performance gains
on single or multi-CPU systems. VAST also provides full
support for OpenMP. VAST is available for all Absoft products
for AMD/Intel/Linux (32-bit), AMD Opteron/Linux (64-bit),
PPC/Linux, Macintosh OS X and Windows NT/2000/XP SMP systems.
VAST/Parallel
is the most cost effective way to determine how much your
code benefits from dual processors. There is no need to
spend your time rewriting, debugging and editing code to
test for potential performance gains – just click your mouse.
And best of all, using VAST, you can build highly optimized
versions of your application for different target systems,
all without changing the original source tree. VAST/Parallel
is very easy to use and can be operated from the user IDE on Pro Fortran
for Windows or Macintosh OS X. Just click the mouse and
go. Once created, applications do not need VAST to be present
on the system to run. There is no runtime redistribution
fee for applications created with VAST/Parallel.
VAST/Vector
VAST/Vector
is a preprocessor which automatically restructures code
to take advantage of the AltiVec vector unit built into
the Macintosh G4/G5 processors. VAST/Vector operates in
single precision mode and can provide significant speed
ups in certain types of applications.
VAST/Vector is available for Absoft and IBM compilers. Very
easy to use it can be operated from the Absoft IDE. Pro Fortran
v9.0 allows a single copy of VAST to work with both Absoft
and IBM compilers. Just click the mouse and go. For XL Fortran
users not using the Absoft IDE, a command line verion is
provided. Once created, applications do not need VAST to
be present on the system to run. There is no runtime redistribution
fee for applications created with VAST/Vector
VAST/Vector
is the most cost effective way to see how much your code
benefits from vectorization. There is no need to spend your
time re writing, debugging and editing code to test for
potential performance gains – just click your mouse. And
best of all, using VAST, you can build highly optimized
AltiVec versions of your application without changing the
original source tree.
VAST is now compatible with
XL Fortran and XL C/C++ as well as Absoft Fortran. Users
of Pro Fortran v9.0 need only a single copy of VAST which
will work with both XL Fortran and Absoft Fortran, which
saves money and increases efficiency.
VAST/Parallel works very
closely with the DEEP development environment to provide a complete GUI
interface to the world of data parallel programming. VAST/Parallel
gathers compile-time data for DEEP, and inserts instrumentation
code for run-time data gathering. DEEP uses this information
to display in detail the compile-time optimization notes
(which loop nests have been parallelized, where data dependencies
are preventing parallelization, etc.) and run-time performance
data (which loop nests use the most wallclock time, which
procedures are called the most, etc.) in many useful views
of the program. With DEEP, you can very quickly zoom in
on any performance bottlenecks in your code.
Performance Gains on a
Single CPU system:
VAST/Parallel's superscalar optimization technology can
enhance the performance of certain types of code on standard,
single CPU systems. If your programs spend large amounts
of time in nested loops or operating on large arrays, a
performance improvement of over 35% may be possible. On
other types of code, VAST/Parallel may have little impact.

Performance Gains on Dual
CPU System:
VAST/Parallel can automatically parallelize your code and
also provides full OpenMP support to enable user-directed
parallelization. VAST/Parallel contains sophisticated data
dependency analysis technology to detect when optimized
execution will be safe, has very advanced in-lining capabilities,
and uses interprocedural analysis to optimize across procedure
boundaries.

VAST/Parallel fully supports the OpenMP standard.
For calculations where you know exactly what you want parallelized,
OpenMp provides a portable way to specify this. VAST/Parallel
supports all OpenMP directives/pragmas and functions, and
provides diagnostics on incorrect use of the directives.
Features include:
The
driver(s) that comes with VAST Vector (AltiVec) combines VAST
and the compiler(s) in a transparent way, so that (for example)
compilation can be as easy as replacing gcc with vcc or f90
with v90 in your makefiles.
There
are several ways to use VAST. If your program spends most of its
time in clean loops, then VAST may be able to vectorize your program
automatically. Often with C programs, depending on the programming
style they are written it, a potential "data dependency" between
pointers and arrays may prevent some vectorization, and some simple
assertions from the user can improve the amount of vectorization.
VAST can provide messages that help you understand what parts
of your program have been successfully optimized and what parts
have not been optimized.
Advanced users may choose to write clean loops for
new applications and have VAST automatically generate AltiVec
code, rather than doing AltiVec coding by hand. Very advanced
users may wish to modify the VAST intermediate C code and change
the order or nature of vector operations that VAST generates.
September 15 2003
- Electronic Delivery full Media Documentation
September 31 2003
Product name: VAST-F/Parallel, VAST-F/Vector and
VAST-C/Vector
Product availability:
VAST-F/Parallel available for Windows, Macintosh OS X, 32-bit
IA32 and PowerPC Linux and 64-bit AMD64/Linux
VAST-F/Vector
available for Macintosh OS X and PowerPC Linux
VAST-C/Vector
available for XL C/C++ for Macintosh OS X
Pricing: See Price
section
Orders: Contact sales
Agreement: Absoft Software
License Agreement.
Limited warranty applies: Yes
Warranty: Absoft and its Licensors warrant that the media
on which the software is supplied shall be free of defects in
materials and workmanship under normal use for a period of 90
days from the date of purchase. For additional warranty information,
see the Absoft Software
License Agreement.
Introductory Software Maintenance applies: From date of
purchase until version is no longer current; charges may apply
afterwards.
Absoft branded products
include Premier Technical Support and Initial Software Maintenance
at no additional charge from the time of purchase for as long
as the purchased version remains the current release version.
Premier Technical Support
Premier Technical Support
includes free technical assistance for routine, short duration
installation and usage (how-to) questions, limited code-related
questions, access to the Absoft user forum and FAQ's and access
to friendly technical support engineers via fax, email or telephone
during normal support hours.
Premier Technical Support is at no charge is as long as the
purchased product version is current or the customer is still
under Initial or Continuing Software Maintenance.
Initial Software Maintenance (ISM)
Initial Software Maintenance
includes free electronic downloads of all interim Service Packs
and Quick Fixes from Absoft. Version upgrades require separate
purchase but at discounted prices.
Continuing Software Maintenance
(CSM)
At the conclusion of the
Initial Software Maintenance term (i.e. when a new version of
the purchased product is released) customers may either purchase
a Product Upgrade or within 30 days of the new product release,
purchase Continuing Software Maintenance (CSM) for an additional
12 month maintenance term. Continuing Software Maintenance includes
all elements of Premier Technical support plus all Product Upgrades
issued during the 12 month Continuing Software Maintenance term.
Annual renewals of Software Maintenance will be made available
at low-cost to customers who renew within their unexpired Maintenance
term.
For users electing not to
renew Continuing Software Maintenance and having expired maintenance
terms but later wishing to rejoin CSM, Reinstatement Software
Maintenance (RSM) terms may be purchased.
Third party products distributed
by Absoft are subject to license terms and policies of their
respective manufacturers.
Please contact Absoft directly
for further details or questions on Technical Support or Software
Maintenance.
Disclaimer:
Premier Technical Support cannot be used as a tutorial to assist
in the design and development of applications, use of programs
in other than their specified operating environment, provide
instructions on general system operation or explore failures
caused by products for which Absoft is not responsible under
this agreement.
MaxFlex· Flexible Licensing
available: No
Floating Network Licenses
available: No
Copy and use on home/portable
computer: No
Volume orders: Yes.
Contact Absoft sales
directly.
Please review the specific
system requirements for Pro
Fortran for Windows v9.0, Pro
Fortran for OS X v9.2, Fortran
95 for Linux v10.0, Fortran
95 for Linux v9.0, Fortran
95 for Linux on POWER / PowerPC, XL
Fortran, XL
C/C++ products compatible with VAST.
No evaluation copy is available
at this time.
| Compatibility and Companion Products |
Additional third party products can be found on
Fortran resources.
Full technical support
from friendly technicians is included at no additional charge
with each new product from Absoft. To ensure your software continues
running at maximum efficiency, all registered Absoft customers
can download service
packs and quick fixes at no charge. Customers and partners
can subscribe
to Absoft's free electronic mailing list to receive electronic
bulletins and update notices advising of new updates, changes
in product releases, new product announcements, and other news.
- Fx2™
Debugging Solution™
- Fx
Fortran Debugger
| Additional Information / Notices |
None
| Academic Pricing for VAST |
VAST
for Fortran 95 for 32-bit Linux
VAST
for Fortran 95 for 64-bit Linux
VAST
for Fortran Compiler for PowerPC Linux
VAST
for Pro Fortran for Windows
VAST
for Pro Fortran for OS X
VAST
for XL Fortran for OS X
VAST
for XL C/C++ for OS X
Single User Licenses (Academic Pricing for Fortran 95 for 32-bit Linux)
| Product |
Current
Version |
Part Number |
Price |
Order |
Fortran 95
Compiler Suite |
9.0 |
F95L1ESS90 |
$675.00 |
Buy now |
|
VAST-F/Parallel* |
7.0 |
VPFL1CSS70 |
$500.00* |
Buy now |
*
VAST-F bundled price. VAST-F unbundled price requires additional
charge.
Single User Licenses (Academic Pricing for
Fortran 95
for 64-bit Linux)
| Product |
Current
Version |
Part Number |
Price |
Order |
|
Fortran 95 |
9.0 |
F95L2ESS90 |
$675.00 |
Buy now |
|
VAST-F/Parallel |
7.0 |
VPFL2CSS70 |
$500.00 |
Buy now |
*
VAST-F bundled price. VAST-F unbundled price requires additional
charge.
Single User Licenses (Academic Pricing for
Fortran 95 for PowerPC Linux)
| Product |
Current
Version |
Part Number |
Price |
Order |
|
Fortran 95 |
9.0 |
F95L3ESS90 |
$675.00 |
Buy now |
|
VAST-F/Parallel* |
7.0 |
VPFL3CSS70 |
$500.00* |
Buy now |
|
VAST-F/Vector* |
7.0 |
VVFL3CSS70 |
$400.00* |
Buy now |
|
VAST-F/Vector & Parallel* |
7.0 |
VBFL3CSS70 |
$800.00* |
Buy now |
*
VAST-F bundled price. VAST-F unbundled price requires additional
charge.
Single User Licenses (Academic Pricing for
Pro Fortran for OS X)
| Product |
Current
Version |
Part Number |
Price |
Order |
Pro Fortran
Compiler & Tools |
9.0 |
PROX3ESS90 |
$675.00~ |
Buy now |
|
VAST-F/Parallel* |
7.0 |
VPFX3CSS70 |
$500.00* |
Buy now |
|
VAST-F/Vector* |
7.0 |
VVFX3CSS70 |
$400.00* |
Buy now |
|
VAST-F/Vector & Parallel* |
7.0 |
VBFX3CSS70 |
$800.00* |
Buy now |
*
VAST-F bundled price. VAST-F unbundled price requires additional
charge.
Single User Licenses (Academic Pricing
for Pro Fortran for Windows)
| Product |
Current
Version |
Part Number |
Price |
Order |
Pro Fortran
Compiler Suite |
9.0 |
PROW1ESS90 |
$299.00 |
Buy now |
Pro FortranMP
Compiler Suite |
9.0 |
PMPW1ESS90 |
$675.00 |
Buy now |
|
VAST-F/Parallel* |
7.0 |
VPFW1CSS70 |
$299.00* |
Buy now |
* Upgrade
to full VAST version from "lite" version for MP
Single User Licenses (Academic Pricing for XL C/C++
for OS X)
| Product |
Current
Version |
Part Number |
Price |
Order |
|
XL C/C++ Compiler |
6.0 |
XLCX3ESS60 |
$200.00 |
Buy now |
|
Fx2 Debugger |
1.0 |
FX2X3ESS10 |
$200.00~ |
Buy now |
|
VAST-C/Vector* |
7.0 |
VVCX3CSS70 |
$500.00* |
Buy now |
* VAST-C bundled price. VAST-C unbundled
price requires additional charge.
~standalone price · Fx2 Debugger is
included at no charge with all XL C/C++ orders from Absoft
Single User Licenses (Academic Pricing for XL Fortran
for OS X)
| Product |
Current
Version |
Part Number |
Price |
Order |
XL Fortran
Compiler & Tools |
8.1 |
XLFX3ESS81 |
$399.00 |
Buy now |
|
Fx2 Debugger |
1.0 |
FX2X3ESS10 |
$200.00~ |
Buy now |
|
VAST-F/Vector* |
7.0 |
VVFX3CSS70 |
$500.00* |
Buy now |
~standalone price · Fx2 Debugger is included at no charge with
all XL Fortran orders from Absoft
* VAST-F bundled price. VAST-F unbundled price requires additional
charge.
| Commercial / Government Pricing
for VAST |
VAST
for Fortran 95 for 32-bit Linux
VAST
for Fortran 95 for 64-bit Linux
VAST
for Fortran Compiler for PowerPC Linux
VAST
for Pro Fortran for Windows
VAST
for Pro Fortran for OS X
VAST
for XL Fortran for OS X
VAST
for XL C/C++ for OS X
Single User Licenses (Commercial/Government
Pricing for Fortran 95 for 32-bit Linux)
|
Product
|
Current
Version |
Part Number
|
Price
|
Order |
|
Fortran 95
Compiler & Tools
|
9.0
|
F95L1CSS90 |
$899.00 |
Buy now |
|
VAST-F/Parallel* |
7.0 |
VPFL1CSS70 |
$500.00* |
Buy now |
*
VAST-F bundled price. VAST-F unbundled price requires additional
charge.
Single User Licenses (Commercial/Government
Pricing for Fortran
95 for 64-bit Linux)
|
Product
|
Current
Version |
Part Number
|
Price
|
Order |
|
Fortran 95
|
9.0
|
F95L2CSS90
|
$899.00 |
Buy now |
|
VAST-F/Parallel
|
7.0
|
VPFL2CSS70
|
$500.00*
|
Buy now |
* VAST-F bundled price. VAST-F unbundled
price requires additional charge.
Single User Licenses (Commercial
Pricing for Fortran Compiler for PowerPC Linux)
|
Product
|
Current
Version |
Part Number
|
Price
|
Order |
|
Pro Fortran
Compiler & Tools
|
8.2
|
F95L3CSS82
|
$899.00 |
Buy now |
|
VAST-F/Parallel* |
7.0 |
VPFL3CSS70 |
$500.00* |
Buy now |
|
VAST-F/Vector* |
7.0 |
VVFL3CSS70 |
$500.00* |
Buy now |
|
VAST-F/Vector & Parallel* |
7.0 |
VBFL3CSS70 |
$800.00* |
Buy now |
* VAST-F bundled price. VAST-F
unbundled price requires additional charge.
Single User Licenses (Commercial Pricing
for Pro Fortran for OS X)
|
Product
|
Current
Version |
Part Number
|
| |