public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Feng Xue OS <fxue@os.amperecomputing.com>
To: Jan Hubicka <hubicka@ucw.cz>
Cc: luoxhu <luoxhu@linux.ibm.com>,
	"gcc-patches@gcc.gnu.org"	<gcc-patches@gcc.gnu.org>,
	Martin Jambor <mjambor@suse.cz>
Subject: Re: [PATCH] Support multi-versioning on self-recursive function (ipa/92133)
Date: Thu, 14 Nov 2019 15:16:00 -0000	[thread overview]
Message-ID: <BYAPR01MB4869214C94480AF318D5E9C6F7710@BYAPR01MB4869.prod.exchangelabs.com> (raw)
In-Reply-To: <20191114132346.r7m5kri6orassi5s@kam.mff.cuni.cz>

Thanks for your review.

> In general the patch looks good to me, but I would like Martin Jambor to
> comment on the ipa-prop/cp interfaces. However...

> +@item ipa-cp-max-recursion-depth
> +Maximum depth of recursive cloning for self-recursive function.
> +

> ... I believe we will need more careful cost model for this.  I think
> we want to limit the overall growth for all the clones and also probably
> enable this only when ipa-predicates things the individual clones will
> actualy be faster by some non-trivial percentage. For recursive inliner
> we have:

Cost model used by self-recursive cloning is mainly based on existing stuffs
in ipa-cp cloning, size growth and time benefit are considered. But since
recursive cloning is a more aggressive cloning, we will actually have another
problem, which is opposite to your concern.  By default, current parameter
set used to control ipa-cp and recursive-inliner gives priority to code size,
not completely for performance. This makes ipa-cp behave somewhat
conservatively, and as a result, it can not trigger expected recursive cloning
for the case in SPEC2017.exchange2 with default setting, blocked by both
ipa-cp-eval-threshold and ipcp-unit-growth. The former is due to improper
static profile estimation, and the latter is conflicted to aggressiveness of
recursive cloning. Thus, we have to explicitly lower the threshold and raise
percentage of unit-growth.

We might not reach the destination in one leap. This patch is just first step
to enable recursive function versioning. And next, we still need further
elaborate tuning on this.

> --param max-inline-recursive-depth which has similar meaning to your parameter
>  (so perhaps similar name would be good)
> --param min-inline-recursive-probability
>  which requires the inlining to happen only across edges which are
>  known to be taken with reasonable chance
> --param max-inline-insns-recursive
>  which specifies overall size after all the recursive inlining

> Those parameters are not parituclarly well tought out or tested, but
> they may be good start.

> Do you have some data on code size/performance effects of this change?
For spec2017, no obvious code size and performance change with default setting.
Specifically, for exchange2, with ipa-cp-eval-threshold=1 and ipcp-unit-growth=80,
performance +31%, size +7%, on aarch64.

Feng

  reply	other threads:[~2019-11-14 15:14 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-17  8:35 Feng Xue OS
2019-10-18  2:12 ` luoxhu
2019-10-18  5:15   ` Feng Xue OS
2019-10-24  6:17 ` luoxhu
2019-10-24  6:57   ` Feng Xue OS
2019-11-14 13:29     ` Jan Hubicka
2019-11-14 15:16       ` Feng Xue OS [this message]
2019-11-14 15:28         ` Jan Hubicka
2019-11-14 16:02           ` Feng Xue OS
2019-11-14 20:50             ` Jan Hubicka
2019-11-15 15:37               ` Feng Xue OS
2019-11-22  5:26                 ` Ping: " Feng Xue OS
2019-11-22 11:34                 ` Martin Jambor
2019-11-25 14:17                   ` Feng Xue OS
2019-11-27  2:07                     ` Feng Xue OS
2019-11-27 15:12                       ` Jan Hubicka
2019-11-28  3:48                         ` Feng Xue OS
2019-12-01 23:20                       ` Jeff Law
2019-12-02  7:07                         ` Feng Xue OS

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=BYAPR01MB4869214C94480AF318D5E9C6F7710@BYAPR01MB4869.prod.exchangelabs.com \
    --to=fxue@os.amperecomputing.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=hubicka@ucw.cz \
    --cc=luoxhu@linux.ibm.com \
    --cc=mjambor@suse.cz \
    /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).