
CODE Frequently Asked Questions

  by Emery Berger (emery@cs.utexas.edu)
  
   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.
   
     _________________________________________________________________
                                      
Table of Contents:

     *
       
  General Questions
          + What is CODE, anyway? Where can I get it?
          + 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?
     *
       
  Future Plans
          + Are you going to support platform/architecture X?
          + What about animation and debugging?
       
     _________________________________________________________________
                                      
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 http://www.cs.utexas.edu/users/code.
     
       ______________________________________________________________
                                      
  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.
     
       ______________________________________________________________
                                      
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.txt,v 1.2 1997/03/16 04:10:27 emery Exp $
