HOWTO install ProtoMol ------------------------ USER INSTRUCTIONS ------------------- 1) Run one configure script for your platform: ./configure # tries to find best preset ./configure --with-aix-xlc # xlC for AIX with optimization flags ./configure --with-aix-xlc-mpi # xlC for AIX with MPI and optimization flags ./configure --with-gcc # g++ for generic with optimization flags ./configure --with-gcc-debug # g++ for generic with debugging flags ./configure --with-gcc-mpich # g++ for generic with MPICH flags ./configure --with-hpux-cc # aCC for HPUX optimization flags ./configure --with-hpux-cc-mpi # aCC for HPUX with MPI and optimization flags ./configure --with-icc # icc for generic with optimization flags ./configure --with-icc-mpich # icc for generic with MPICH and optimization flags ./configure --with-icc-mpich-debug # icc for generic with MPICH and debugging flags ./configure --with-irix-mipspro # CC for IRIX with optimization flags ./configure --with-irix-mipspro-mpi # CC for IRIX with MPI and optimization flags ./configure --with-ppc-xlc # xlC for PPC with optimization flags ./configure --with-sun-gcc # g++ for SUN with optimization flags 2) Run depend target to generate dependencies and compile the framework: make depend; make DEVELOPER INSTRUCTIONS ------------------------ 1) Run one configure script for your platform: ./configure --with-aix-xlc # xlC for AIX with optimization flags ./configure --with-aix-xlc-debug # xlC for AIX with debugging flags ./configure --with-aix-xlc-mpi # xlC for AIX with MPI and optimization flags ./configure --with-aix-xlc-mpi-debug # xlC for AIX with MPI and debugging flags ./configure --with-gcc # g++ for generic with optimization flags ./configure --with-gcc-debug # g++ for generic with debugging flags ./configure --with-gcc-debug-gdb # g++ for generic with debugging and gdb flags ./configure --with-gcc-mpich # g++ for generic with MPICH flags ./configure --with-gcc-mpich-debug # g++ for generic with MPICH debug flags ./configure --with-hpux-cc # aCC for HPUX optimization flags ./configure --with-hpux-cc-debug # aCC for HPUX with debugging flags ./configure --with-hpux-cc-mpi # aCC for HPUX with MPI and optimization flags ./configure --with-hpux-cc-mpi-debug # aCC for HPUX with MPI and debugging flags ./configure --with-icc # icc for generic with optimization flags ./configure --with-icc-debug # icc for generic with debugging flags ./configure --with-icc-mpich # icc for generic with MPICH and optimization flags ./configure --with-icc-mpich-debug # icc for generic with MPICH and debugging flags ./configure --with-irix-mipspro # CC for IRIX with optimization flags ./configure --with-irix-mipspro-debug # CC for IRIX with debugging flags ./configure --with-irix-mipspro-mpi # CC for IRIX with MPI and optimization flags ./configure --with-irix-mipspro-mpi-debug # CC for IRIX with MPI and debugging flags ./configure --with-ppc-xlc # xlC for PPC with optimization flags ./configure --with-pcc-xlc-debug # xlC for PPC with debugging flags ./configure --with-sun-gcc # g++ for SUN with optimization flags # We recommend for testing purpose to use debugging since it takes less time to compile. 2) Run depend target to generate dependencies and compile the framework: make clean; make depend; make We recommend to do a "make clean" since the dependencies are not always correctly encountered. Adding new files to the framework or the applications ------------------------------------------------------- 1) Add your new files to the Makefile.am in the same directory 2) Generate the new configure file: autoreconf -f -i --verbose or ./realmake # cleans up all and runs autoconf or if you do not have autoconf >= V2.53 aclocal; autoheader; autoconf; automake -a Adding new Makefile directories ------------------------ 1) You have to add your new Makefile filename relative to the root of protomol into configure.ac (at the end of the file), and the directory name parent to it. 2) Generate the new configure file as under addinf files. HOWTO set compiler flags -------------------------- This can be done if you don't want to use the --with-platform-cxx configure options Set CXX environment variable to the compiler you want to use (e.g. setenv CXX g++) Set CXXFLAGS environment variable to the compiler flags you want to use (e.g. setenv CXXFLAGS "-O3") Example: ./configure 'LIBS=-lm -lnsl' 'CC=/opt/scali/bin/mpicc' 'CFLAGS=-Wall -O9 -ffast-math -finline-functions -funroll-loops -DHAVE_APP_MPI -DHAVE_MPI -DNDEBUG' 'CXX=/opt/scali/bin/mpic++' 'CXXFLAGS=-Wall -O9 -ffast-math -finline-functions -funroll-loops -DHAVE_APP_MPI -DHAVE_MPI -DNDEBUG' '--with-fftw3=/local/fftw' For more detailed informations: ./configure --help Compiler troubles ------------------- If the check of your compiler(s) fails try another configurations or you may change/remove some compiler flags or libraries in ./configure.ac. If you have still have troubles to compile or run automake/autoconf take look at FAQ.compiler. If you have troubles to link/compile with external libraries you may look at test programs in compilerTests to figure out the compiler/library flags. Autoconf troubles / older versions ------------------------------------ configure.ac expects autoconf version 2.53 or higher, in order generate makefiles with older autoconf versions edit configure.ac and comment out what is below Autoconf 2.53 and uncomment below Autoconf 2.13 and copy configure.ac to configure.in You may also use a symbolic link to configure.in and use: aclocal; autoheader; autoconf; automake -a 64-bit -------- ProtoMol supports compilation of 32-bit and 64-bit. On AIX you change to 64 with: setenv OBJECT_MODE 64 PNG ----- The io library supports a PNG writer, but also PPM. GLUT ------ GLUT is a tool library to simplify OpenGL usage. FFT ----- ProtoMol supports different FFT interfaces: FFTW (version 3 and 2), ESSL (AIX), complib.sgimath (IRIX). You can specify your FFT of choice by --with-fft=[sgi|essl|fftw2|fftw3|zfft]. Use '--with-fftw3=' to specify install path of FFTW, ESSL and complib.sgimath are assumed to be at default locations. If you do not have any of these FFT libraries, ZFFT is used by default, which is a subsitute for complib.sgimath. Note that ZFFT does not support all kind of numbers. Note that ESSL's FFT does not handle all kind of numbers. ESSL aborts with the error message "DCFT3 : 2538-2030 The transform length (ARG NO. 7, 8 or 9)", where 7 stands for the z-dim, 8 the y-dim and 9 the x-dim. http:://www.fftw.org Timing -------- wall : totale time, incl. initialization & IO run : running the simulation for n steps, incl. output integration : running the simulation for n steps, excl. output forces : evaluating the forces, excl. communication com : sending and recieving data idle : waiting for the master to send next work package and waiting for barrieres Parallel ---------- useBarrier : boolean =false : if MPI_Barrier should be called before global communication parallelMode : string : static, dynamic or masterSlave =static : static load balancing, no com. between master and slaves, only slaves =dynamic : master-slave, where the master does some work in-between, parallelPipe should be accordingly set masterSlave : pure master-slave, where the master serves the slaves maxPackages : int : max. number of work packages per node per force; increased packages, better load balance, but more communication parallelPipe : int : pipe size of packages send to each slave; increased pipe less idle slaves, but less load balancing NOTES ------- Don't worry if it's taking a long time to compile ... To clean the whole package: ./realclean Contact Information --------------------- protomol@cse.nd.edu.