On Tue, Jul 26, 2022 at 4:13 PM Eugene Rozenfeld via Gcc
<gcc@gcc.gnu.org> wrote:
>
> Hello GCC community.
>
> I started this thread on the state of AutoFDO in GCC more than a year ago. 
> Here is the first message in the thread: 
> https://gcc.gnu.org/pipermail/gcc/2021-April/235860.html
>
> Since then I committed a number of patches to revive AutoFDO in GCC:
>
> Fix a typo in an AutoFDO error 
> string<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=23691ddd3aa3ffe55892b2bff54f9a15a89de2b4>
> Update gen_autofdo_event.py and 
> gcc-auto-profile.<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=01d402c5e0ac1ddf5618bbe316b50067625fda46>
> Fixes for AutoFDO 
> tests<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=f9ad3d5339faaaed6e15a7b27d90fbc66eb72f37>
> Fix indir-call-prof-2.c with 
> AutoFDO<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=0ed093c7c3f755bc1cd80e5186abeb2f5c50ee0c>
> Fixes for AutoFDO 
> testing<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=9265b378531391498ec1727f67a45da72a6c07e9>
> Fix indirect call inlining with 
> AutoFDO<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=285aa6895d479bed8e72ad363290846645b6faa0>
> Improve AutoFDO count propagation 
> algorithm<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=3d9e6767939e9658260e2506e81ec32b37cba041>
> AutoFDO: don't set param_early_inliner_max_iterations to 
> 10.<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=c17975d81aaed49ff759c20c68b31304a6953d58>
> AutoFDO: Don't try to promote indirect calls that result in recursive direct 
> calls<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=ba125745d9e9fe90a18a2af8701b3269c5fdd468>
> Fix profile count maintenance in vectorizer 
> peeling.<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=5af22024f62f1f596a35d3c138d41d47d5697ca0>
>
> I also made a number of fixes and improvements to create_gcov tool in 
> https://github.com/google/autofdo .
>
> AutoFDO in GCC is in a much better shape now.
>
> I have a further set of patches that improve DWARF discriminator support in 
> GCC and enable AutoFDO to use discriminators. It's based on commits in an old 
> Google vendor branch as described in Andi's mail below
> but uses a different approach for keeping track of per-instruction 
> discriminators.
>
> I submitted the first (and the biggest) of these patches almost 2 months ago 
> on June 2: 
> https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=5af22024f62f1f596a35d3c138d41d47d5697ca0
> but only got a review from Andi 
> (https://gcc.gnu.org/pipermail/gcc-patches/2022-June/596549.html) who is not 
> allowed to approve patches for commit. I pinged gcc-patches twice with no 
> success.
>
> I would appreciate help in getting a review on this patch so that I can get 
> it committed and submit patches that depend on it.

Hi, Eugene

Thanks for your efforts to fix and improve AutoFDO in GCC.  I believe
that part of the difficulty with obtaining a review of the patches is
that the original authors have dispersed and no one in the GCC
community officially is the maintainer for the feature.  Because you
seem to be one of the primary users and developers, would you be
interested to take on the responsibility of maintaining the
AutoFDO-specific portions of the code, with guidance and mentorship
from other GCC maintainers, especially the ones responsible for gcov
and PDO?

Thanks, David

>
> Thank you,
>
> Eugene
>
> -----Original Message-----
> From: Andi Kleen <a...@linux.intel.com>
> Sent: Monday, May 10, 2021 10:21 AM
> To: Joseph Myers <jos...@codesourcery.com>
> Cc: Jan Hubicka <hubi...@ucw.cz>; gcc <gcc@gcc.gnu.org>; Eugene Rozenfeld 
> <eugene.rozenf...@microsoft.com>
> Subject: [EXTERNAL] Re: State of AutoFDO in GCC
>
> On Mon, May 10, 2021 at 04:55:50PM +0000, Joseph Myers wrote:
> > On Mon, 10 May 2021, Andi Kleen via Gcc wrote:
> >
> > > It's difficult to find now because it was a branch in the old SVN
> > > that wasn't converted. Sadly the great git conversion was quite lossy.
> >
> > All branches and tags, including deleted ones, were converted (under
> > not-fetched-by-default refs in some cases); the git repository has
> > everything that might plausibly be useful, omitting only a few things
> > that would have been meaningless to convert, such as mistaken branch
> > creations in the root of the repository and the SVN hooks directory.
> > Use "git ls-remote git://gcc.gnu.org/git/gcc.git" to see the full list
> > of over 5000 refs available in the repository (or do a clone with
> > --mirror to fetch them all).
>
> Okay thanks. I don't see them in any of the web interfaces, neither on
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgcc.gnu.org%2Fgit%2Fgitweb.cgi%3Fp%3Dgcc.git&amp;data=04%7C01%7CEugene.Rozenfeld%40microsoft.com%7C9d79b87018f24bcbf8cc08d913d80bd0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637562640903545786%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=ts53XULDtR3o7fevlntCJdtzRqTo9R85LrxJ0ZfOBnE%3D&amp;reserved=0
> nor on
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fgcc-mirror%2Fgcc&amp;data=04%7C01%7CEugene.Rozenfeld%40microsoft.com%7C9d79b87018f24bcbf8cc08d913d80bd0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637562640903545786%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=%2FPGF3vy3hD1OwiXmWzkUnOt9%2BR3YArZw0kCVueOKYpc%3D&amp;reserved=0
> but
> git fetch origin vendors/google/heads/gcc-4_8 does the trick for fetching the 
> commits, but not the symbolic branches.
>
> Anyways with that it looks like the discriminator changes are:
>
> commit fd9de90d750e3588b1e5a218b28102b6c8bb8434
> Author: Dehao Chen <de...@gcc.gnu.org<mailto:de...@gcc.gnu.org>>
> Date:   Thu Oct 10 14:39:31 2013 +0000
>
>     Use only lineno+discriminator (remove the callee function name) as the 
> key to represent callsite. Because each callsite will have its discriminator 
> if in the same line.
>
>     2013-10-10  Dehao Chen  <de...@google.com<mailto:de...@google.com>>
>
>             * gcc/auto-profile.c (get_function_instance_by_decl): Remove
>             callee_name from callsite.
>             (read_function_instance): Likewise.
>
>     From-SVN: r203379
>
> commit 3987da76affbfbe7195c0a16b33beedc649ec14f
> Author: Dehao Chen <de...@gcc.gnu.org<mailto:de...@gcc.gnu.org>>
> Date:   Tue Aug 27 16:46:49 2013 +0000
>
>     Refactor AutoFDO to:
>
>     1. Now that we have discriminator for inlined callsite, we do not need 
> special handling for callsite location any more.
>     2. If a source line is mapped to multiple BBs, only the first BB will be 
> annotated.
>     3. Before actual annotation, mark everythin BB/edge as not annotated.
>
>     2013-08-27  Dehao Chen  <de...@google.com<mailto:de...@google.com>>
>
>             * gcc/auto-profile.c (location_set): New data structure.
>             (get_count_info): Add new parameter.
>             (get_combined_location): Remove unused parameter.
>             (get_inline_stack): Remove unused parameter.
>             (afdo_get_bb_count): Add new parameter.
>             (afdo_annotate_cfg): Reset annotated flags.
> commit 1e6c4a7a8fb8e20545bb9f9032d3854f3f794c18
> Author: Dehao Chen <de...@gcc.gnu.org<mailto:de...@gcc.gnu.org>>
> Date:   Thu Aug 22 17:20:29 2013 +0000
>
>     Set discriminator for call stmts within a same basic block.
>
>     2013-08-22  Dehao Chen  <de...@google.com<mailto:de...@google.com>>
>
>             * gcc/tree-cfg.c (assign_discriminators): assign discriminator for
>             call stmt in a same BB if it is mapped to a same line.
>
> commit b0be0175f4cf18fdd77bb013b181eead3a0a4773
> Author: Dehao Chen <de...@gcc.gnu.org<mailto:de...@gcc.gnu.org>>
> Date:   Mon Aug 19 21:26:33 2013 +0000
>
>     Fix the discriminator assignment bug during hashing.
>
>     2013-08-19  Dehao Chen  <de...@google.com<mailto:de...@google.com>>
>
>             * tree-cfg.c (next_discriminator_for_locus): Fix discriminator
>             assignment bug.
>
>     From-SVN: r201857
> commit 9fa26998a63d4b22b637ed8702520819e408a694
> Author: Dehao Chen <de...@gcc.gnu.org<mailto:de...@gcc.gnu.org>>
> Date:   Mon Aug 19 20:16:47 2013 +0000
>
>     Add discrminator for inlined callsites.
>
>     2013-08-19  Dehao Chen  (de...@google.com<mailto:de...@google.com>)
>
>             * include/dwarf2.def (DW_AT_GNU_discriminator): New attribute.
>             * gcc/dwarf2out.c (add_call_src_coords_attributes): Emit 
> discriminator
>             attribute for inlined callsite.
>
>     From-SVN: r201856
>
> -Andi
>

Reply via email to