The most recent version of this document is always available from the CODE web site at http://www.cs.utexas.edu/users/code/FAQ.html.
Please send corrections or suggestions to emery@cs.utexas.edu.
Here's the description from the Web page:
The latest released version of CODE and all available documentation,
related papers, etc., are always available via the CODE web site at
http://www.cs.utexas.edu/users/code.
You might consider using CODE if you want to take a sequential program
and parallelize it or you just want to write a program that can run in
parallel on a multicomputer or SMP. CODE lets you ignore communication
and synchronization details and focus on exploiting the parallelism of
a program.
CODE is designed to support "coarse-grained" parallelism, meaning
that the chunks that run in parallel are fairly large. These chunks
are usually C functions, but they can be written in FORTRAN, C++, or
any other programming language that you can link into C.
The easiest approach is to start from a modular, debugged sequential
program. Then use CODE to describe the parallel structure you want,
and have the computation nodes call functions from the sequential
program.
Yes, CODE is an acronym. It actually stands for
"Computationally-Oriented Display Environment" (the first version of
CODE appeared in the mid-80's, when the visual aspect was the most
important part).
CODE should run on any UNIX system, and binaries will always be
available for Sun Sparcs. There is no reason it couldn't run on a
Windows box right now, but I haven't tried it. It can't be run on a
Macintosh right now, because it relies on a graphics package called
"Tix" which is unavailable for the Mac. However, I hope to remove this
dependency sometime in the near future.
CODE can produce programs for three varieties of architectures. First,
it can produce a purely sequential program that simulates
parallelism. Second, it can produce a version for shared-memory
multiprocessor machines that use POSIX threads, like the Cray J90 or
the Sun SparcCenters. Third, it can produce a distributed memory
version for PVM or MPI.
The language that CODE provides for computation nodes is an
extremely restricted subset of C. It is meant to serve as "glue",
allowing you to make some function calls and manipulate CODE
variables. It is not meant to be where you write your program.
Some of the key things you cannot do in CODE's mini-C:
There are no plans right now to enhance this language. You'll be
happier if you just use it as it was intended (trust me).
This one's in the manual. All CODE names must be valid C identifiers. This means they can't start with numbers or include spaces, dashes, etc. To simulate spaces, use the underscore, as in Start_Node.
If these "errors" are warning messages and the program compiles, don't worry about it. But, if the errors are coming from make, it's because you aren't using GNU make, which is required.
The "front-end" (the graphical user interface and the compiler) should
be able to run on any UNIX box, PC or (sometime soon) Mac. I am,
however, a UNIX programmer. If someone wants to help port CODE to any
of these platforms, I'd certainly appreciate it and even be willing to
lend a helping hand.
As for the compiled programs produced by CODE: If the platform is not
UNIX or UNIX-based, it's not likely. This means Windows 95 and the
MacOS are out. However, Windows NT and the "NeXT" MacOS ("Rhapsody")
are real possibilities. Ask, and ye may receive.
Yes and yes. The first part is pretty straightforward. The latter has
already been created for shared-memory multiprocessors but will
require some work before it is available. Extending it to distributed
memory will involve some serious work. Expect it in a later release.
Table of Contents:
General Questions
Platforms, Etc.
Technical Questions
Future Plans
General Questions
What is CODE, anyway? Where can I get it?
"CODE is a visual parallel programming system, allowing users to
compose sequential programs into a parallel one. The parallel program
is a directed graph, where data flows on arcs connecting the nodes
representing the sequential programs. The sequential programs may be
written in any language, and CODE will produce parallel programs for a
variety of architectures, as its model is architecture-independent."
Why would I want to use CODE?
What kind of programs is CODE best for?
How do you write a CODE program?
Is CODE an acronym? What does it stand for?
Platforms, Etc.
What platforms can CODE run on?
What platforms can CODE produce programs for?
Technical Questions
I've typed in some C code in a computation node, but CODE keeps giving me errors. What's going on?
Why won't CODE let me type in spaces or other characters for node labels?
When I make the file, I get all kinds of errors. What's going on?
Future Plans
Are you going to support platform/architecture X?
What about animation and debugging?
@(#) $Id: FAQ.html,v 1.6 1997/03/12 23:59:47 emery Exp $