This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: More of a Loop distribution.

On August 14, 2015 4:59:07 AM GMT+02:00, Ajit Kumar Agarwal <> wrote:
>-----Original Message-----
>From: Richard Biener [] 
>Sent: Thursday, August 13, 2015 3:23 PM
>To: Ajit Kumar Agarwal
>Cc: Jeff Law;; Vinod Kathail; Shail Aditya Gupta;
>Vidhumouli Hunsigida; Nagaraju Mekala
>Subject: Re: More of a Loop distribution.
>On Thu, Aug 13, 2015 at 9:37 AM, Ajit Kumar Agarwal
><> wrote:
>> All:
>> Loop distribution considers DDG to decide on distributing the Loops. 
>> The Loops with control statements like IF-THEN-ELSE can also be 
>> Distributed. Instead of Data Dependency Graph, the Control Dependence
>Graph should be considered in order to distribute the loops In presence
>of control Statements.
>> Also the presence of multiple exits in the Loop can also be
>considered for Loop distribution transformation.
>> Thus the above transformation helps in the Libquantum benchmarks for
>SPEC 2006.
>> There are following articles that looks interesting to me.
>> "Loop Distribution in presence of arbitrarily control flow Ken
>> "Loop Distribution in presence of Multiple Exits Bor-Ming Hsieh
>> I don't think the loop distribution in presence of control flow is
>implemented in GCC/LLVM.
>> I think it is feasible to consider the above for the implementation
>in GCC.
>>>It's true that loop distribution does not try to distribute based on
>any control structure heuristics but it only considers data locality. 
>It does however already >>compute the control dependence graph (and
>uses it to add control edges to the DDG to properly add data dependence
>edges to uses of control statements >>necessary in partitions).
>>>So it should be a matter of specifying the proper set of starting
>statements it tries separating.
>>>Not sure which kind of distribution you are after, can you give an
>I would like to have a distribution of the loop having control flow.
>For example
>For (I = 2 ; I < N; i++)
>    If  (condition)
>       {
>  S1:         A[i] = ...
>  S2:        D[i] = A[i-1]...
>       }
>The above loop can be distributed with two loops having one loop with
>S1  inside IF and another loop with S2 with the IF.
>The two scenario can be true.
>1. The condition inside IF have a check on A[i] and is dependent on S1.
>In this case the distribution is difficult. And the above article
>From Ken Kennedy does store the partial results of comparison in
>an temporary array and that array is compared inside the IF
>Condition. This makes the loop distributed. This is what I was looking
>for which I found in the above article.
>2. The condition inside the IF in the above loop is not dependent on
>the S1 and S2 , and this case the loop can be distributed.
>In the above two scenario the GCC can't distribute the loop, as the
>control dependency graph ( control structure ) is not used.

The above loop can be distributed by gcc just fine.


>advantage of
>The above loop distribution makes the loop vectorizable which otherwise
>not possible due to presence of multiple statements inside the IF and
>Also may not be IF-converted due to presence of multiple statements. If
>we distribute the loop for the above two scenarios the individual loops
>in the distributed loop can be vectorized which is otherwise not
>Thanks & Regards
>> Thanks & Regards
>> Ajit

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]