Newsgroups: comp.parallel
From: furnish@dino.ph.utexas.edu (Geoffrey Furnish)
Subject: ANNOUNCE: AC++ 1.0 for the CM-5
Organization: Institute for Fusion Studies, University of Texas at Austin
Date: Thu, 9 Jun 1994 10:40:23 GMT

                            AC++ for the CM-5

This is to announce the availability of a new compiler for the CM-5,
called "AC++".  AC++ is an adaptation of GCC to support the CM-5
vector units from either C or C++.  If you want to program the CM-5 in
either C or C++, and need to use the vector units, this tool may be of
interest to you.  In particular, AC++ provides the full benefit of C++
object oriented programming without sacrificing the numeric
performance of the CM-5 vector units.  If you used GCC and CDPEAC
before, you might prefer this.  If you have been wondering when you'd
ever be able to program the CM-5 in an object oriented language AND
use the vector units, this tool may be of interest to you.

AC++ is based on AC, the vector unit capable version of GCC done by
Bill Carlson of the Supercomputing Research Center.  AC provides
access to the CM-5 vector units from C code.  AC++ adds that
capability to C++ code as well.

The AC/AC++ language consists of standard C/C++, plus language
extensions to support direct manipulation of the CM-5 vector units.  A
new type qualifier "aux" is provided to specify that a variable is to
have an instance in each of the four vector units on a node.  (Hence
the 'A' in the name).

For instance,
	aux int ai;
declares an integer variable ai which has a value in each vector unit.

'aux' can qualify any of the built in types, int, long, float, double,
as well as pointers to them and arrays of them.  You can also have aux
structs.

Operations on aux vectors use the vector units.  For example:
	aux int v[10];
	...
	v = v + 7;
will operate on the vector units to add 7 to each element of v in each
vector unit.  

The manual describes the language extensions and the use thereof, in
detail.

History and Availability:
AC was done by Bill Carlson at SRC.  Development of AC++ was funded by
Thinking Machines Corporation.  The result of this work, AC++ 1.0, is
available via anonymous ftp from think.com.

	/anonymous@think.com:/cm/ac++/ac++-1.0.0.tar.gz

Note however, that AC++ is NOT a product of Thinking Machines
Corporation.  In particular, Thinking Machines is graciously making
space available for the distribution of AC++ on their ftp site, but
provides no representation of the compiler's capabilities or support
for its use.

Contents:
The above file, ac++-1.0.0.tar.gz contains the full source for the
AC++ compiler, a precompiled version of libg++, and a manual.  If you
are the sort of person who builds new versions of GCC on your
workstation, then you can probably handle building AC++.  Otherwise,
ask your site administrator to install it for you.

The manual is provided in Postscript and in Emacs info format.  The
manual refers to AC++ as "Thinking Machines AC++", but as noted above,
this should only be understood as the Thinking Machines "distribution"
of AC++, not as a product of Thinking Machines Corporation.

Thinking Machines is also preparing (as a courtesy) an improved
version of the manual for use in CMView.  Ask your site administrator
to get it when available.

Current Status:
AC++ 1.0 is based on AC release "f1", which in turn is based on GCC
2.3.3.  It is noteworthy that both GCC and AC, have advanced
considerably since the versions on which AC++ is based.  

The basic C and C++ language support in AC++ 1.0 is identical to that
of GCC 2.3.3.  If you don't know the history of GCC very well, a short
summary would be that GCC 2.3.3 has:
	C support: excellent.
	C++ support:
		classes, virtual functions, etc all work.
		multiple inheritance works.
		overloading works if you don't push it too hard.
		iostremas work.
		templates are pretty flaky.
		exceptions aren't supported.

Future of AC++: 
The future of AC++ is uncertain.  Thinking Machines has opted not to
fund additional development of AC++ at this time.  It would obviously
be desriable to get AC++ up to current revs of GCC and AC.  If you or
your organization would like to see further development of AC++, you
are welcome to contact me.  We might be able to work something out.
Of course it is under GPL, so you can always take the source and run
with it...  Of course you have my permission :-), to contact your
favorite supercomputer vendor through your normal customer feedback
channels, and inform them of what you do and don't want in the form of
languages and programming support environments.

Support for AC++:
There is no formal support channel for AC++.  If a guaranteed support
mechanism is important to you or your site, you are welcome to contact
me.  We might be able to work something out.  Of course you can also
contact your favorite supercomputer vendor and inform them of what
services would be most valuable to you...

Conclusion:
AC++ provides a C++ compilation environment for programming the CM-5,
with language extensions for accessing the vector units.  With this
tool it is possible to develop high performance codes for the CM-5
using C++.  The compiler is available without cost via anonymous ftp.
The compiler supports a reasonable set of C++ features, including
virtual functions, mulitple inheritance, and method overloading as
well as C++ style i/o.

--
Geoffrey Furnish
UT Institute for Fusion Studies,  furnish@dino.ph.utexas.edu   512-471-6147
