SIESTA

From Parts
Jump to: navigation, search

Overview

Siesta Home Page

Building on Blue Gene/Q

These instructions presume you have ScaLAPACK. ALCF has a site installation ScaLAPACK and other libraries that is automatically build for every driver release. If you are not using an ALCF system, you may want to try the ScaLAPACK installer.

SIESTA's build system is not parallel-make-safe so you cannot use make -j $N, unfortunately.

The following instructions pertain to version 3.2.

GCC

Netlib

cd siesta-3.2 && \
cd Obj && \
../Src/configure --host=powerpc64-bgq-linux --prefix=$HOME/SIESTA/3.2 \
CC=mpicc FC=mpif90 MPIFC=mpif90 --enable-mpi --enable-fast --enable-debug \
--with-blas=/soft/libraries/alcf/current/gcc/BLAS/lib/libblas.a \
--with-lapack=/soft/libraries/alcf/current/gcc/LAPACK/lib/liblapack.a \
--with-scalapack=/soft/libraries/alcf/current/gcc/SCALAPACK/lib/libscalapack.a \
--with-blacs=/soft/libraries/alcf/current/gcc/SCALAPACK/lib/libscalapack.a && \
../Src/obj_setup.sh && \
make

ESSL

Although it is always possible to use GCC and ESSL, it is more complicated due to the requisite inclusion of all XLF runtime libraries, hence we do not bother with it. The best build should be the XLF+ESSL one.

XL

The follow patch is required to compiler SIESTA with XLF, which is quite strict about Fortran syntax. This patch has already been contributed to the SIESTA developers.

Obj> cat ~/SIESTA/siesta-3.2/Src/m_partial_charges.patch
110c110
<               write(6,'(i6,2x,f7.3,2x,a20)'), ia,
---
>               write(6,'(i6,2x,f7.3,2x,a20)') ia,
136c136
<               write(6,'(i6,2x,f7.3,2x,a20)'), ia,
---
>               write(6,'(i6,2x,f7.3,2x,a20)') ia,

Netlib

cd siesta-3.2 && \
cd Obj && \
../Src/configure --host=powerpc64-bgq-linux --prefix=$HOME/SIESTA/3.2 \
CC=mpixlc_r FC=mpixlf90_r MPIFC=mpixlf90_r --enable-mpi --enable-fast --enable-debug \
--with-blas=/soft/libraries/alcf/current/xl/BLAS/lib/libblas.a \
--with-lapack=/soft/libraries/alcf/current/xl/LAPACK/lib/liblapack.a \
--with-scalapack=/soft/libraries/alcf/current/xl/SCALAPACK/lib/libscalapack.a \
--with-blacs=/soft/libraries/alcf/current/xl/SCALAPACK/lib/libscalapack.a && \
../Src/obj_setup.sh && \
make 


ESSL

cd siesta-3.2 && \
cd Obj && \
../Src/configure --host=powerpc64-bgq-linux --prefix=$HOME/SIESTA/3.2 \
CC=mpixlc_r FC=mpixlf90_r MPIFC=mpixlf90_r --enable-mpi --enable-fast --enable-debug \
--with-blas=/soft/libraries/essl/current/lib64/libesslbg.a \
--with-lapack=/soft/libraries/alcf/current/xl/LAPACK/lib/liblapack.a \
--with-scalapack=/soft/libraries/alcf/current/xl/SCALAPACK/lib/libscalapack.a \
--with-blacs=/soft/libraries/alcf/current/xl/SCALAPACK/lib/libscalapack.a && \
../Src/obj_setup.sh && \
make 

Running on Blue Gene/Q

It would appear that Siesta crashes when too many MPI processes are employed. For example, the h2o test crashes hard with 1024 MPI processes but runs fine for 16. A well-behaved application should not do this, but rather issue a useful warning and terminate gently.

Test Suite

If running interactively, one can launch the test suite as follows.

make SIESTA="runjob --np 16 --ranks-per-node 16 --block VST-22400-33731-128 \
--verbose 4 : $HOME/SIESTA/siesta-3.2/Obj/siesta"

Obviously, one must modify the argument to --block appropriately for the system used and the specific partition allocated to the user by the interactive submission.

Timings

Below are some raw timing data for Siesta 3.2 running on 1 node of Blue Gene/Q with 16 MPI processes using the XL+ESSL binary.

