next up previous contents
Next: Basic paratec usage Up: Paratec 5.1.12 Documentation Previous: Contents   Contents

Subsections

How to get and run paratec

Where to find paratec

At the moment, there is no standard repository for paratec. $\ddot\frown$ Interested users can contact David Raczkowski at dbraczkowski@lbl.gov or Andrew Canning at canning@nersc.gov

Paratec documentation can be found on the web at
http://www.nersc.gov/projects/paratec

How to run paratec

Input files

Required files:

paratec             the executable
input               the input file
Si_POT.DAT          the pseudopotential files
O_POT.DAT           ...

Output files

STRUC_CONVERGE    contains the progress of the structural relaxation
STRUC_LOG         a detailed log about the relaxation steps performed
ELASTO_PHONON     information from the H matrix: Bulk modulus, phonon
frequencies
PW_LOG            a log about all the PW calls done
OUT               output file of the current plane wave job
CHECKPOINT        contains all the information to continue a
                  structural relaxation. Also has the Hessian matrix
*.dx              files for visualization with the IBM Data Explorer
*.kh              files for visualization with Khoros

Note: As of paratec 4.5c, the output file OUT._0 has been changed to OUT.

How to compile and run on different machines

Having obtained a gzipped tar file of the source e.g. paratec.xxx.tar.gz, unpack the source by typing
gzip -d -c paratec.xxx.tar.gz | tar -xf -

Then enter the paratec directory and run the configuration script by typing
cd paratec
./configure

For a summary of the options accepted by the global Makefile, see Table 1.1 or just type
make


Table 1.1: Options for global Paratec Makefile
Option to make Function
paratec Build Paratec
tools Build related tools
html Build HTML documentation
microbench Build microbenchmark for FFTs and MMMs
clean Remove object and test files
dist Change version number and pack into a tar file
dist-pub above plus removes NMR and TDDFT code


The machines currently supported are listed in Table 1.2 for reference. For each machine, a working directory in the source tree is created e.g. paratec/src/para/machine where the value of machine is given in the second column of Table 1.2. The binary files are placed in paratec/bin/machine. This facility allows the same source tree to be used by more than one machine simultaneously without any conflicts arising between object files.


Table 1.2: Machines currently supported
Machine machine Description
Sun sun Sun
IBM RS6000 rs6k Single-node IBM RS6000
IBM SP2 sp2 IBM SP2 at Cornell
IBM SP3 (NERSC) sp3 Glen Seaborg at NERSC
IBM SP3 (NPACI) sp3 Blue Horizon in San Diego
Cray T3E t3e Cray T3E at NERSC
SGI o200 sgio200 SGI Origin 200
SGI o2000 sgio2000 SGI Origin 2000 at NCSA
SGI PowerChallenge sgipc SGI PowerChallenge at NCSA
HP/Convex Exemplar cvx  
Linux x86 I386 Linux on x86
DEC Alpha alpha DEC Alpha
Hitachi SR2201 sr2201 Hitachi SR2201 at Cambridge
SGI o2000 hodgkin SGI Origin 2000 using new libraries


Some tips on porting paratec

Due to heavy use of optimized library routines, paratec is not easy to port. Here are some steps on the way to port to a new architecture.

  1. go into the config directory, and copy an established sysvars.machine and blurb.machine. Edit to meet your needs. The blurb file is displayed during configuration, and can be empty.
  2. Edit the "configure" script to include the new machine.
  3. Have a look at the files below...

Files in src/para

File advice
flibcalls.m4h Has some system dependencies on the use
  of blas routines, i.e Cray versus the
  rest of the world. Will most likely need
  no changes.
all_to_all.f90p May need some tweeking if there are hickups
data_gather.f90p in the MPI implementation. Look for the
gspace_gather.f90p machine-specific ifdefs there. Most likely will
isort_gather.f90p need no changes.
setup_packinfo.f90p  
symmetrize_tensor_global.f90p  
zdiag_scalapack.fp Scalapack on the Cray uses Shmem, and that
rdiag_scalapack.fp requires some ugly workarounds.

file in src/macros/fft

fft_macros.m4h

This one is quite a pain, especially since it uses m4. The standard quotation characters `' have been replaced by []. The file fourier_transform.f90p gets preprocessed into fourier_transform.p.f90. To check correctness of the macros, look at fourier_transform.p.f90 Look up the man on the fourier transforms (e.g man fft), add new macros accordingly to fft_macros.m4h.

Don't forget to provide for workspace in fft_workspace.fp90, and for a list of acceptable FFT lengths in adjust_fft.f90p. Once you have that done, you are through the worst. Have a look at fourier_transform.f90p. If the fourier transform interfaces are awkward, you might have to make some changes there as well. Make use of optimized routines to perform the convolution, rather than using the vanilla loop. Try if the preprocessor option FAST_CONVOLUTE results in any speedup - it usually does for machines where no multiple-FFT routines are available.

At some point, the code was running also on cray vector machines. This is no longer the case, although still all the code is there, and it should not be too much work to get it going again.

Tips on porting FFTW

FFTW (the Fastest Fourier Transform in the West) is a nice highly optimized portable FFT library. Paratec can now be compiled to use FFTW on platforms where it is available with only minimal changes needed. This should make it easier to port paratec.

To make FFTW work on a new platform, make sure the sysvars file includes the path of the FFTW library (for example, see sysvars.sgio200). Secondly, you must make sure that if the platform also supports a native FFT package that M4FFTFLAG is defined (again, see sgio200), and that adjustfft.fp uses that value.

I think that is all that should be needed.

How to change paratec

If you make a change to paratec, please make note of the change you make in the CHANGES file. This way you (and others) can tell what has changed in each version.

When you want to archive a version of the code, or give it to someone else, use the make dist target of the makefile. This saves only the necesary files, and not all the object files or binaries you may have generated. It then tars up the results and gzips them for your convenience. Use make dist-pub if you have the full version ( with NMR and the untested td-dft), and you want to strip the code of these parts.

make dist also prompts you for a new version number. It modifies the current version number (which is printed out in the OUT and PW_LOG files, and shows up at the top of this documentation. It also updates the time stamp, which shows up in the OUT and PW_LOG files. Then it names the tarball after the new version number. You can, of course, give it the same name as the old version, but if you change the number you will be able to keep track of which binary originated from which version of the code.

WARNING! make dist assumes your source code directory is called ``paratec''. If you keep it in a directory with any other name, these may end up saving the wrong source code, or doing something else nasty.

If you add a new file to paratec, make sure to add it to the lists in the Makefile for the dist target.

Changes in Paratec 5.0

On the whole, paratec 5.0 uses the same input files as earlier versions of paratec. However, because the input code was completely rewritten in FORTRAN 90, several of the input structures have changed. This is where you look to find out what changes you will have to make to your input files. A more comprehensive list can be found on the home page


next up previous contents
Next: Basic paratec usage Up: Paratec 5.1.12 Documentation Previous: Contents   Contents
David Raczkowski 2003-11-25