I’m looking for a
mentor for a GSoC Project/Proposal.
The whole idea revolves around:
* Getting hot path information from static analysis and user
* Making sure it’s not destroyed by optimization passes.
* Using it to generate better code where applicable.
#14672: Make likelihood of
branches/conditions available throughout the compiler.
Towards these goals I
would like for GSoC:
* Land https://phabricator.haskell.org/D4327 (Branchweights in STG and Cmm)
+ It might be ready before then. But it’s a prerequisite so worth
* Design and implement a way for users to:
+ Mark hot paths in Haskell code.
+ Push the information through the
passes (up to STG) on a best effort basis. STG and beyond is part of the
+ The current backend already uses this
information in some places, so this alone should lead to small but
gains. + I don’t plan to add
additional optimizations unless there is time left at the end. Where I think I will
need help/experience from a mentor is:
* Frontend questions:
I haven’t looked at GHC’s
parser/renamer yet so while
this is surmountable I expect some
questions to arise there.
* Design questions/feedback:
+ How should the user be able to give
+ What should be flag controlled? What
+ Things like compile time/executable
* Potentially the simplifier:
I’ve looked into it briefly as originally
D4327 was aimed at the
core stage instead of stg.
There doesn’t seem to be a lot that could
mess with hot path
information/branchweights. But I haven’t worked on
the simplifier before and it seems like
a good place for unexpected
issues to arise.
* If this involves the proposal process then also guidance there.
* I’m studying at TU
Vienna (Software & Information Engineering)
and am close to finishing my
undergrad. Located in Austria (UTC+1) * I have contributed a
few small changes to GHC throughout last year.
See AndreasK on Phab/Trac. * If you want to know more
contact me! If you are interested in
mentoring me or looking for more details feel free to contact me at [hidden email] or look for
AndreasK in #ghc