|
What
is dco?
Is it still necessary to use compiler optimizations? Will dco optimize all my code? What kind of applications dco is tuned to optimize? Is dco capable to optimize code that has SIMD instructions? How do I use dco? How was dco tested? dco
may be regarded as a compiler
post processor - it takes assembly file generated by the
compiler
and optimizes it producing an assembly file logically equivalent to the
original one. The package is written in C++
incorporating object-oriented design principles which makes it
possible to retagret it to optimize different targets and to port it to
run on various systems - see this
for information about porting of our optimization technology to a
processor of your choice. Is it still necessary to use compiler optimizations? Yes
it is. dco
is expecting high quality
optimized code as it input; it doesn't attempt to perform optimizations
that are known to be done by a compiler. Therefore using dco
to
optimize the output of compilation generated without compiler
optimizations
and then comparing it to the code generated by a compiler with
optimizations turned on is not appropriate ( that is often done by
customers trying to "evaluate" dco
and
concluding that "compiler does a
better job" ). Will dco optimize all my code? Probably not. However it
might optimize enough to be useful ( see this
for some results ). What kind of applications dco is tuned to optimize? The current release of the
optimizer is tuned to optimize gcc-generated
double
precision numeric code. Is dco capable to optimize code that has SIMD instructions? Yes, such a code can be
successfully optimized by dco
- see this
for example. First use your gcc compiler to
generate assembly code of a program ( see this
on how can it be done and this
on a compiler options to choose ). Then apply dco
to generated assembly
code ( see this
on how can it be done and this
on dco's command
line options to choose ). dco
was tested by verifying many many programs from the great
number
of validation suits, benchmarks and applications. Each verified program
was compiled and executed, optimized by dco,
executed again and the execution results of the compiler generated code
and the dco
optimized code were verified for the exact match. gcc versions 4.3.2, 4.4.1 and 4.5.0 were used to compile every verified
program. For every verified program and every gcc compiler used in
verification, the process was repeated with different compilation and dco command line options. |