Last update RRZ on R08/02/01 PARINT1.1 INSTALLATION GUIDE ================================== This file specifies how to install the ParInt1.1 release. The installation procedure is not very automated, but is fairly simple. Please direct questions and comments to Rodger Zanny at rrzanny@cs.wmich.edu. The desired version of MPI that will be used must previously be installed. ParInt1.1 has been tested under MPICH and LAM/MPI, though other versions of MPI that follow the MPI standard should work. The release is downloaded as a .taz or .tar.Z file. Select the location where you want to install the release and decompress and de-tar the files. (This installation guide assumes a directory of /usr/local/parint1.1.) Then follow these steps: 1. Editing installation parameters: ---------------------------------------- The top-level file make-include.mak must be edited by the user before the release can be compiled. The following are details on the variables in this file: PI_MPI_IHOME: This is the directory within the MPI release where the MPI header files can be found, specifically the file mpi.h. Use of this variable allows easier switching between versions of MPI. /usr/local/mpich/include CC: The release relies upon the MPI installation for a CC command that handles the MPI libraries. This variable should point to that CC command. If the command is on your path, then it need only be the command, else it should include the full path for the command. For MPICH, the mpicc script handles compiling; it can be found in the MPICH bin directory, for example: /usr/local/mpich/bin/mpicc _PI_HOME: This is the top-level ParInt directory. (Note the leading '_' distinguishes between this variable and the environment variable defined at login time (see below).) For example: /usr/local/parint1.1 PI_VRSN_HOME: This variable reflects possible changes in future releases, where there may be different 'versions' of ParInt (e.g., using MPI, PVM, etc...). For now, it should be set to the src/mpi directory under _PI_HOME, e.g.: /usr/local/parint1.1/src/mpi PI_IFCN_HOME: This variable should point to the directory where the user's integrand functions are stored. After the user has written some functions it can be changed and ParInt can be re-compiled to use the new functions. At installation time, it can simply point to the directory in which are stored the sample integrand functions, specifically the samp-fcns directory under _PI_HOME, e.g.: /usr/local/parint1.1/samp-fcns PI_IFCN_LIB: This variable holds the name of the .a file that archives the object files that make up the integrand library. As with PI_IFCN_HOME, it can be changed when the user writes integrand functions; at installation time it should reflect the default function library, e.g.: /usr/local/parint1.1/samp-fcns/pi-ifcns.a PI_SUNM_INC and PI_SUNM_LIB: These are used to allow for long double precision. If only double precision is used (the default) then they should be commented out. Otherwise, they need to be changed. Note that ParInt was developed on a Sun/Solaris system. On this sytem, support for long doubles was available only by using extra Sun math routines. These variable allow for the use of these routines. Long double support with ParInt has not yet been tested under other operating systems (Linux, etc...) so it is not yet clear how to enable long double support under these systems. The default values below reflect the standard installation values for these values: PI_SUNM_INC = -I/opt/SUNWspro/SC4.2/include/cc PI_SUNM_LIB = -lsunmath 2. Needed environment variables: ---------------------------------------- The second step is to add to the user's login process the setting of two environment variables. These variables reflect other variables in the make-include.mak file. The first variable is PI_HOME, and should have the same value as the _PI_HOME variable in make-include.mak. The second is PI_VRSN_HOME, and should have the same value as the variable of the same name in make-include.mak. These variables would be added to your .cshrc or .bashrc file, depending upon the shell you are using. If you want to be able to run the ParInt executable without having to specify a complete path, then add the ParInt lib directory to your path. (And recall that you need to re-login, or otherwise set these variables, before they can be used.) 3. Compiling: ---------------------------------------- Once steps 1 and 2 are completed, then the ParInt code can be compiled. The top-level makefile contains three targets of which the user needs to be aware: parint : This target compiles the parint executables, both parint and sparint. If necessary, the parint objects and integrand library are re-compiled. clean : This target removes all object files, library files, and executable files. It also calls a Makefile in the integrand function library directory to clean out files there. oclean : This target removes all parint object files; it also calls a Makefile in the integrand function library directory to clean out object files there. To first make parint, just execute a 'make parint' in the parint1.1 directory. Whenever you want to recompile parint (possibly when adding new integrand functions) you need only re-do the 'make parint' command. Only those objects that need to be compiled will be. If you are done adding integrand functions for a while, or you want to free up some disk space, then you can do a 'make oclean'. The executable will still be there, but all of the object files will have been removed. Use 'make clean' to wipe out all object and executable files. See the User Manual for more information on compiling user applications and writing integrand functions. Testing: ----------- To test the installation, run the ParInt executable with one of the sample functions. For example, if using MPICH, run (from the lib directory, or from anywhere if the appropriate directory has been adeed to your path): > mpirun -np 4 parint -f fcn7 This will integrate function #7 over the default integration region. (The answer is approximately 0.863046.) The same problem would be solved by the sequential version using: > sparint -f fcn7