Subject: Re: Tiled memory
From: [email-masked] (Shankar Unni)

19 Mar 1997 15:20:52 -0800
Approved: [email-masked]
Distribution: cygnus
Message-ID: <[email-masked]>
References: <[email-masked]>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: Mozilla 3.0Gold (X11; I; SunOS 5.5.1 sun4u)
Original-To: Hans Zuidam <[email-masked]>
Original-CC: [email-masked]
Original-Sender: [email-masked]

Hans Zuidam wrote:

> Isn't there some work going on among the super-computer people to add
> these kinds of extensions to the C language?  I vaguely remember
> reading about addition vector operations to C in an issue of Dr. Dobbs
> a long time ago.

There are two different initiatives going on.

One is a set of "Numerical Extensions" to C (a subcommittee of ANSI
X3J9). No idea what the state of this proposal is today (there was some
progress as recently as a year or two ago).

Another proposal is a set of extensions called "HPC" (analogous to the
HPF extensions to Fortran - "HP" stands for High Performance). I know
that the Univ of Illinois (Urbana) was involved in this, as was Cray and
some other participants. 

Both have their good and bad points. I'm not a big fan of the pragma
approach to extending the language, which is what HPC is doing - the
goal there is to write C code in a vanilla fashion, but splatter it with
pragmas like "#pragma doacross blah blah", which tells a smart code
generator and optimizer to tile the loops in a particular fashion, but
lets the code compile on "plain" C compilers by just stripping out or
ignoring the pragmas.

The Numerical Extensions group is actually proposing syntax extensions
like array slices, arrays as first class objects, etc., which actually
sound more elegant, but which will require a fair amount of work to
existing compilers to accommodate.

What Chin (<[email-masked]>) is proposing is sort of a middle ground:
extensions to the language in the form of new predefined types or
qualifiers (only), and some tweaks to the language operators to
recognize these types and generate MM instructions for them. The
attractive thing about this is that it's possible to implement with very
little effort in something like, say, GCC or LCC, and is still useful
enough for programming tight, well-controlled multimedia loops with only
a small expenditure of effort on the part of the programmer.

After all, you *do* have to think of the nature of your data anyway -
it's foolish to let the compiler do all of your thinking for you and
expect it to figure out automatically which variables are streaming
multimedia data, which are an ordinary vectors, and which are simply
arrays of quantities..

-- 
Shankar Unni                                  [email-masked]
Chromatic Research                            (408) 752-9488
-
For help on using this list, send a message to
"[email-masked]" with one line of text: "help".