SourceFiles.org - Use the Source, Luke
Home | Register | News | Forums | Guide | MyLinks | Bookmark

Related Sites

Latest News
  General News
  Reviews
  Press Releases
  Software
  Hardware
  Security
  Tutorials
  Off Topic


Back to files

#
# Source Version: 2.1
# Software Release #: UCRL-CODE-155969
#

                     A Field Guide to Installing PACT
                            on UNIX Systems

                          configure/make version

PACT (Portable Application Code Toolkit) is a set of libraries and utilities to facilitate the development of portable software systems. It has a bias toward scientific and engineering applications especially in terms of the data handling services. It also supports shared memory and distributed parallelism (although this is incomplete it is maturing and you may find what support there is to be useful).

Consult the PACT User's Guide which is included in the document distribution for some additional information.

PACT Web Site: http://pact.llnl.gov

The PACT team can be reached at 925-423-4889 during business hours (9am - 5pm Pacific Time), if you have questions on PACT and its installation.

TO INSTALL PACT

  1. Obtain the distribution file (e.g. pact-2.0.12.tar.gz) by some means, then do

-> tar xzvf pact-2.0.12.tar.gz

  • OR -

gunzip pact-2.0.12.tar.gz && tar xf pact-2.0.12.tar

-> cd pact-2.0.12

2) Next, run the configure script as

     -> ./configure --help
                          .
                 <usage summary>
                          .
                          .

Determine what options you would like to set, such as the install prefix and run the configure script again with those options. For example, to do a serial build that will be installed to /usr/local/pact you would run

-> ./configure --prefix=/usr/local/pact

Once PACT is configured, run make. On most systems, you should use 'gmake' instead of 'make' to make sure you are using GNU Make. At any time you may use 'gmake help' to see a help screen. To build PACT, proceed as follows:

-> gmake

OR

-> gmake -j N

where N is some small integer value (e.g., N can be 8) representing the number of processes to use to compile PACT (a parallel make speeds up the build).

Once PACT has been installed, you can run the test suite to determine if it has been built successfully

-> gmake check

Then PACT can be installed by doing

-> gmake install

Although the amount of disk space which PACT takes up varies here are some rough guidelines for a RISC system (CISC systems will use less space):

          PACT Executables:  8 MBytes
          PACT Libraries:   12 MBytes
          Other PACT Files:  1 MByte

3) If the installation failed skip over to step (4).

Now that PACT is installed. You need to set two environment variables in order to use ULTRA, SCHEME, SX, PDBVIEW, or PDBDIFF. The SCHEME and ULTRA environment variables must be set to point to the directory in which the scheme files were installed. The default for this directory is /usr/local/scheme and in the above example it would be /usr/local/pact/scheme

C Shell:

     -> setenv SCHEME /usr/local/pact/scheme
     -> setenv ULTRA /usr/local/pact/scheme

Bourne Shell:

     -> export SCHEME="/usr/local/pact/scheme"
     -> export ULTRA="/usr/local/pact/scheme"

These should probably be put into your .cshrc or your .profile so that they appear when you log into your system.

The PACT documentation has additional information about these environment variables. This example will serve to get you started.

4) If everything has completed successfully, you are done and PACT is

installed on your system. Otherwise you have some work cut out for you. Here is some guidance for trouble shooting. We start off with a partial list of assumptions (we try to have as few of these as possible).

ASSUMPTIONS ABOUT UNIX SYSTEMS

  1. You have configured your environment for code development. This means that you have your path set to find compilers and debuggers, that your manpath is right to access man pages on development tools such as the compiler.
  2. You have the Bourne Shell (/bin/sh) on your system.
  3. You have X Windows on your system.
  4. You have GNU Make (or a make that is GNU compatible) on your system.

WHAT TO DO TO GET PACT TO BUILD

  1. Read the sections below to orient yourself to the organization of PACT. If you can't get PACT to configure you can try to modify the Makefiles in each sub-directory, and run make over them by hand. This should be done in the order stated below with SCORE first and ULTRA last.
  2. If PACT fails to configure itself, you will need to determine what parts failed and rectify them. If a library was not found, try specifying the root path to the include and lib directories, such as

-> ./configure --with-pthread=/usr/local

