-
Notifications
You must be signed in to change notification settings - Fork 139
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Oxide: Conda-provided toolchain performance consistently different than fresh-built #311
Comments
This certainly seems weird. @PiotrZierhoffer - can you get someone to investigate? My bet is that the versions are not as close as @tcal-x thinks they are. |
I suppose the prjoxide executable/database is a potential source of difference as well. If the nextpnr-nexus Conda build in turn uses the prjoxide Conda package, that might be a bit old. |
Yeah, actually the Yosys Conda package is a bit old (3 days). Piotr mentioned that some packages were't getting approved as a new 'main' because of an unrelated CI failure. |
@PiotrZierhoffer , I see the Litex-Hub Yosys 'main' issue has been resolved, so that we are getting an up-to-date Yosys version. I am still seeing differences between the Conda-provided tools and the fresh-built. The From fresh-built:
From Conda-provided:
|
First of all, I see clang vs gcc, so it's a different toolchain. The flags come mainly from conda, I see that we add Do you still observe the performance difference here? |
Hi @PiotrZierhoffer , yes, there is still a difference looking at the latest workflows (https://github.com/google/CFU-Playground/actions/workflows/fmax-trials.yml and https://github.com/google/CFU-Playground/actions/workflows/fmax-trials-fresh-build.yml). The Yosys compile flags might not have anything to do with it; only if they affect Yosys output. But I don't see any Can you have someone try to get to the bottom of it? E.g. see if the Yosys output differs, if so why, if not then what is different, etc. Maybe the difference can be reproduced on your machine, maybe not -- that would be 'interesting' too if there's no difference locally. |
@tcal-x it seems the problem does not exist anymore (see the latest runs): conda: https://github.com/google/CFU-Playground/runs/3882511524?check_suite_focus=true#step:19:1 in both cases the results were:
|
Should the results not be identical if given identical input / versions? |
Even though I should know what is going on, it confused me at first as well. So to make it more clear: Conda results:
Fresh build results:
Thanks @kgugala ; I will check the runs again tomorrow, and assuming they still match, I'll close this. |
I see identical results with the most recent runs; I'll close this. |
I'm again seeing significant performance (critical path / fmax) differences for HPS between locally-built tools and Conda-provided tools. I see it both in CI and building locally. Using locally-built and installed
Using Conda-provided tools:
|
The difference is entirely due to whether gcc or clang is used to build Yosys. With a local build, clang is default. If I instead build Yosys with:
then I get exactly the same results as when using the Conda package. I'll file an issue on Yosys to see if this is expected behavior. |
I opened YosysHQ/yosys#3218 last week. |
We have nightly actions that built 3 designs each with 3 different seeds. One of these actions gets Yosys and Nextpnr-Nexus via Conda packges. The other action builds them fresh by cloning the Yosys and Nextpnr repositories and building them fresh.
The performance (achieved maximum frequency of the placed and routed design) is usually worse with the Conda-provided package, and there is no explanation for it.
See https://github.com/google/CFU-Playground/actions/workflows/fmax-trials.yml (Conda) and https://github.com/google/CFU-Playground/actions/workflows/fmax-trials-fresh-build.yml (fresh-built).
For the middle design with fresh-built tools, the (prelim/final) fmax in MHz were (70/84), (61/83), (62/82).
Using Conda-provided tools, the values were (66/73), (54/76), (64/75).
They should be identical unless there was a significant commit between the runs (the git hashes are printed out in each run), but that is not the case here. The fresh-built results have been the same for the last few days, and the Conda packages were built within the last day.
Are the tools built with different flags? Could there be some other executable in the Conda packages that somehow affects performance? You can run both ways locally (look at the Github actions for each).
The text was updated successfully, but these errors were encountered: