[comp.sys.transputer] Transputer C compilers - revised survey

J.Wexler@edinburgh.ac.uk (11/25/88)

Here follows a revised report on my investigations into C compilers. (I also
asked about debugging facilities, and I may get around to reporting on that
topic in a week or so.)

Many thanks to all who responded to my request for information, and those who
told me where my previous report was wrong or inadequate.

I should have asked, but I didn't, what kind of model of concurrency is provided
by each implementation: occam-like, Unix fork-and-join, Ada tasking, ... ?

Patrick van Renterghem has already published much of the information through
this group, and I cannot summarise it or present it better than he has done.

Much of my own information is incomplete or unconfirmed.  This is indicated by
phrases such as "believed to be" and "I suppose".  I'd be grateful for any more
details or corrections which you can supply.

    John Wexler
    Edinburgh Concurrent Supercomputer Project
________________________________________________________________________

"Penguin" have changed their name and are now called Pentasoft.  The Penguin and
Pentasoft compilers are the same, and the Unidot compiler is the same again.
They have only a very few "compiler escapes" for low-level use of Transputer
features - i.e., below the level at which occam operates, and more like the
things one could do in assembler. These are not the sort of things that would
normally be recognised as "language extensions".  You think and program in
"ordinary" C.  You aren't expected to use the "compiler escapes" either, because
MACROS are provided which use the "escapes" to do all the useful occam-like
things. However, if you want to use them, the escapes are said to be very usable
and convenient.

Cornell's Trollius uses this compiler.  They have written a library of
functions to handle concurrency, and these functions use the macros which
in turn use the compiler escapes.

Logical Systems has a very good reputation for performance, and for having an
outstandingly good maths library. It uses a library of functions to support
concurrency; the language itself is standard and unextended.  However, the
compiler recognises many of the special functions as intrinsics, and generates
in-line code for them.  There are actually TWO sets of functions, to support two
different models of concurrency.  One gives an occam-like style (PAR, PRI PAR,
ALT, etc.), and the other is more like forking and joining with semaphores and
so forth.  I don't know what happens if you mix calls on the two sets of
functions. This one is a cross-compiler, supplied as C source code to run on a
system of your choice.  It does not generate modules compatible with Inmos'
linker.

The Logical Systems compiler is not at all expensive. Logical Systems market it
directly. It is also sold by Levco, CSA, ParaSoft and (badged) by Microway.
Furthermore, it is sold by Parsytec (who also, confusingly, sell the Parsec
compiler). Finally, there may be sombody called Micropar selling it.

3L parallel C has no syntactic extensions, so programs are lint-checkable. It
does have a special typedef for channels, "but it's really just a pointer", and
there are no special operations on that channel type. Concurrency (PAR) and
message-passing (input, output and ALT) are handled by a library of special
functions. The mechanism distinguishes two kinds of process, light- and
heavy-weight. Light-weight processes share code and data space (but not stack),
and I suppose that they are roughly the same as the things you would group under
PAR in occam. Heavy-weight processes seem to be more like the things you control
with PLACED PAR: they have to be configured by a special language outside C. The
compiler comes with a nice "flood-fill loader" which will rapidly load a copy of
a piece of code onto every processor in any network, automatically supplying all
the necessary code to implement a task farm.  This means that you don't have to
program a task farm yourself, and your compiled code is usable without
modification on any configuration on Transputers.

This compiler seems to be used by lots of people, and is marketed by Microway.
Microway also sell the 3L(ex Lattice Logic) straight C compiler (see below),
which causes some confusion. Microway have also badged Logical Systems'
compiler, so when people talk about "Microway's own" C compiler, they probably
mean Logical Systems'.

3L also do a straightforward non-parallel C compiler for Transputers.  This is
quite distinct from their parallel C. Originally it was a Lattice Logic product.
Inmos' C is this one.

Renishaw Controls have written a C compiler which is used on Meiko systems. This
is another more or less standard C which uses a library of functions to provide
control of channels and concurrency.  It is also usable in a style favoured by
Meiko in which one writes straightforward sequential procedures in C, and one
calls them from a main program written in occam and called a harness.  You can
write your own harnesses, but the good news is that you can get pre-written
harnesses which implement useful general styles of concurrency such as
task-farming.

Parsec is a Dutch company who have a parallel C compiler which is marketed by
Parsytec (who are not the same people at all).  The language is called Parallel
C, and it really does have language extensions.  It includes all of K&R C, with
H&S extensions, but it also embodies the occam concurrency features in the
language.  This seems to be the only implementation which takes such a bold line
(apart from the related Definicon compiler - see below). This compiler comes
with a loader which automatically analyses any network of Transputers while
loading is going on, and leaves a complete "map" of the network in the memory of
every processor where the application program can find it.

Apparently, the Parsec compiler derives from something produced by a compiler
done by a "Dutch Techno-Commune". The Definicon C compiler is also descended
from this one "on a different evolutionary path", and it also uses language
extensions. My previous notion that it was the same as Logical Systems' is not
correct. Just to confuse matters, Definicon also sell the 3L compiler...

One correspond guesses that a reputed "Norcroft compiler" may be the same as
3L's compiler. However, Ian Young (of 3L) says: "Norcroft don't (as far as I am
aware) do a transputer compiler, although they did license their C front-end to
Perihelion, who have made a transputer compiler based on it.  This is the
compiler used in Helios."

I have not heard of any other C compilers.  I haven't followed up the story
of who uses or sells whose compiler and what names or badges they attach to
the compilers.  There is still a lot of confusion to be cleared up in that
area.
________________________________________________________________________
Several contributors included a disclaimer such as "Any statement appearing here
represents my own opinion and should not be construed as any sort of official
position or opinion of my employer."