From: shankar AT chromatic DOT com (Shankar Unni) Subject: Re: Tiled memory 19 Mar 1997 15:20:52 -0800 Approved: cygnus DOT gnu-win32 AT cygnus DOT com Distribution: cygnus Message-ID: <33302968.3D15.cygnus.gnu-win32@chromatic.com> References: <199703180902 DOT KAA04866 AT truk DOT brandinnovators DOT com> 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 Original-CC: gnu-win32 AT cygnus DOT com Original-Sender: owner-gnu-win32 AT cygnus DOT com 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 () 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 shankar AT chromatic DOT com Chromatic Research (408) 752-9488 - For help on using this list, send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".