From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by sourceware.org (Postfix) with ESMTPS id D30693858412 for ; Tue, 26 Jul 2022 22:38:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D30693858412 Received: by mail-pj1-x1035.google.com with SMTP id d65-20020a17090a6f4700b001f303a97b14so345330pjk.1 for ; Tue, 26 Jul 2022 15:38:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=iOHIzP41dN8Fu++5jEIs0SKYsOf3/ZdJcCVgkauq18U=; b=XVjo3BPA8mNcT9uORFm/VG4xlOn8Ag9hJgwgFxA9GATQpI6BvFrlpR1O+YldsZwzXG wDi2DNSBlfrdRRIg5/RDW/lxWLgCWOpc5Tz6sdKVWEEQMgCA33tlW43AxHrbx5PIzd23 MlIgJvlLjUX8XUe7tGCxOOw00uKMx0713tXtxCDcJ9uV+WXhYf6TJy2RgnendcHNUoL6 4BFeakpi2ozbX+iwqlsalq6GksZMeaYRv8FogPn0c9HsMEQuJGGa6c8rBRvvDf/jkkAe iIfmdDabQV0IaQgvjxAk25LOKHkI43uc0+1/NsQR0IHsZnf/hL1O9UuWGsaoRg6d7bsv WDzA== X-Gm-Message-State: AJIora/c8L1jKzGonFJFgNgyy1CLWDiANXU8ecyNq5+/2VkCTW0XA3Tz zQtxn4xsvWzc6kGRL2fqe8bVgEJFVYF17GlTCAI= X-Google-Smtp-Source: AGRyM1sCVl+qXGpZPlciHsttjTJhg9J0CC4UUwwE2LFLH3x3zRmNCAzpkjQI3QgvIJ5DPKQIFmZdCxXl4YIPieZQllA= X-Received: by 2002:a17:902:b617:b0:16c:bd91:22eb with SMTP id b23-20020a170902b61700b0016cbd9122ebmr18989736pls.108.1658875082716; Tue, 26 Jul 2022 15:38:02 -0700 (PDT) MIME-Version: 1.0 References: <20210429054025.GB4032392@tassilo.jf.intel.com> <4d005159.55ea.1791e171ab9.Coremail.172060045@hdu.edu.cn> <875z0378j1.fsf@linux.intel.com> <67df7dbb.5eae.1794bba0ca3.Coremail.172060045@hdu.edu.cn> <7c802b11-857e-78eb-c2e8-0a3044817793@linux.intel.com> <20210509170121.GE25641@kam.mff.cuni.cz> <20210510172121.GT4032392@tassilo.jf.intel.com> In-Reply-To: From: David Edelsohn Date: Tue, 26 Jul 2022 18:37:46 -0400 Message-ID: Subject: Re: State of AutoFDO in GCC To: Eugene Rozenfeld , Jan Hubicka , Martin Liska , Xinliang David Li Cc: Andi Kleen , Joseph Myers , gcc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, KAM_LOTSOFHASH, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jul 2022 22:38:06 -0000 On Tue, Jul 26, 2022 at 4:13 PM Eugene Rozenfeld via Gcc 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/gc= c/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 > Update gen_autofdo_event.py and gcc-auto-profile. > Fixes for AutoFDO tests > Fix indir-call-prof-2.c with AutoFDO > Fixes for AutoFDO testing > Fix indirect call inlining with AutoFDO > Improve AutoFDO count propagation algorithm > AutoFDO: don't set param_early_inliner_max_iterations to 10. > AutoFDO: Don't try to promote indirect calls that result in recursive dir= ect calls > Fix profile count maintenance in vectorizer peeling. > > I also made a number of fixes and improvements to create_gcov tool in htt= ps://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 a= n old Google vendor branch as described in Andi's mail below > but uses a different approach for keeping track of per-instruction discri= minators. > > I submitted the first (and the biggest) of these patches almost 2 months = ago on June 2: https://gcc.gnu.org/git/?p=3Dgcc.git;a=3Dcommit;h=3D5af22024= f62f1f596a35d3c138d41d47d5697ca0 > but only got a review from Andi (https://gcc.gnu.org/pipermail/gcc-patche= s/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 g= et 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 > Sent: Monday, May 10, 2021 10:21 AM > To: Joseph Myers > Cc: Jan Hubicka ; gcc ; Eugene Rozenfeld= > 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=3Dhttps%3A%2F%2Fgcc.g= nu.org%2Fgit%2Fgitweb.cgi%3Fp%3Dgcc.git&data=3D04%7C01%7CEugene.Rozenfe= ld%40microsoft.com%7C9d79b87018f24bcbf8cc08d913d80bd0%7C72f988bf86f141af91a= b2d7cd011db47%7C1%7C0%7C637562640903545786%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi= MC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata= =3Dts53XULDtR3o7fevlntCJdtzRqTo9R85LrxJ0ZfOBnE%3D&reserved=3D0 > nor on > https://nam06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgithu= b.com%2Fgcc-mirror%2Fgcc&data=3D04%7C01%7CEugene.Rozenfeld%40microsoft.= com%7C9d79b87018f24bcbf8cc08d913d80bd0%7C72f988bf86f141af91ab2d7cd011db47%7= C1%7C0%7C637562640903545786%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJ= QIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=3D%2FPGF3vy3hD= 1OwiXmWzkUnOt9%2BR3YArZw0kCVueOKYpc%3D&reserved=3D0 > 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 > > Date: Thu Oct 10 14:39:31 2013 +0000 > > Use only lineno+discriminator (remove the callee function name) as th= e key to represent callsite. Because each callsite will have its discrimina= tor if in the same line. > > 2013-10-10 Dehao Chen > > > * 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 > > Date: Tue Aug 27 16:46:49 2013 +0000 > > Refactor AutoFDO to: > > 1. Now that we have discriminator for inlined callsite, we do not nee= d 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 > > > * 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 > > Date: Thu Aug 22 17:20:29 2013 +0000 > > Set discriminator for call stmts within a same basic block. > > 2013-08-22 Dehao Chen > > > * gcc/tree-cfg.c (assign_discriminators): assign discriminato= r for > call stmt in a same BB if it is mapped to a same line. > > commit b0be0175f4cf18fdd77bb013b181eead3a0a4773 > Author: Dehao Chen > > Date: Mon Aug 19 21:26:33 2013 +0000 > > Fix the discriminator assignment bug during hashing. > > 2013-08-19 Dehao Chen > > > * tree-cfg.c (next_discriminator_for_locus): Fix discriminato= r > assignment bug. > > From-SVN: r201857 > commit 9fa26998a63d4b22b637ed8702520819e408a694 > Author: Dehao Chen > > Date: Mon Aug 19 20:16:47 2013 +0000 > > Add discrminator for inlined callsites. > > 2013-08-19 Dehao Chen (dehao@google.com) > > * include/dwarf2.def (DW_AT_GNU_discriminator): New attribute= . > * gcc/dwarf2out.c (add_call_src_coords_attributes): Emit disc= riminator > attribute for inlined callsite. > > From-SVN: r201856 > > -Andi >