Subject: Replication, etc.

From: Rob Schreiber <[email-masked]>
Date: Sun, 19 Jul 92 08:43:07 PDT

>>>>	From [email-masked] Fri Jul 17 13:38:43 1992

	     a.   What if I want ONE COPY PER PROCESSOR?   Replicating onto a template
	     is a funny way to express this.

	This is the intended semantics of replicated alignments, and in my
	opinion it is the only useful one -- why you would ever want more than
	one replica of the same datum on the same processor is beyond me!  If
	the current specifications don't make these intended semantics clear
	enough, maybe they need to be revised...

Okay, that was a weak argument.  I admit it!

	     b.   Replicating a sequential part (or all of) a COMMON block CANNOT BE DONE
	     using (RE)ALIGN because of (3) below.

	  3.   We are proposing to have sequential variables, and to allow them to be used
	  in some directives.   If I ALIGN a sequential variable to a template, the
	  effect will be to make the template sequential, too!   This is *not* desirable.

	Just a quick question: what is a "sequential template" and why don't I
	want to have one?  In other words, what am I allowed to do with other
	kinds of templates that I'm not allowed to do with sequential
	templates?  I don't understand the answers to these questions, and
	without understanding them, I don't understand why it's undesirable to
	allow the kind of alignment that you propose to outlaw.

We want to allow linear memory sequences to be distributed in the cyclic(k) 
manner onto one-dimensional processor arrangements.   Also, they can be replicated.
But they should not be aligned like this

        real onedim(1000)
   chpf$ sequence onedim
   chpf$ align onedim(i) with template(5000 - 4 * i)

This simplest thing then seems to be to disallow these things in alignment
directives.   On the other hand,

   chpf$ align onedim(i) with template(100 + i)    (only + 1*i allowed)

or

   chpf$ align onedim(i) with template(*, 100 + i, *)    

seems to be okay.  This DOES seem simpler than introducing replication
in DISTRIBUTE.   Does it make sense to the implementors?

Rob