if libpthread is installed in /usr/local/{include,lib} on your system.

C) If there is a problem compiling some part of PACT and you change the

      sources to correct the problem, then just re-run gmake from the top
      level directory. 

D) Once PACT is built properly, test the distribution as follows:

-> gmake check

PARALLEL PACT ISSUES

PACT can be built with or without knowledge of parallel programming considerations. With regard to SMP parallelism it can be: unaware of threads; simply thread safe; or actively using threads. It turns out that two common SMP standards, pthreads and OpenMP, do not always work well together. This seems to be mainly due to vendor implementation issues. Nevertheless, when you are building PACT you should be aware of this so that you can build the PACT libraries to suit your needs.

To configure PACT to use MPI, specify this during configuration

-> ./configure --with-mpi

You must have an MPI library installed on your system to do the above. If it is installed in a non-standard location you may need to specify this to configure

-> ./configure --with-mpi=/usr/local/mpi

Similarly for pthread and mp (OpenMP), you may use --with-pthread and --with-mp to build in threading support using one of those libraries. See the configure help screen for all available configuration options

-> ./configure --help

If PACT has been configured for pthreads, then the libraries will have names like, libscore_r.a where the "_r" follows a common convention employed by vendors. On the other hand, if PACT is configured for compatibility with OpenMP compilers/libraries, then the libraries will have names like, libscore_s.a where the "_s" indicates the distinction. A non-SMP version of PACT will have libraries with names like libscore.a.

BUILDING SHARED LIBRARIES

TODO: Make libtool builds support shared libs

MULTIPLE PLATFORM INSTALLATIONS

If you have a network setup in which you have a single network path (independent of node) to the PACT sources, you can build PACT for each machine type on your net by doing configuring and building in a different directory on each platform. This creates separate bin, lib, include, and scheme directories for each platform and keeps machine dependent files (libraries, executables, etc) out of the source directories and in the machine dependent ones.

Perform the following steps (assuming for example that the sources are in some/path/here/pact-2.0.6 on all platforms):

  1. Create the build dir

    -> cd some/path/here/pact-2.0.6 -> mkdir build

  2. For each platform:
    1. log onto the platform
    2. go into the build directory you created (assumes cross mounted NFS or similar)

      -> cd some/path/here/pact-2.0.6/build

    3. create a local build directory

      -> mkdir machine-name-here -> cd machine-name-here

    4. configure the local build

      -> ../../configure --prefix=path/to/install/dir

    5. compile, install, and test PACT

      -> gmake -> gmake install -> gmake check

      the last two can go in either order

If any there are any problems with (2-e) see the trouble shooting discussion in the TO INSTALL PACT section.

BACKGROUND AND ORGANIZATION OF PACT

PACT includes the following software libraries and applications:

SCORE - a low level, environment balancing library

   PML      - a portable math library
   PDB      - a portable binary data base management library
   PPC      - a portable process control library
   PGS      - a portable graphics library

PANACEA - a portable numerical simulation code development system SCHEME - a portable Scheme interpreter SX - Scheme with extensions (PDBVIEW is an SX program) ULTRA - a 1d presentation, analysis, and manipulation application

In the standard distribution each of the components resides in a subdirectory of the main pact directory. In addition there is a subdirectory called config which contains various configuration files and shell scripts to automate the installation of PACT. In the following discussion, it will be assumed that there is a base directory called pact which is a subdirectory of some other directory such as /usr/local/src, so that when the directory score is referred to as pact/score, the directory /usr/local/src/pact/score is meant.

C ENVIRONMENT PARAMETERS

For those parties interested in altering the configure.in file, we will define the meaning of each of the MACROs used in conditional compilation of PACT.

ANSI

Conforming to ANSI C (this is the default).

ANSI_F77

Conforming to ANSI FORTRAN 77. Specifically, this means that when calling FORTRAN routines from C or C routines from FORTRAN, the compiler maps names to all upper-case.

byte

Type is "void" if supported (default for ANSI compilers), type is "char" if no voids

UNIX

UNIX/POSIX Operating System (as opposed to DOS or MAC).

X11R4

PACT uses X11 R4 or later graphics

AIX

This indicates the IBM UNIX variant.

BINARY_MODE_R

