The-OpenROAD-Project / OpenROAD

OpenROAD's unified application implementing an RTL-to-GDS Flow. Documentation at https://openroad.readthedocs.io/en/latest/
https://theopenroadproject.org/
BSD 3-Clause "New" or "Revised" License
1.59k stars 552 forks source link

We should see if LTO improves the performance of OpenROAD #1267

Open QuantamHD opened 3 years ago

QuantamHD commented 3 years ago

LTO stands for link time optimization, and allows clang/gcc to optimize across linking boundaries.

We can enable it by default by setting set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) in the root CMAKE file.

https://stackoverflow.com/questions/31355692/how-do-i-enable-link-time-optimization-lto-with-cmake

maliberty commented 3 years ago

@QuantamHD do you want to try it?

cbalint13 commented 2 years ago

@QuantamHD @maliberty

OpenROAD +LTO means:

LTO is more about size optimisation (speed would second by a chance) IMO is safe to enable LTO it gains some significant amount towards smaller size.


Setup conditions:


LTO on:

LTO off:

QuantamHD commented 2 years ago

LTO was broken because of the QT components. We would need some additional work to selectively disable it around the GUI.

QuantamHD commented 2 years ago

Auto-FDO would also be worth doing.