Subject: hpff-interpret: PNL align question

From: Mary E Zosel <[email-masked]>
Date: Wed, 7 Feb 1996 10:14:15 -0800

---------------------------------------------------------------------------
[email-masked] is a mailing list for corrections,
clarifications, and interpretations related to High Performance Fortran.
Instructions for adding or deleting yourself from this list appear at the
bottom of this message.
---------------------------------------------------------------------------

Matt ... I'm going to forward this to the hpff-interpret mailing
list.  In a quick reading of your message - it looks to me like you
need the "generalized block" feature that has been accepted as
a feature in the latest round of HPFF meetings  (but is likely  to be in
the set of features that has an uncertain future wrt implementation).
Someone else can comment if I've misread the question or if it needs
generalized block plus something additional.
   -mary-
----------------

Date: Wed, 7 Feb 1996 10:55:00 GMT
>From: [email-masked]
To: [email-masked]
Subject: hpf question

Mary,

Is there a mail alias for sending "how do I do this in HPF?" questions?
I have a problem that I strongly suspect is easily handled in HPF but
I can't figure it out from the manual. If you could let me know who to
send this question to, or answer it yourself, or forward it to the 
correct group, I'd appreciate it.

Thanks,

matt

I'm trying to figure out how to distribute two types of arrays to
minimize communication, the first has border elements and the second
doesn't. The first array is declared B(-2:nx+2, -2:ny+2, -2:nz+2) and
the second is declared A(nx,ny,nz). Array A should be distributed by
blocks in one or more dimensions and array B should be distributed
such that B(i,j,k) is on the same node as A(i,j,k) for 0<i<=nx,
0<j<=ny, and 0<k<=nz. The border elements should be on the nodes where
the neighboring non-border elements are. 

The align directive doesn't appear to work because the lengths of the
dimensions are not the same (page 34, line 42, version 1.1 of the
manual). I can't afford to put extra elements around A for several
reasons; A is really a 5D array and the extra storage would be large
(there are also lots of A's), for reasons of load balancing I
don't want the border elements included in how the block sizes are
computed and placed, and I don't want to rewrite all of the array
operations on the A arrays to not operate on any new borders.

This seems like a typical problem and I'm fairly sure it was discussed
at one time.

matt

([email-masked])

---------------------------------------------------------------------------
To (un)subscribe to this list, send mail to
[email-masked].
Leave the subject line blank, and in the body put the line
(un)subscribe <email-address>
---------------------------------------------------------------------------

---

From: [email-masked] (Chuck Koelbel)
Date: Wed, 7 Feb 1996 13:44:53 -0600

At 10:14 02/07/96, Matt Rosing wrote:
>...

In short, Mary's answer was correct.  To do precisely what you want, you
need the generalized block mapping.  Current thinking is that this will be
part of the "approved extended features" of HPF 2.0.  That means the syntax
and semantics will be defined, but vendors are likely to concentrate on the
core (aka kernel) features of the language first.

BTW, You can use ALIGN as follows:
        !HPF$ ALIGN A(i,j,k) WITH B(i,j,k)
Or
        !HPF$ ALIGN A(:,:,:) WITH B(1:nx,1:ny,1:nz)
The rule is basically that the array sections in ALIGN must conform, but
the align-target (B) doens't have to specify the whole array.  However,
this ALIGNment doesn't solve your problem with not counting boundary
elements in the block sizes.

                                                Chuck