[jhammond@vestalac1 Tests]$ grep elaps */*out | grep siesta
benzene/benzene.out:elaps:  siesta            1     489.530     489.530   100.00
bessel/bessel.out:elaps:  siesta            1      32.110      32.110    99.94
born/born.out:elaps:  siesta            1     135.540     135.540    99.99
born_spin/born_spin.out:elaps:  siesta            1     156.830     156.830    99.99
floating/floating.out:elaps:  siesta            1      42.040      42.040    99.95
force_2/force_2.out:elaps:  siesta            1      23.730      23.730    99.96
h2o_basis/h2o_basis.out:elaps:  siesta            1      48.340      48.340    99.98
h2o_dos/h2o_dos.out:elaps:  siesta            1      34.940      34.940    99.97
h2o/h2o.out:elaps:  siesta            1      27.620      27.620    99.93
h2o-pop/h2o-pop.out:elaps:  siesta            1      79.290      79.290    99.99
h2o_reparam/h2o_reparam.out:elaps:  siesta            1      30.150      30.150    99.93
mgco3/mgco3.out:elaps:  siesta            1     322.690     322.690    99.99
Reference/batio3.out:elaps:  siesta            1      65.101      65.101   100.00
Reference/benzene.out:elaps:  siesta            1      28.575      28.575   100.00
Reference/bessel.out:elaps:  siesta            1       2.167       2.167    99.95
Reference/born.out:elaps:  siesta            1       5.143       5.143   100.00
Reference/born_spin.out:elaps:  siesta            1       6.355       6.355   100.00
Reference/ch4.out:elaps:  siesta            1      14.423      14.423    99.99
Reference/constant_volume.out:elaps:  siesta            1      41.150      41.150   100.00
Reference/fe_broyden.out:elaps:  siesta            1      91.331      91.331   100.00
Reference/fe_clust_noncollinear.out:elaps:  siesta            1      17.888      17.888    99.99
Reference/fe.out:elaps:  siesta            1     175.812     175.812   100.00
Reference/fire_benzene.out:elaps:  siesta            1      26.044      26.044   100.00
Reference/floating.out:elaps:  siesta            1       2.426       2.426   100.00
Reference/force_2.out:elaps:  siesta            1       1.879       1.879    99.95
Reference/graphite_c6.out:elaps:  siesta            1       1.898       1.898    99.95
Reference/h2o_basis.out:elaps:  siesta            1       3.039       3.039    99.97
Reference/h2o_dos.out:elaps:  siesta            1       1.828       1.828   100.00
Reference/h2o_findp_bug.out:elaps:  siesta            1       1.520       1.520    99.93
Reference/h2o_op_broyden.out:elaps:  siesta            1       1.809       1.809    99.94
Reference/h2o_orderN.out:elaps:  siesta            1       1.863       1.863    99.95
Reference/h2o.out:elaps:  siesta            1       1.533       1.533    99.93
Reference/h2o-pop.out:elaps:  siesta            1       6.195       6.195    99.98
Reference/h2o_radialgrid.out:elaps:  siesta            1       1.945       1.945   100.00
Reference/h2o_reparam.out:elaps:  siesta            1       1.977       1.977    99.95
Reference/h2oZ.out:elaps:  siesta            1       7.107       7.107   100.00
Reference/h_chain.out:elaps:  siesta            1       0.461       0.461    99.78
Reference/md_anneal.out:elaps:  siesta            1      42.079      42.079   100.00
Reference/md_nose.out:elaps:  siesta            1       1.619       1.619   100.00
Reference/md_npr.out:elaps:  siesta            1       1.947       1.947    99.95
Reference/md_pr.out:elaps:  siesta            1       7.938       7.938    99.99
Reference/md_verlet.out:elaps:  siesta            1       1.605       1.605    99.94
Reference/mgco3.out:elaps:  siesta            1      15.791      15.791   100.00
Reference/n_chain.out:elaps:  siesta            1       0.875       0.875    99.89
Reference/oxyn.out:elaps:  siesta            1       4.841       4.841   100.00
Reference/partial.out:elaps:  siesta            1      13.208      13.208    99.99
Reference/pb_filter_cutoff.out:elaps:  siesta            1       7.374       7.374    99.99
Reference/pb_filter_tol.out:elaps:  siesta            1       7.997       7.997    99.99
Reference/si2x1h-dipole.out:elaps:  siesta            1       1.828       1.828    99.95
Reference/si2x1h.out:elaps:  siesta            1      10.701      10.701   100.00
Reference/si64_coop.out:elaps:  siesta            1       6.269       6.269   100.00
Reference/si64.out:elaps:  siesta            1       1.813       1.813   100.00
Reference/si_bandpoints.out:elaps:  siesta            1       4.456       4.456    99.98
Reference/si_coop.out:elaps:  siesta            1       6.116       6.116   100.00
Reference/sic-slab.out:elaps:  siesta            1     735.629     735.629   100.00
Reference/si_fatbands.out:elaps:  siesta            1       3.962       3.962    99.97
Reference/sih_fire.out:elaps:  siesta            1      39.378      39.378   100.00
Reference/sih_op_broyden.out:elaps:  siesta            1      14.336      14.336   100.00
Reference/sih.out:elaps:  siesta            1      30.219      30.219   100.00
Reference/si-optical.out:elaps:  siesta            1      31.919      31.919   100.00
Reference/si_pdos_kgrid.out:elaps:  siesta            1       4.413       4.413   100.00
Reference/var_cell.out:elaps:  siesta            1      44.985      44.985   100.00
Reference/zmatrix.out:elaps:  siesta            1       4.611       4.611    99.98
si2x1h/si2x1h.out:elaps:  siesta            1     206.760     206.760    99.99
var_cell/var_cell.out:elaps:  siesta            1    1031.930    1031.930   100.00