Subject: Re: data mapping transformation for hpfA

From: Zheng Gengbin <[email-masked]>
Date: Thu, 22 May 1997 08:39:16 +0800 (EAT)

The task of trans1 is just to do data mapping to those arrays which 
have not been data mapped . The reason is that in HPF program , any array
is thought to have some mode of data mapping . As to the arrays without
explicit data mapping , compiler should decide a method of data mapping for
them . That is what trans1 does . 

On Wed, 21 May 1997, Guansong Zhang wrote:

> Please check the ge.2.f and ge.2.1.f:
> 
> diff ge.2.f ge.2.1.f
> 
> 2a3,6
> > !HPF$      template TMP001(n)
> > !HPF$      distribute TMP001  (block) onto  p
> > !HPF$      template TMP000(n)
> > !HPF$      distribute TMP000  (block) onto  p
> 3a8,9
> > !HPF$      align vec (DM001) with TMP001(1*DM001+0)
> > !HPF$      align row (DM000) with TMP000(1*DM000+0)
> 7c13
> < !HPF$      align a (i,j) with temp(i,j)
> ---
> > !HPF$      align a (i,j) with temp(1*i+0,1*j+0)
> 
> in fact the vec and row should be non-partitioned array. It should not be
> distributed.
> 
> Another problem exist for lap.f
> 
> diff lap.2.f lap.2.1.f
> 1a2,6
> > !HPF$      processors PROC000(1:2,1:2)
> > !HPF$      template TMP001(2)
> > !HPF$      distribute TMP001  (block) onto  PROC
> > !HPF$      template TMP000(N,N)
> > !HPF$      distribute TMP000  (block,block) onto  PROC000
> 6a12
> > !HPF$      align D (DM001,DM000) with TMP000(1*DM001+0,1*DM000+0)
> 8a15
> > !HPF$      align toler (DM002) with TMP001(1*DM002+0)
> 12,14c19,21
> < !HPF$      align A (i,j) with TEMP(i,j)
> < !HPF$      align B (i,j) with TEMP(i,j)
> < !HPF$      align C (i,j) with TEMP(i,j)
> ---
> > !HPF$      align A (i,j) with TEMP(1*i+0,1*j+0)
> > !HPF$      align B (i,j) with TEMP(1*i+0,1*j+0)
> > !HPF$      align C (i,j) with TEMP(1*i+0,1*j+0)
> 
> trans1 add more than it should for D and toler. And it add more processor
> array, I think the problem has been fixed, I don't know why it comes back.
> 
> 
> Guansong
> 

***************************************************************************
*     Zheng Gengbin                 *                                     *
*                                   *                                     *
*  Dept. of Computer Science        *  Phone:  86-10-2585088              *
*         & Technology              *  Email:                             *
*                                   *      [email-masked]   *
*  Peking University P.R.China      *  Mail:                              *
*                                   *      Room 2106 ,Building 46,        *
*                                   *      Peking University, P.R.China   *
***************************************************************************

---

From: Zheng Gengbin <[email-masked]>
Date: Sat, 24 May 1997 08:43:02 +0800 (EAT)

On Thu, 22 May 1997, Guansong Zhang wrote:

> This is not correct. The array data without explicit mapping should be
> considered in the same as scalar replicated on each processor. When their DAD
> is needed, they should be collapsed on pcrc_grp_gloable.
> 
> So there should be no work in trans1 to do. Please change it. This is still the
> problem prevent us run ge.f.
> 

	I still insist that trans1 will check if all array have their 
data mapping directiuves . This unified form  is very important for 
trans0 to deal the data mapping directives smoothly . 

	Anyway , I can change my strategy , so that I will create an template
just as pcrc_grp_globe , and align those array without explicit data mapping
directive to that template replicately . SO what I don't understand is
where you create your pcrc_grp_globe , I grep this varaible in pcrc ,
but failed to find it.

Zheng