public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Eugene Rozenfeld <Eugene.Rozenfeld@microsoft.com>
To: Andi Kleen <ak@linux.intel.com>,
	Joseph Myers <joseph@codesourcery.com>,
	Jan Hubicka <hubicka@ucw.cz>, gcc <gcc@gcc.gnu.org>
Subject: Re: State of AutoFDO in GCC
Date: Tue, 26 Jul 2022 20:12:21 +0000	[thread overview]
Message-ID: <MW2PR2101MB1770A8F6F9FC1836AFABBEFC91949@MW2PR2101MB1770.namprd21.prod.outlook.com> (raw)
In-Reply-To: <20210510172121.GT4032392@tassilo.jf.intel.com>

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.

Thank you,

Eugene

-----Original Message-----
From: Andi Kleen <ak@linux.intel.com>
Sent: Monday, May 10, 2021 10:21 AM
To: Joseph Myers <joseph@codesourcery.com>
Cc: Jan Hubicka <hubicka@ucw.cz>; gcc <gcc@gcc.gnu.org>; Eugene Rozenfeld <Eugene.Rozenfeld@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 <dehao@gcc.gnu.org<mailto:dehao@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  <dehao@google.com<mailto:dehao@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 <dehao@gcc.gnu.org<mailto:dehao@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  <dehao@google.com<mailto:dehao@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 <dehao@gcc.gnu.org<mailto:dehao@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  <dehao@google.com<mailto:dehao@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 <dehao@gcc.gnu.org<mailto:dehao@gcc.gnu.org>>
Date:   Mon Aug 19 21:26:33 2013 +0000

    Fix the discriminator assignment bug during hashing.

    2013-08-19  Dehao Chen  <dehao@google.com<mailto:dehao@google.com>>

            * tree-cfg.c (next_discriminator_for_locus): Fix discriminator
            assignment bug.

    From-SVN: r201857
commit 9fa26998a63d4b22b637ed8702520819e408a694
Author: Dehao Chen <dehao@gcc.gnu.org<mailto:dehao@gcc.gnu.org>>
Date:   Mon Aug 19 20:16:47 2013 +0000

    Add discrminator for inlined callsites.

    2013-08-19  Dehao Chen  (dehao@google.com<mailto:dehao@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	other threads:[~2022-07-26 20:12 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-22 19:58 Eugene Rozenfeld
2021-04-22 20:16 ` Martin Liška
2021-04-22 22:29   ` Jan Hubicka
2021-04-23  4:14     ` Xinliang David Li
2021-04-23  7:00       ` Richard Biener
2021-04-23  7:18         ` Martin Liška
2021-04-23  9:32           ` Richard Biener
2021-04-23 16:41           ` Xinliang David Li
2021-04-23 16:54             ` Jan Hubicka
2021-04-23 17:04               ` Xinliang David Li
2021-04-23 17:16                 ` Jan Hubicka
2021-04-23 17:27                   ` Xinliang David Li
2021-04-23 17:28                     ` Xinliang David Li
2021-04-23 19:28                       ` Jan Hubicka
2021-04-23 19:58                         ` Xinliang David Li
2021-04-25 19:07                           ` Jan Hubicka
2021-04-25 23:18                             ` Xinliang David Li
2021-04-26  4:22                               ` Wei Mi
2021-04-26 15:11                             ` Andi Kleen
2021-04-26 16:57                               ` Xinliang David Li
2021-04-26 18:00                                 ` Andi Kleen
2021-04-26 18:05                                   ` Xinliang David Li
2021-04-26 18:40                                     ` Hongtao Yu
2021-04-26 19:13                                       ` Andi Kleen
2021-04-29  5:40                                       ` Andi Kleen
2021-04-29 14:45                                         ` 172060045
2021-04-30 21:43                                           ` Andi Kleen
2021-05-08 11:25                                             ` 172060045
2021-05-09 16:28                                               ` Andi Kleen
2021-05-09 17:01                                                 ` Jan Hubicka
2021-05-10 15:36                                                   ` Andi Kleen
2021-05-10 16:55                                                     ` Joseph Myers
2021-05-10 17:21                                                       ` Andi Kleen
2022-07-26 20:12                                                         ` Eugene Rozenfeld [this message]
2022-07-26 22:37                                                           ` David Edelsohn
2022-07-27  7:26                                                             ` Jan Hubicka
2022-07-27 18:30                                                               ` [EXTERNAL] " Eugene Rozenfeld
2022-07-27 18:24                                                             ` Eugene Rozenfeld
2022-07-27  1:31                                                           ` Xionghu Luo
2022-07-27  1:41                                                             ` Xionghu Luo
2022-07-27 18:38                                                               ` [EXTERNAL] " Eugene Rozenfeld
2021-05-10 23:46                                         ` Wei Mi
2021-05-22  1:28                                           ` [EXTERNAL] " Eugene Rozenfeld
2021-05-22 16:36                                             ` Wei Mi
2021-05-25  1:39                                               ` Eugene Rozenfeld
2021-05-25  3:11                                                 ` Wei Mi
2021-05-25  3:33                                                   ` Eugene Rozenfeld
2021-05-25  3:54                                                     ` Wei Mi
2021-05-25  7:01                                                       ` Eugene Rozenfeld
2021-05-25 16:16                                                         ` Wei Mi
2021-05-25 20:49                                                           ` Eugene Rozenfeld
2021-05-26  3:06                                                             ` Wei Mi
2021-05-26 23:39                                                               ` Eugene Rozenfeld
2021-05-27  2:51                                                                 ` Wei Mi
2021-06-12  1:14                                                                   ` Eugene Rozenfeld
2021-06-14 17:00                                                                     ` Wei Mi
2021-04-23 17:20           ` Jan Hubicka
2021-04-23 16:36         ` Xinliang David Li
2021-04-30 18:48           ` [EXTERNAL] " Eugene Rozenfeld
2021-04-30 21:45             ` Andi Kleen
2021-06-24 21:45               ` Eugene Rozenfeld
2021-04-23  1:46   ` Bin.Cheng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MW2PR2101MB1770A8F6F9FC1836AFABBEFC91949@MW2PR2101MB1770.namprd21.prod.outlook.com \
    --to=eugene.rozenfeld@microsoft.com \
    --cc=ak@linux.intel.com \
    --cc=gcc@gcc.gnu.org \
    --cc=hubicka@ucw.cz \
    --cc=joseph@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).