What is dco?
Is it still necessary to use compiler optimizations?
Will dco optimize all my code?
How do I use dco?
How was dco tested?
Why would I use dco to parallelize my code?



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