CHOMBO

From SourceWiki
Jump to navigation Jump to search

CHOMBO

Introduction

Installation

This page describes what I (Gethin) did to install and run CHOMBO. In the first instance, I worked on dyln (an x86_64 machine) and used the GNU C and Fortran compilers (gcc, g++ and gfortran).

First we will look at the prerquisites, an MPI implementation and HDF5, and then CHOMBO itself.

MPICH v1.2.6

Only an MPI 1.2 compliant C binding is required to run CHOMBO in parallel. There are problems getting gfortran to work with both MPICH v1.2.5 and v1.2.6, so I will omit it here. Beware, however of picking up e.g. the Sun fortran compiler as f77 and f90 and thus getting a mixed compiler MPICH build.

Get tar ball:

wget ftp://ftp.mcs.anl.gov/pub/mpi/old/mpich-1.2.6.tar.gz

Treating dylan as an SMP machine (multi-core with shared memory), we will build a shared memory MPI installation:

./configure --prefix=/gsb6/ggdagw/mpich/mpich-1.2.6/ch_shmem --with-device=ch_shmem -cc=gcc -c++=g++ \
-fc=gfortran -f90=gfortran -cflags="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" \
>& config.out
make
make testing
make install

The cflags enable files > 2GB.

Note that Fortran binding will not be built, as MPICH will complain that it can't access the command line through gfortran.

HDF5 v1.4.4

Get from:

ftp://hdf.ncsa.uiuc.edu/HDF5/prev-releases

For Serial Build

 
./configure --prefix=/gsb6/ggdagw/hdf5/hdf5-1.4.4/serial --enable-production

For Parallel Build

Tested MPI-IO with the program Sample_mpio.c from PHDF5 instructions (appendix) in conjunction with shmem MPI build and tests passed OK.

Straight from the box, we would have a broken build, due to problems with mpicc and DL_OPEN support. So, we will make a cheeky edit. In the file config/commence.in, change the line that defines the LT_LINK_EXE variable to remove the -dlopen self -rpath $(libdir) options.

Note that we've disabled linking against shared libraries. We could have gone the other way and added '-fPIC to the build flags.

Now we configure and build:

CC=/gsb6/ggdagw/mpich/mpich-1.2.6/ch_shmem/bin/mpicc ./configure --disable-shared \
--prefix=/gsb6/ggdagw/hdf5/hdf5-1.4.4/parallel
make
make check
make install

HDF5 v1.6.7

For Serial Build

 
./configure --prefix=/gsb6/ggdagw/hdf5/hdf5-1.6.7/serial --enable-production

For Parallel Build



CHOMBO

Oct07 release

Without HDF5

Chombo-2.0/lib/mk/Make.defs.local

DIM           = 2
DEBUG         = TRUE
OPT           = TRUE
PRECISION     = DOUBLE
PROFILE       = FALSE
CXX           = g++
FC            = gfortran
MPI           = FALSE
USE_HDF       = FALSE

make lib make test make run Looks like the tests pass BUT uses -m32 during compilation.

With HDF5 compiled in serial mode

USE_64 = TRUE

adds -m64 to the GNU compiler flags and so object code is created for the x86_64 architecture, and so it will link against the HDF libraries which are built for x86_64. This is not what the documentation says the makefile variable is for! Hey ho. Add it in.

  • e.g. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/gsb6/ggdagw/hdf5/hdf5-1.4.4/serial/lib

required to find shared object files, else tests will not run. Tests look OK for both v1.4.4 and v1.6.7 of HDF.

With MPI and parallel HDF5