diff mbox

[hsa,merge,07/10] IPA-HSA pass

Message ID 56A63D8E.4070907@suse.cz
State New
Headers show

Commit Message

Martin Liška Jan. 25, 2016, 3:21 p.m. UTC
On 01/16/2016 11:00 AM, Jan Hubicka wrote:
> Can't it be represented via explicit REF_ADDR or something like that?
> 
> Honza

Hi.

Sure, I've just done a patch that can do that. However, as we're currently in stage4,
that change would probably require explicit permission of a release manager?

Thanks,
Martin

Comments

Jakub Jelinek Jan. 25, 2016, 3:24 p.m. UTC | #1
On Mon, Jan 25, 2016 at 04:21:50PM +0100, Martin Liška wrote:
> On 01/16/2016 11:00 AM, Jan Hubicka wrote:
> > Can't it be represented via explicit REF_ADDR or something like that?
> > 
> > Honza
> 
> Hi.
> 
> Sure, I've just done a patch that can do that. However, as we're currently in stage4,
> that change would probably require explicit permission of a release manager?

If Honza is fine with it and you've tested it, this is ok for trunk.

> >From 9639fff94d043c55b55bfb12bb086032db565f0a Mon Sep 17 00:00:00 2001
> From: marxin <mliska@suse.cz>
> Date: Mon, 25 Jan 2016 16:11:00 +0100
> Subject: [PATCH] HSA: simplify partitioning of HSA kernels and host impls.
> 
> gcc/lto/ChangeLog:
> 
> 2016-01-25  Martin Liska  <mliska@suse.cz>
> 
> 	* lto-partition.c (add_symbol_to_partition_1): Remove usage
> 	of hsa_summaries.
> 
> gcc/ChangeLog:
> 
> 2016-01-25  Martin Liska  <mliska@suse.cz>
> 
> 	* hsa.c (hsa_summary_t::link_functions): Create IPA_REF_ADDR
> 	reference for an HSA kernel and its host function.
> ---
>  gcc/hsa.c               |  5 +++++
>  gcc/lto/lto-partition.c | 19 -------------------
>  2 files changed, 5 insertions(+), 19 deletions(-)
> 
> diff --git a/gcc/hsa.c b/gcc/hsa.c
> index ec23f81..f0b3205 100644
> --- a/gcc/hsa.c
> +++ b/gcc/hsa.c
> @@ -781,6 +781,11 @@ hsa_summary_t::link_functions (cgraph_node *gpu, cgraph_node *host,
>    TREE_OPTIMIZATION (fn_opts)->x_flag_tree_loop_vectorize = false;
>    TREE_OPTIMIZATION (fn_opts)->x_flag_tree_slp_vectorize = false;
>    DECL_FUNCTION_SPECIFIC_OPTIMIZATION (gdecl) = fn_opts;
> +
> +  /* Create reference between a kernel and a corresponding host implementation
> +     to quarantee LTO streaming to a same LTRANS.  */
> +  if (kind == HSA_KERNEL)
> +    gpu->create_reference (host, IPA_REF_ADDR);
>  }
>  
>  /* Add a HOST function to HSA summaries.  */
> diff --git a/gcc/lto/lto-partition.c b/gcc/lto/lto-partition.c
> index eb28fed..9eb63c2 100644
> --- a/gcc/lto/lto-partition.c
> +++ b/gcc/lto/lto-partition.c
> @@ -34,7 +34,6 @@ along with GCC; see the file COPYING3.  If not see
>  #include "ipa-prop.h"
>  #include "ipa-inline.h"
>  #include "lto-partition.h"
> -#include "hsa.h"
>  
>  vec<ltrans_partition> ltrans_partitions;
>  
> @@ -171,24 +170,6 @@ add_symbol_to_partition_1 (ltrans_partition part, symtab_node *node)
>  	 Therefore put it into the same partition.  */
>        if (cnode->instrumented_version)
>  	add_symbol_to_partition_1 (part, cnode->instrumented_version);
> -
> -      /* Add an HSA associated with the symbol.  */
> -      if (hsa_summaries != NULL)
> -	{
> -	  hsa_function_summary *s = hsa_summaries->get (cnode);
> -	  if (s->m_kind == HSA_KERNEL)
> -	    {
> -	      /* Add binded function.  */
> -	      bool added = add_symbol_to_partition_1 (part,
> -						      s->m_binded_function);
> -	      gcc_assert (added);
> -	      if (symtab->dump_file)
> -		fprintf (symtab->dump_file,
> -			 "adding an HSA function (host/gpu) to the "
> -			 "partition: %s\n",
> -			 s->m_binded_function->name ());
> -	    }
> -	}
>      }
>  
>    add_references_to_partition (part, node);
> -- 
> 2.7.0
> 


	Jakub
