What is dco?
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. All this is done "automaticaly" without any need
for user to be involved.
top
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" ).
top
Will dco optimize all my code?
Probably not. However it might optimize enough
to be useful. Besides, it is not necessary to optimze all the code, optimize
only critical parts of it.
top
How do I use dco?
First identify critical parts of your code
( profiler may be handy for doing that ) and prepare them for selected code optimization
( see this for more on that ).
Then 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 ). After that apply dco
to generated assembly code ( see this
on how can it be done and this
on dco's command line options to choose ).
top
How was dco tested?
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 confirmed for the exact match. For every verified program
the process was repeated with different compilation and dco command line options.
top
Why would I use dco to parallelize my code?
Because dco is known
to succesfuly parallelize code that other parallel code generation tools ( e.g. OpenMP ) fail to do.
top