HARLEM Development

From Harlem

Jump to: navigation, search

Contents

[edit] Getting HARLEM sources

[edit] Getting Sources from SVN

You can download latest source codes of HARLEM from SVN server:

svn --username user checkout https://crete.chem.cmu.edu/svn/harlemsvn/HAPACK

[edit] How to Compile HARLEM

Compilation is made with the help of autotools(autoconf and automake) on both platform. It is a simple 3 step process:

./configure
make
make install

But life is not easy you need to be sure that you have all libraries and programs, which is needed for HARLEM compilation. Check #External Libraries Used in HARLEM and #Programs Needed for HARLEM Compilation for current version of libraries and programs. In next sections the installation process will be described more detailed, including installation of extra libraries and programs.

[edit] Compiling HARLEM on Linux

Compiling stuff on Linux can be nice walk or nightmare, especially then the program depend on many libraries and other software. It is especially important to have exactly the same version of not standard libraries and programs, because their API can significantly vary from version to version. Here I will describe how to build HARLEM on linux from beginning to the first execution. You can check using which compilers and Linux distributives works fine, others was not checked.

[edit] Catalog Structure

We found convenient to store sources separately from objective files, this is especially convenient if you have several versions of program (debug version, different optimizations, different compilers). The next is example of directories:

  • HAPACK - sources
  • HAPACK_BLD - directory for building HARLEM
    • GCC - compiled with gcc
    • GCCDeb - compiled with gcc for debugging
  • HAPACK_DEP - extra library, if you want to have sources or don't want to install them into /usr/local

[edit] Step 1. Getting Sources

Download source codes of HARLEM from SVN server:

cd /home/username
svn --username username checkout https://crete.chem.cmu.edu/svn/harlemsvn/HAPACK

After executing this all HARLEM sources will be in /home/username/HAPACK

[edit] Step 2. Get/Check Libraries

We will store all libraries, which is not present at you distributive or have different version, in /home/username/HARLEM_DEP. We need to create it first:

cd /home/username
mkdir HARLEM_DEP
cd HARLEM_DEP

[edit] wxWidgets

wxWidgets is a cross-platform library for creation graphical user interface (GUI). It is used in HARLEM for creation all windows, dialogs, buttons and other interfaces.

We will conside 3 ways to install it.

[edit] Where on Hercle Cluster

Last version of wxWidgets is in the /usr/local, thus if you compile HARLEM on Hercle HARLEM configure script should find it.

[edit] Using Software Manager

You can use software manager of your linux to install it, don't forget to check version.

[edit] Building From Source

For real enthusiasts you can compile it by yourself. Download and unpack sources.

cd /home/username/HARLEM_DEP
wget http://prdownloads.sourceforge.net/wxwindows/wxGTK-2.8.7.tar.gz
gzip -dc wxGTK-2.8.7.tar.gz | tar -xvf -

Configure it, compile and install

mkdir wxGTK-2.8.7-Bld
cd wxGTK-2.8.7-Bld
../wxGTK-2.8.7/configure --prefix=/home/username/HAPACK/wxGTK --with-opengl --disable-shared
make
make install

[edit] Python

[edit] Where on Hercle Cluster

Currently used version of python is in the /usr/local, thus if you compile HARLEM on Hercle HARLEM configure script should find it.

[edit] Using Software Manager

You can use software manager of your linux to install it, don't forget to check version, and don't forget to install developer version of package.

[edit] Building From Source

Check [1] for it

[edit] MySQL

MySQL is very spread and there is no need to install your own version. Version which comes with Linux should be enough, unless you have very old or very new Linux.

[edit] MPICH

MPICH is MPI implementation, version which come with your Linux should be enough

[edit] Berkley DB

Very spread DB, usually several version is living on same computer for the sake of compatibility, thus it is hard sometime to ensure that you compile with right version.

[edit] WXHTTPENGINE

This Library is optional for linux

[edit] mkl (LinAlgebra)

Math Kernel Library is one of the option for BLAS and LAPACK libraries for HARLEM.

[edit] Step 3. Get/Check Programs

[edit] Compiler

You need compiler for sure.

[edit] Autotools (autoconf, automake, gmake)

[edit] SWIG

[edit] Step 4. Configure HARLEM for Compilation

