CODE Frequently Asked Questions

by Emery Berger (

The most recent version of this document is always available from the CODE web site at

Please send corrections or suggestions to

Table of Contents:

General Questions

What is CODE, anyway? Where can I get it?

Here's the description from the Web page:

"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."

The latest released version of CODE and all available documentation, related papers, etc., are always available via the CODE web site at

Why would I want to use 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.

What kind of programs is CODE best for?

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.

How do you write a CODE program?

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.

Is CODE an acronym? What does it stand for?

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).

Platforms, Etc.

What platforms can CODE run on?

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.

What platforms can CODE produce programs for?

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.

Technical Questions

I've typed in some C code in a computation node, but CODE keeps giving me errors. What's going on?

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:

  • pre- and post-increment and decrement (i++, --j)
  • switch statements
  • for loops (you have to use while)
  • you can't use strings (that includes anything in quotes).
  • 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).

    Why won't CODE let me type in spaces or other characters for node labels?

    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.

    When I make the file, I get all kinds of errors. What's going on?

    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.

    Future Plans

    Are you going to support platform/architecture X?

    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.

    What about animation and debugging?

    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.

    @(#) $Id: FAQ.html,v 1.6 1997/03/12 23:59:47 emery Exp $