[llvm-dev] Filter optimization remarks by the hotness of the code region
Hal Finkel via llvm-dev
llvm-dev at lists.llvm.org
Wed May 11 03:37:49 PDT 2016
----- Original Message -----
> From: "Adam Nemet" <anemet at apple.com>
> To: "Hal Finkel" <hfinkel at anl.gov>
> Cc: "llvm-dev (llvm-dev at lists.llvm.org)" <llvm-dev at lists.llvm.org>
> Sent: Wednesday, May 11, 2016 1:15:42 AM
> Subject: Re: Filter optimization remarks by the hotness of the code region
>
> Hi Hal,
>
> > On May 10, 2016, at 5:39 PM, Hal Finkel <hfinkel at anl.gov> wrote:
> >
> > Hi Adam,
> >
> > I think would be a really useful feature to have. I don't think
> > that the backend should be responsible for filtering, but should
> > pass the relative hotness information to the frontend. Given that
> > these diagnostics are not just going to be used for -Rpass and
> > friends, but also for generating reports by other tools (see the
> > discussion around D19678, for example), I think it is important to
> > allow the frontend to filter.
>
> I am not sure I follow, can you please elaborate. Are you saying
> that for example in the listing use case we don’t want the filtered
> diagnostics? In other words it should be up to the remark handler
> to decide whether it wants filtered or unfiltered remarks?
We might or might not want them. The user might want to select different ratios and filters.
> > The frontend, or other tool, might also want to collect information
> > from different compilation jobs to provide the user with an
> > overall ranking.
>
> Strictly speaking about PGO, the different compilation jobs get the
> same PGO with the aggregated profile, thus the hotness calculated
> should be global. I am not sure why an extra aggregation step is
> necessary.
I agree. However, I think that the frontend might employ a combination of factors in deciding what information to present. We might, for example, have pick different hotness thresholds for different kinds of remarks.
Especially since we're likely going with a design for the optimization reports where the frontend just creates some YAML files with the diagnostic information, and then a separate tool processes the files to produce reports, I think that we should give those tools the maximum about of practical flexibility. Such a tool might provide the user with non-trivial filtering options.
Thanks again,
Hal
>
> > The default diagnostic, furthermore, does not provide enough
> > information to identify a code "region". I think that the pass
> > generating the diagnostic needs to provide the information,
> > however, we could certainly create some utility functions that
> > take a pointer to the BFI analysis and a Value* that can do the
> > right thing in most simple cases.
>
> Good point.
>
> Thanks for your feedback.
>
> Adam
>
> >
> > Thanks again,
> > Hal
> >
> > ----- Original Message -----
> >> From: "Adam Nemet" <anemet at apple.com>
> >> To: "llvm-dev (llvm-dev at lists.llvm.org)" <llvm-dev at lists.llvm.org>
> >> Cc: "Hal Finkel" <hfinkel at anl.gov>
> >> Sent: Wednesday, May 4, 2016 1:12:17 PM
> >> Subject: Filter optimization remarks by the hotness of the code
> >> region
> >>
> >> This idea came up a few times recently [1][2] so I’d like start
> >> prototyping it. To summarize, we can emit optimization remarks
> >> using the -Rpass* options. These are currently emitted by
> >> optimizations like vectorization[3], unrolling, inlining and since
> >> last week loop distribution.
> >>
> >> For large programs however this can amount to a lot of diagnostics
> >> output to sift through. Filtering this by the hotness of the
> >> region
> >> can help to focus the user on performance opportunities that are
> >> likely to pay off.
> >>
> >> The approach I am thinking of taking is to install a wrapper as
> >> the
> >> diagnostics handler that will only forward to the original handler
> >> if the region of code is considered hot. This will be installed
> >> by
> >> a new pass that will use BlockFrequencyInfo to determine the top N
> >> hot regions.
> >>
> >> This is at very early stage right now. I would appreciate any
> >> feedback.
> >>
> >> Thanks,
> >> Adam
> >>
> >> [1]
> >> http://lists.llvm.org/pipermail/llvm-dev/2016-April/098492.html
> >> [2] http://lists.llvm.org/pipermail/cfe-dev/2016-April/048526.html
> >> [3]
> >> http://blog.llvm.org/2014/11/loop-vectorization-diagnostics-and.html
> >
> > --
> > Hal Finkel
> > Assistant Computational Scientist
> > Leadership Computing Facility
> > Argonne National Laboratory
>
>
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-dev
mailing list