cd /home/username/HAPACK_BLD
mkdir GCC
cd GCC
../../HAPACK/configure

[edit] Step 5. Compile HARLEM

make

[edit] Step 6. Install HARLEM

make install

[edit] Step 7. Test HARLEM

harlem

[edit] Compiling HARLEM on Cray XT3 (BigBen of PSC)

Here is some information how to compile HARLEM on Cray XT3 (BigBen of PSC). It is pretty close to compiling HARLEM on Linux, but it is necessary to install some additional programs and libraries. Here we are doing cross-compilation, we compile HARLEM on front end to run it on nodes, software of frontend and nodes are diffrent.

[edit] Python

Python 2.5 was installed to $(HOME)/HAPACK_DEP/python2.5. It is very hard to cross-compile python so lets try to compile it for front end and use for nodes

Thats how cross compilation should look like but it doesn't work:

  • ./configure --prefix=$HOME/HAPACK_DEP/python2.5 --disable-shared CC=pgcc CXX=pgCC CXXFLAGS="-fastsse -O3 -Mnontemporal -Mprefetch=distance:8,nta -I$HOME/HAPACK_DEP/zlib/include" CFLAGS="-fastsse -O3 -Mnontemporal -Mprefetch=distance:8,nta -I$HOME/HAPACK_DEP/zlib/include" LDFLAGS="-L$HOME/HAPACK_DEP/zlib/lib" --host=cray

Compilation for front end with PGC:

  • ./configure --prefix=$HOME/HAPACK_DEP/python2.5 --disable-shared CC=pgcc CXX=pgCC CXXFLAGS="-fastsse -O3 -Mnontemporal -Mprefetch=distance:8,nta -I$HOME/HAPACK_DEP/zlib/include" CFLAGS="-fastsse -O3 -Mnontemporal -Mprefetch=distance:8,nta -I$HOME/HAPACK_DEP/zlib/include" LDFLAGS="-L$HOME/HAPACK_DEP/zlib/lib"
  • doesn't work too

Compilation for front end with GCC

  • ./configure --prefix=$HOME/HAPACK_DEP/python2.5 --disable-shared
  • make -j 4
  • cp libpython2.5.a $HOME/HAPACK_DEP/python2.5/lib/python2.5

[edit] SWIG

[edit] HAPACK

../../HAPACK/configure --prefix=$HOME/HARLEM --program-suffix=_pgc --with-mpich CC=cc CXX=CC F77=ftn FC=ftn MPICC=cc MPICXX=CC CXXFLAGS="-fastsse -O3 -Mnontemporal -Mprefetch=distance:8,nta -I$HOME/HAPACK_DEP/zlib/include" CFLAGS="-fastsse -O3 -Mnontemporal -Mprefetch=distance:8,nta -I$HOME/HAPACK_DEP/zlib/include" LDFLAGS="-L$HOME/HAPACK_DEP/zlib/lib -L$HOME/HAPACK_DEP/python-2.5/lib" --with-wx-config=$HOME/HAPACK_DEP/wxX11/bin/wx-config --host=cray

[edit] Directory Structure for sources and final release package

[edit] Sources

Files are given in italic, directories in bold, grouping idea in bold purple.

  • HAPACK - parent directory, which contain autotool's configuration scripts
    • doc - place for documentation, not used so far
    • Configuration tools:
    • configure.in - input for autoconf
    • Makefile.am - input for automake
    • config - autotool's custom scripts
    • 3rd Party Libraries:
    • DELPHI_LIB - Poisson - Boltzmann Solver
    • GEOBALL -
    • JUMNA_LIB -
    • SANDER_LIB - MD library
    • WOLFGANG -
    • Our Libraries:
    • HALIB - library of reusable code withing HARLEM package
      • include - HALIB's headers
      • src - sources of HALIB
      • halib - instruction for compilation library for HARLEM, let's rename to libha to make autotools happy
      • halib_base - library without graphics and python script
      • Makefile.am -
      • Doxyfile -
      • HALIB.kdevelop - kdevelop's project used by Kolya under linux
      • HALIB.kdevelop.filelist - kdevelop's project used by Kolya under linux
    • PNPS - Poisson Nernst Planck Solver
      • src - sources for PNPS
      • pnps - instruction for compilation stand-along solver, for serial run
      • pnps_d - instruction for compilation stand-along solver, for serial run with double precision at some places (just tests, probably is not working)
      • libpnp - instruction for compilation library for HARLEM
      • Makefile.am -
      • Doxyfile -
      • PNPS.kdevelop - kdevelop's project used by Kolya under linux
      • PNPS.kdevelop.filelist - kdevelop's project used by Kolya under linux
    • HARLEM Main Code:
    • HARLEM - harlem as is
      • basis - database for QM
      • residues_db - molecular database
      • sources - HARLEM sources
      • scripts - it is examples of scripts now, one can call it scripts library
      • examples - other examples, a lot of diffrent examplas big and heavy should it be in source tree
      • HARLEM.kdevelop - kdevelop's project used by Kolya under linux
      • HARLEM.kdevelop.filelist - kdevelop's project used by Kolya under linux
      • Makefile.am -
      • Doxyfile -

