PGL 1.1.2
Release Notes

February 1997

PGL Home Page
PGL Handbook

Table of Contents


What's New?

Release 1.1.2 of the PGL software system supercedes all previous versions, and is the first publicly-available, non-beta release of the software.

The most notable changes since Release 1.0e include:


Supported Platforms

This release of PGL has been developed and tested on the Intel Paragon under system software release 1.4.2 and on the IBM SP2 under AIX 4.1.3.3 and PSSP 2.1. Support for the Intel iPSC/860 has been dropped. Uniprocessor versions of PGL are also supported for Sun 4 architectures under SunOS 4.1.3 and 5.5.1, and on SGI platforms running IRIX 5.3. Correct operation under other OS versions is probable, but has not been thoroughly tested.

The uniprocessor versions of PGL may be useful for initial development and debugging of codes which will ultimately be ported to parallel platforms. The uniprocessor versions also include the executables required for workstation-based image display (ymfd and ymovie) and interaction (duid and dui).

The PGL software distribution uses the following platform identifiers:

  • paragon - Intel Paragon.
  • sp2 - IBM SP2 w/ MPI.
  • sun4 - Sun SPARC w/ SunOS 4.1.x.
  • sun4_5 - Sun SPARC w/ SunOS 5.x.
  • iris4d - SGI MIPS w/ IRIX 5.x.

  • Organization

    PGL is intended to be portable across a range of distributed-memory message-passing systems. The directory organization reflects this, with platform-specific header files, libraries, and executables. For example, an installation directory tree constructed for the Intel Paragon might look something like the following:
         PGL/app-defaults
         PGL/docs
         PGL/examples
         PGL/paragon/bin
         PGL/paragon/include
         PGL/paragon/lib
    
    The app-defaults, docs, and examples directories are common to all PGL platforms. The include, lib, and bin directories are platform-specific. For purposes of discussion, we will assume that the environment variable PGLDIR points to the top-level PGL directory, e.g.,
    setenv PGLDIR /usr/local/unsupported/PGL
    The app-defaults directory contains default X resource files for the X-based display utilities. These should either be copied into your local /usr/lib/X11/app-defaults directory, or else you should set your XAPPLRESDIR environment variable to point to them:
    setenv XAPPLRESDIR $PGLDIR/app-defaults
    The docs directory contains extensive HTML documentation for all of the major PGL components. For each supported architecture, there exist include, lib, and bin directories. The include directory contains header files needed by programs that call the PGL, PVL, POL, and DUI libraries.

    The lib directories contain the libraries themselves, libPG.a, libPV.a, libPO.a, and libDUI.a. Programs should normally link against these libraries for production runs. Debug versions of the libraries are also available, and should be used during initial development and testing of PGL programs, or whenever an application encounters problems which appear to be PGL-related. The debug versions are denoted by the letter "d" appended to the library name: libPGd.a, libPVd.a, libPOd.a, libDUId.a. The debug versions are compiled with the appropriate options (e.g., -g) for use with system debuggers, and also contain extensive internal consistency checks. The debug libraries run much more slowly than the standard libraries, which are compiled with full optimization.

    An instrumented version of the PGL library is also available which collects extensive statistics about the rendering process. This library has an "m" designation (libPGm.a). The performance instrumentation has been designed to be as inobtrusive as possible, and generally adds only a modest overhead to the execution time. Routines are provided to control what information is collected and to retrieve and process the accumulated results.

    The bin directory contains executables for the YMF image conversion and display utilities, the DUI daemon (duid), and the default user interface program (dui). ymfd, duid, and dui are built and installed only for the workstation (Sun and SGI) versions of the system, since they are not intended for use on the parallel platforms.

    To access the executables, you should add the bin directory to your search path:

    set path=($path $PGLDIR/$ARCH/bin)
    where ARCH is set to one of the pre-defined platform identifiers.


    Requirements

    To build PGL, you must have an ANSI-compliant C compiler. Depending on the platform you are using and which utilities you want to build, you may also need client libraries for the X Window System (X11R5 or later) and Motif (1.1 or later).


    Installation

    PGL is distributed as a compressed tar file, e.g., PGL-1.1.tar.Z. The first step is to extract the contents. To do this, cd to the directory where you want to put the PGL source, e.g., /usr/local/src. This should be on the same platform for which you intend to build PGL. Then
    zcat PGL-1.1.tar.Z | tar xvpf -
    This will build a subdirectory called PGL-1.1. We will refer to this as the top-level source directory.

    The next step is to edit the configuration files to suit your local environment. These are found in the top-level source directory. There are two files of interest, platform.conf and site.conf, where platform is the platform identifier for the system on which you are building PGL.

    The platform.conf file contains platform-specific definitions for things like the compiler name and options, library pathnames, etc. The site.conf file is used to define where include files, libraries, executables, documentation, etc. should be installed. In most cases all you should need to do is define DESTDIR to point to a top-level installation directory. Depending on your local configuration, you may also want to redefine SRCDIR, DOCDIR, HTMLDIR, and EXAMPLEDIR.

    Next, you must build the top-level Makefile. In the top-level source directory

    make -f Makefile.master ARCH=platform
    where platform is the platform-ID for which you are building.

    Finally, you build everything. In the top-level source directory,

    make World |& tee make.World.out
    or something similar. This will build lower-lever Makefiles, create installation directories, and compile and install the libraries and utilities which make sense on that particular platform.


    Compiling and Linking PGL Applications

    The only special consideration when compiling and linking PGL applications is to make the header files and libraries available to the compiler. Something similar to the following should be included in makefiles for your PGL programs:
    
    PGLDIR = /usr/local/unsupported/PGL/platform
    PGLINCDIR = $(PGLDIR)/include
    PGLLIBDIR = $(PGLDIR)/lib
    
    ...
    
    myprog:  myprog.c
            $(CC) $(CFLAGS) -I$(PGLINCDIR) -o $@ myprog.c \
                  -L$(PGLLIBDIR) -lDUI -lPO -lPV -lPG -lm
    
    
    If you're not explicitly using PVL, POL, or DUI, the corresponding libraries may be omitted from the list. To use the debug versions of the libraries, include the "d" suffix (-lDUId -lPOd -lPVd -lPGd); for the instrumented version of the renderer use -lPGm.

    On some platforms, additional libraries may be needed for things such as socket routines. If you get unresolved references when try to link your PGL applications, check the appropriate platform.conf file to see what else is required. Additional examples can be found in $PGLDIR/examples/Makefile.


    Example Programs

    When PGL is installed, the source code for several example programs is placed in the directory $PGLDIR/examples. The corresponding executables are placed in $PGLDIR/platform/bin/examples. The three programs are: Procedures for initiating parallel jobs vary among platforms and sites. Consult your local documentation for specifics. All three programs require ymfd to be running on your workstation before they begin execution; DUIgrid also requires duid to be active.

    rand4 will run on an 8-bit display, while grid and DUIgrid are configured to use 24-bit color. The X11 utility xdpyinfo may be used to determine the visual types which are available on your display. (ymfd will complain if it can't find an X visual with the appropriate characteristics. We suggest directing stdout and stderr of ymfd and duid someplace where it will be visible, such as a console or terminal window.)

    Suggested invocations of the example programs are given below. Rendering performance will be better with larger numbers of processors, although network bottlenecks may limit the display rate. We recommend a minimum of 4 processors for rand4, and 16 or more processors for grid and DUIgrid.

    Note that the first two examples (rand4 and grid) require a device pathname, in this case the remote display daemon (a file pathname on the parallel system would work, too). DUIgrid, on the other hand, only wants the name of the remote workstation, which it assumes will be running both ymfd and duid.


    Performance Notes

    Paragon

    SP2


    Known Problems and Limitations

    Paragon

    SGI

    Sun Solaris


    Copyright © 1989-97, Thomas W. Crockett and the Institute for Computer Applications in Science and Engineering.