Binary file mode parameter for read only mode. Default is "rb".

BINARY_MODE_RPLUS

Binary file mode parameter for open for update mode. Default is "r+b".

BINARY_MODE_W

Binary file mode parameter for create mode. Default is "wb".

BINARY_MODE_WPLUS

Binary file mode parameter for create for update. Default is "w+b".

BSD

This indicates the presence of BSD UNIX 4.2 or later.

DOS

This indicates the presence of IBM or Microsoft DOS.

FIXNUM

C type corresponding to FORTRAN integer. Defaults to long. Don't set this.

HAVE_MPI

Indicate the presence of the MPI parallel message passing system. This tells PACT to use MPI for some internal purposes as well as supporting applications which want to use PACT in a distributed parallel mode.

HAVE_NO_RUSAGE

Indicate the absence of the "getrusage" utility which provides information about resource utilization.

HAVE_NO_SIGFPE

Indicate the absence of the floating point exception handler package.

HAVE_SELECT_P

Indicate the presence of a working "select" system call iff there is no working STREAMS package available.

HAVE_SOCKETS_P

Indicate the presence of a working socket library. If you have X windows you have this.

HAVE_STREAMS_P

Indicate the presence of a working STREAMS package.

HPUX

This indicates the HP UNIX variant.

HYPOT

This allows the user to specify a routine to be used in place of the standard math library's "hypot". The PACT routine PM_hypot may be used here, or the user may provide their own.

LINUX

This indicates the presence of the LINUX OS.

MAC

This indicates the presence of Apple Macintosh OS.

MPW

This indicates the presence of MPW C 3.0 or later.

MSC

This indicates the presence of Microsoft C 5.0 DOS (16 bit) or later.

OSF

This indicates the presence of the OSF OS.

OSFG

This indicates the presence of the OSF OS with GCC.

POW

This allows the user to specify a routine to be used in place of the standard math library's "pow". The PACT routine PM_pow may be used here, or the user may provide their own.

PTHREAD_DRAFT4

This indicates the presence of a POSIX DRAFT 4 compliant thread library for the system. This is one of the thread standards which PACT can use to support shared memory parallel applications.

PTHREAD_POSIX

This indicates the presence of a POSIX compliant thread library for the system. This is one of the thread standards which PACT can use to support shared memory parallel applications.

PTHREAD_PSEUDO_SGI_SROC

This directs the use of the SGI sproc facility to emulate the pthread functionality used by PACT. This is one of the thread "standards" which PACT can use to support shared memory parallel applications.

RAND_MAX

This allows the user to set a value for the maximum value returned by the random number generator. It should only be used on systems where this value is not already defined. Check the man pages for "rand" to be sure.

REMOVE

This allows the user to specify a routine to be used in place of the standard i/o library's "remove". The PACT routine SC_remove may be used here, or the user may provide their own.

SGI

This indicates the presence of an SGI machine.

SIGNAL_FUNCTION

This allows the user to specify a routine to be used in place of the standard signal library's "signal". The PACT routine SC_signal may be used here, or the user may provide their own. (NOTE: SC_signal is a stub routine provided to prevent unsatisfied externals; it does not perform any actual signal handling.)

SOLARIS

This indicates the presence of the SOLARIS OS.

STRTOD_FUNCTION

This allows the user to specify a routine to be used in place of the standard math library's "strtod". The PACT routine _SC_strtod may be used here, or the user may provide their own.

SYSTEM

This allows the user to specify a routine to be used in place of the standard i/o library's "system". The PACT routine SC_system may be used here, or the user may provide their own. (NOTE: SC_system is a stub routine provided to prevent unsatisfied externals; it does not perform any actual system calls.)

SYSV

This indicates the presence of UNIX System V.

THINK_C

This indicates the presence of Symantec THINK C 5.0 or later.

TURBOC

This indicates the presence of Borland C++ 3.0 DOS (16 bit) or later.

UNICOS

This indicates the presence of Cray Research C for UNICOS.


Other Sites

Discussion Groups
  Beginners
  Distributions
  Networking / Security
  Software
  PDAs

About | FAQ | Privacy | Awards | Contact
Comments to the webmaster are welcome.
Copyright 2006 Sourcefiles.org All rights reserved.