[edit] Release Package, Semi Unix Way

programs should be able to be installed in /usr/local and files should follow unix files distribution

  • bin - all binaries + some shell
    • harlembin - harlem binary
    • harlem - shell which setup all environment variables for successive HARLEM execution
    • pnps - PNP solver
    • mpi_pnps - Parallel PNP solver
  • share
    • harlem
      • doc
      • basis
      • residues_db
      • scripts - python API (hamolset.py, halib.py, pnpmod.py), default python initiator, other python custom library
      • examples - this directory should come in separate package

[edit] HARLEM distribution directories on WINDOWS

  • harlem
    • doc
    • basis - database of gaussian basis set for use in Quantum Chemistry modules
    • residues_db - database of residue templates and force fields for Molecular Mechanics modules
    • scripts - python scripts providing interface to HARLEM classes from PYTHON:
      molset.py, halib.py, pnpmod.py.
      These scripts are automatically generated by SWIG utility during program compilation. Other core python scripts are expected to be placed here.
    • examples - examples and tutorials of HARLEM usage, useful python scripts
    • harlem.exe - HARLEM executable
    • pnps - PNP solver
    • mpi_pnps - Parallel PNP solver

[edit] External Libraries Used in HARLEM

Here is libraries which is needed to compile HARLEM. In the table also shown current version libraries.

Library Windows Version Linux Version comments
wxWidgets 2.8.7 2.8.7
Python 2.5.2 2.5.1, 2.5.2(Hercle)
MySQL 5.0.51b 5.0.45
MPICH 1.2.5 1.2.7
Berkley DB 4.6.21 4.4.20
WXHTTPENGINE 2.0 not used
mkl (LinAlgebra) not used 10.0.1.014

[edit] Programs Needed for HARLEM Compilation

Program Windows Version Linux Version comments
SWIG 1.3.29(cygwin) 1.3.31 Python API generator
cygwin not needed to run configure.in
autoconf 2.61 2.61
automake 1.10.1 1.10.1
make

[edit] Compilers

[edit] GCC 4.2.1, Linux

Compiling good on OpenSuse 10.3

[edit] GCC 3.3.5, Linux

[edit] Microsoft Compilers, Windows

[edit] Configuration tools

[edit] configure.in

[edit] Options and Default Behaviour

[edit] Building Release Package

[edit] For Windows

[edit] Dll Required For HARLEM

DLL that are wanted by harlem
dll where it is comments
mysql.dll C:\MYSQL\lib\opt\libmysql.dll mysql
DFORMD.dll C:\Program Files\Microsoft Visual Studio\DF98\REDIST DIGITAL Visual Fortran Rtl (thread-safe)
python25.dll Python scripting

[edit] Information about Sources

[edit] wxWidgets Forms, via wxDesigner

Since we have a lot of different dialogs, and also due to binary format of wdr, we have several of them to avoid merging problems.

To avoid ambiguity all of them shoud have different starting ID:

wdr file Starting ID
ha_wx_res.wdr 11000
ha_wx_res_2.wdr 20000
ha_wx_res_5.wdr 10000
ha_wx_res_mikola.wdr 25000
ha_wx_ed.wdr 12900
ha_wx_res_molflex.wdr 32000
Personal tools