Closed oharboe closed 1 year ago
It sounds like this will be difficult to reproduce. Would you try adding
set_debug_level GUI draw 1
to your tcl file and report the results from both configurations. Perform the exact same operations in both runs (say initial load and three mouse wheel clicks close together).
It sounds like this will be difficult to reproduce. Would you try adding
set_debug_level GUI draw 1
to your tcl file and report the results from both configurations. Perform the exact same operations in both runs (say initial load and three mouse wheel clicks close together).
I will make the measurement, but unless you can reproduce this on your end, then I don't think this finding will help us much...
Can you give it a go?
@maliberty How do I measure GUI performance reliably?
Could a new target be made? make gui_final_test
, load a design, then run performance tests?
I didn't notice any additional output after setting up debug output. I ran the command then zoomed in/out:
@nekronos Instructions on how to set this up in the debugger and using perf
:
./build_openroad.sh --latest --local --openroad-args "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_FLAGS=-g"
cd flow
MOCK_ARRAY_PITCH_SCALE=20 make DESIGN_CONFIG=designs/asap7/mock-array-big/config.mk
make DESIGN_CONFIG=designs/asap7/mock-array-big/config.mk gui_final
Docker is faster.
If you want to profile using perf, you can run:
OPENROAD_EXE="perf record ../tools/install/OpenROAD/bin/openroad" make DESIGN_CONFIG=designs/asap7/mock-array-big/config.mk gui_final
Can we do the same with a software rasterizer using the local build?
sudo apt-get install libgl1-mesa-dri
export LIBGL_ALWAYS_SOFTWARE=1
I tried LIBGL_ALWAYS_SOFTWARE=1
on a laptop that clearly demonstrates slower local than docker, and I couldn't detect any effect.
Nice! The difference evaporates on this laptop when I rebuild with the options above.
Docker, from zoom in, then preff Zoom in, then hit 'f', to render the full image:
Docker:
[DEBUG GUI-draw] inst search 0.00149054 sec
[DEBUG GUI-draw] inst outline render 7.8416e-05 sec
[DEBUG GUI-draw] layer V0 render 1.8518e-05 sec
[DEBUG GUI-draw] layer M1 render 0.0645053 sec
[DEBUG GUI-draw] layer V1 render 1.0153e-05 sec
[DEBUG GUI-draw] layer M2 render 0.0664876 sec
[DEBUG GUI-draw] layer V2 render 6.365e-06 sec
[DEBUG GUI-draw] layer M3 render 0.00801023 sec
[DEBUG GUI-draw] layer V3 render 1.1735e-05 sec
[DEBUG GUI-draw] layer M4 render 0.00827889 sec
[DEBUG GUI-draw] layer V4 render 1.085e-05 sec
[DEBUG GUI-draw] layer M5 render 0.00408528 sec
[DEBUG GUI-draw] layer V5 render 6.632e-06 sec
[DEBUG GUI-draw] layer M6 render 0.00302874 sec
[DEBUG GUI-draw] layer V6 render 6.802e-06 sec
[DEBUG GUI-draw] layer M7 render 8.445e-06 sec
[DEBUG GUI-draw] layer V7 render 5.346e-06 sec
[DEBUG GUI-draw] layer M8 render 8.196e-06 sec
[DEBUG GUI-draw] layer V8 render 5.12e-06 sec
[DEBUG GUI-draw] layer M9 render 1.0017e-05 sec
[DEBUG GUI-draw] layer V9 render 5.732e-06 sec
[DEBUG GUI-draw] layer Pad render 8.514e-06 sec
[DEBUG GUI-draw] total render 0.163417 sec
local OpenROAD v2.0-8120-gccbbca57b
[DEBUG GUI-draw] inst search 0.00151148 sec
[DEBUG GUI-draw] inst outline render 6.7555e-05 sec
[DEBUG GUI-draw] layer V0 render 8.846e-06 sec
[DEBUG GUI-draw] layer M1 render 0.0657221 sec
[DEBUG GUI-draw] layer V1 render 8.102e-06 sec
[DEBUG GUI-draw] layer M2 render 0.0666655 sec
[DEBUG GUI-draw] layer V2 render 5.624e-06 sec
[DEBUG GUI-draw] layer M3 render 0.00730094 sec
[DEBUG GUI-draw] layer V3 render 6.418e-06 sec
[DEBUG GUI-draw] layer M4 render 0.00745809 sec
[DEBUG GUI-draw] layer V4 render 6.413e-06 sec
[DEBUG GUI-draw] layer M5 render 0.00412683 sec
[DEBUG GUI-draw] layer V5 render 5.133e-06 sec
[DEBUG GUI-draw] layer M6 render 0.00311936 sec
[DEBUG GUI-draw] layer V6 render 4.067e-06 sec
[DEBUG GUI-draw] layer M7 render 5.354e-06 sec
[DEBUG GUI-draw] layer V7 render 2.76e-06 sec
[DEBUG GUI-draw] layer M8 render 3.785e-06 sec
[DEBUG GUI-draw] layer V8 render 2.794e-06 sec
[DEBUG GUI-draw] layer M9 render 3.661e-06 sec
[DEBUG GUI-draw] layer V9 render 2.792e-06 sec
[DEBUG GUI-draw] layer Pad render 3.658e-06 sec
[DEBUG GUI-draw] total render 0.161982 sec
<!DOCTYPE html>
| | docker | local | difference in percent of total running time -- | -- | -- | -- | -- inst | search | 1.49E-03 | 1.51E-03 | -0.01% inst | outline | 7.84E-05 | 6.76E-05 | 0.01% layer | V0 | 1.85E-05 | 8.85E-06 | 0.01% layer | M1 | 6.45E-02 | 6.57E-02 | -0.74% layer | V1 | 1.02E-05 | 8.10E-06 | 0.00% layer | M2 | 6.65E-02 | 6.67E-02 | -0.11% layer | V2 | 6.37E-06 | 5.62E-06 | 0.00% layer | M3 | 8.01E-03 | 7.30E-03 | 0.43% layer | V3 | 1.17E-05 | 6.42E-06 | 0.00% layer | M4 | 8.28E-03 | 7.46E-03 | 0.50% layer | V4 | 1.09E-05 | 6.41E-06 | 0.00% layer | M5 | 4.09E-03 | 4.13E-03 | -0.03% layer | V5 | 6.63E-06 | 5.13E-06 | 0.00% layer | M6 | 3.03E-03 | 3.12E-03 | -0.06% layer | V6 | 6.80E-06 | 4.07E-06 | 0.00% layer | M7 | 8.45E-06 | 5.35E-06 | 0.00% layer | V7 | 5.35E-06 | 2.76E-06 | 0.00% layer | M8 | 8.20E-06 | 3.79E-06 | 0.00% layer | V8 | 5.12E-06 | 2.79E-06 | 0.00% layer | M9 | 1.00E-05 | 3.66E-06 | 0.00% layer | V9 | 5.73E-06 | 2.79E-06 | 0.00% layer | Pad | 8.51E-06 | 3.66E-06 | 0.00% total | | 1.63E-01 | 1.62E-01 | 0.88%
Describe the bug
LayoutViewer::drawRows() can be pathologically slow, which lead us down this wild goose chase in this issue ... Looking at the code, it looks like this method should render an approperiate level of detail to automatically balance speed and detail for zoom level.
This is odd. It could be a configuration issue, but I have tried a laptop and a very different workstation. Workstation is Ubuntu 22.04 and docker of course runs centos 7 inside the docker image.
Expected Behavior
Docker should be slower to zoom than a local install.
Environment
To Reproduce
Build locally
./build_openroad.sh --local
and a docker image./build_openroad.sh
Make a design that is large enough that zooming takes a noticable amount of time.
Create a "./or" script locally, then...
Runs in docker:
Runs locally:
zoom in/out rapidly, observe a difference in performance. I would not expect Docker to be faster.
Relevant log output
No response
Screenshots
No response
Additional Context
No response