Subject: about "do"

From: Shi Lixia <[email-masked]>
Date: Tue, 6 May 1997 10:22:57 +0900 (TAIDT)

So far, I has transformed "do" as follows:
        *************************************
                 do i=l,u,s
                    one assign statement
                 end do
        *************************************
        It seems like "forall". So my strategy is the same as forall's.
The result is as follows:
        *************************************
        pcrc_irg0=pcrc_new_range_loop(......)
        call pcrc_loop_bounds(......)
        ......
        if(pcrc_on(pcrc_grp(pcrc_sdd0))) then
             do i=0,(pcrc_liu_i-pcrc_lil_i)/pcrc_lis,1
                ......
             end do
        end if
        .......
        call pcrc_delete_range(pcrc_irg0)             
        *************************************
        
        You know , we don't consider data dependence. Yesterday Zheng and
I discuss this problem. If there is data dependence in "do", analyse data
dependence in transBD , eliminate dependence as possible as . Loop_carried
true dependence seems most difficult.

        Then "do" that has no dependence is transformed by trans0. 
        
        When there are many assign statements in "do", and there is no
dependence among these statements , we may split a "do" into many "do",
every "do" has only a assign statement. Then they still adopt strategy
as above.

        If dependence can't be eliminated from beginning to end , then
we will adopt most conservative strategy. That is to say, translate each
assign statement in "do" into "forall",( it can be done in transBD), then 
trans0 transforms "forall". In doing so, communication is added in loop.
I worry about that this kind of communication overhead will diminish 
system efficiency and performance. 

         Do you think so?
 
         I welcome to your advise.

shi li xia