Jan Hubicka Jan. 25, 2016, 11:41 p.m. UTC | #2
> On Mon, Jan 25, 2016 at 04:21:50PM +0100, Martin Liška wrote:
> > On 01/16/2016 11:00 AM, Jan Hubicka wrote:
> > > Can't it be represented via explicit REF_ADDR or something like that?
> > > 
> > > Honza
> > 
> > Hi.
> > 
> > Sure, I've just done a patch that can do that. However, as we're currently in stage4,
> > that change would probably require explicit permission of a release manager?
> 
> If Honza is fine with it and you've tested it, this is ok for trunk.

It looks fine to me.

Honza
Martin Liška Jan. 27, 2016, 12:37 p.m. UTC | #3
On 01/26/2016 12:41 AM, Jan Hubicka wrote:
>> On Mon, Jan 25, 2016 at 04:21:50PM +0100, Martin Liška wrote:
>>> On 01/16/2016 11:00 AM, Jan Hubicka wrote:
>>>> Can't it be represented via explicit REF_ADDR or something like that?
>>>>
>>>> Honza
>>>
>>> Hi.
>>>
>>> Sure, I've just done a patch that can do that. However, as we're currently in stage4,
>>> that change would probably require explicit permission of a release manager?
>>
>> If Honza is fine with it and you've tested it, this is ok for trunk.
> 
> It looks fine to me.
> 
> Honza
> 

I've just bootregtested the patch on x86_64-linux-pc and I'm going to install
it to trunk.

Martin
diff mbox

Patch

From 9639fff94d043c55b55bfb12bb086032db565f0a Mon Sep 17 00:00:00 2001
From: marxin <mliska@suse.cz>
Date: Mon, 25 Jan 2016 16:11:00 +0100
Subject: [PATCH] HSA: simplify partitioning of HSA kernels and host impls.

gcc/lto/ChangeLog:

2016-01-25  Martin Liska  <mliska@suse.cz>

	* lto-partition.c (add_symbol_to_partition_1): Remove usage
	of hsa_summaries.

gcc/ChangeLog:

2016-01-25  Martin Liska  <mliska@suse.cz>

	* hsa.c (hsa_summary_t::link_functions): Create IPA_REF_ADDR
	reference for an HSA kernel and its host function.
---
 gcc/hsa.c               |  5 +++++
 gcc/lto/lto-partition.c | 19 -------------------
 2 files changed, 5 insertions(+), 19 deletions(-)

diff --git a/gcc/hsa.c b/gcc/hsa.c
index ec23f81..f0b3205 100644
--- a/gcc/hsa.c
+++ b/gcc/hsa.c
@@ -781,6 +781,11 @@  hsa_summary_t::link_functions (cgraph_node *gpu, cgraph_node *host,
   TREE_OPTIMIZATION (fn_opts)->x_flag_tree_loop_vectorize = false;
   TREE_OPTIMIZATION (fn_opts)->x_flag_tree_slp_vectorize = false;
   DECL_FUNCTION_SPECIFIC_OPTIMIZATION (gdecl) = fn_opts;
+
+  /* Create reference between a kernel and a corresponding host implementation
+     to quarantee LTO streaming to a same LTRANS.  */
+  if (kind == HSA_KERNEL)
+    gpu->create_reference (host, IPA_REF_ADDR);
 }
 
 /* Add a HOST function to HSA summaries.  */
diff --git a/gcc/lto/lto-partition.c b/gcc/lto/lto-partition.c
index eb28fed..9eb63c2 100644
--- a/gcc/lto/lto-partition.c
+++ b/gcc/lto/lto-partition.c
@@ -34,7 +34,6 @@  along with GCC; see the file COPYING3.  If not see
 #include "ipa-prop.h"
 #include "ipa-inline.h"
 #include "lto-partition.h"
-#include "hsa.h"
 
 vec<ltrans_partition> ltrans_partitions;
 
@@ -171,24 +170,6 @@  add_symbol_to_partition_1 (ltrans_partition part, symtab_node *node)
 	 Therefore put it into the same partition.  */
       if (cnode->instrumented_version)
 	add_symbol_to_partition_1 (part, cnode->instrumented_version);
-
-      /* Add an HSA associated with the symbol.  */
-      if (hsa_summaries != NULL)
-	{
-	  hsa_function_summary *s = hsa_summaries->get (cnode);
-	  if (s->m_kind == HSA_KERNEL)
-	    {
-	      /* Add binded function.  */
-	      bool added = add_symbol_to_partition_1 (part,
-						      s->m_binded_function);
-	      gcc_assert (added);
-	      if (symtab->dump_file)
-		fprintf (symtab->dump_file,
-			 "adding an HSA function (host/gpu) to the "
-			 "partition: %s\n",
-			 s->m_binded_function->name ());
-	    }
-	}
     }
 
   add_references_to_partition (part, node);
-- 
2.7.0