Difference between revisions of "Install"

From diagham
Jump to navigation Jump to search
 
Line 143: Line 143:
Recently, several problems have been reported with svn. DiagHam cannot be retrieved with the typical error message
Recently, several problems have been reported with svn. DiagHam cannot be retrieved with the typical error message


     svn: OPTIONS of 'https://www.nick-ux.org/diagham/svn/trunk': SSL negotiation failed:
     svn: OPTIONS of 'https://www.nick-ux.org/diagham/svn/DiagHam': SSL negotiation failed:
     SSL error code -1/1/336032856 (https://www.nick-ux.org)
     SSL error code -1/1/336032856 (https://www.nick-ux.org)



Latest revision as of 05:29, 28 February 2022

Requirements

To install DiagHam, you need the following softwares

  • GNU make or any compatible version of make.
  • autotools (i.e. automake and autoconf)
  • subversion (the easiest way to get DiagHam)
  • blas/lapack (not mandatory, but they provide better performance)
  • bunzip2 libraries (not mandatory)
  • GMP (not mandatory)
  • MPI (not mandatory unless you want to run DiagHam on a cluster)
  • Scalapack (not mandatory)


First installation

There are many ways to install DiagHam. The most convenient one relies on subversion. It is an easy way to keep your version up to date. You can check that subversion is available by typing the command

svn --help


if the command was found, go to the place where you want to install DiagHam and type


svn checkout https://www.nick-ux.org/diagham/svn/DiagHam DiagHam

This will create a directory called DiagHam and download all the source code. If everything went fine just into the newly created DiagHam directory. A sane way to work with DiagHam is to separate the source, the compiled programs and the data one will produce. Thus create two directories build et run

mkdir build
mkdir run

Now it's time to configure the code for the architecture it will work on. Run

./bootstrap.sh

Now go into the build directory. The simplest configuration is done by typing the command

../configure --enable-fqhe

If lapack is available on your computer, you should use instead

../configure --enable-fqhe --enable-lapack

If there is any problem with you lapack installation, you will get some informations at that point. It may happen on Mac OS X that configure has some trouble to find lapack and blas (due to some lowercase/uppercase convention). I f you have such a proble, just use

../configure --enable-fqhe --enable-lapack --with-blas-libs="-lBLAS" --with-lapack-libs="-lLAPACK"

You can also activate the part of the code related to quantum spin chains using the --enable-spin option or to the fractional topological insulator using the --enable-fti option. This can be done in addition to the --enable-fqhe i.e.

../configure --enable-fqhe --enable-lapack --enable-spin

or

../configure --enable-fqhe --enable-lapack --enable-fti

Any other feature that has to be turned on (such as support for GMP, bz2,...) can be done using the corresponding option. See ../configure --help for the corresponding syntax.

You can now compile the whole code

make

This may take a while (i.e. a few minutes). If you are working on a multi-cpu and/or multi-core cpu, you should use instead of make

make -jx

where x is the total number of cores.

Checking your DiagHam installation

Everything went fine? You can now go to the run directory

cd ../run

and check for example

../build/FQHE/src/Programs/FQHEOnSphere/FQHESphereJackGenerator --help

This should display the help of the FQHESphereJackGenerator program which looks like

   FQHESphereJackGenerator, version 0.01
   
   Usage: FQHESphereJackGenerator [options]
   
   Options:
   
   system options:
       --reference-file : use a file as the definition of the reference state
       -a, --alpha : alpha coefficient of the Jack polynomial (default value = -2)
       --symmetrized-basis : use Lz <-> -Lz symmetrized version of the basis (only valid if     total-lz=0) to speed up calculations
       --sym-storage : use Lz <-> -Lz symmetrized version of the basis (only valid if total-lz=0), both for speed and storage
       --initial-state : use an optional state where some of the components have already been computed, improving computation time
       --resume : resume Jack calculation (only available in huge mode)
       --min-index : compute the Jack polynomial from the min-index-th component (require an initial state) (default value = 0)
       --max-index : compute the Jack polynomial from the max-index-th component (require an initial state, 0 if it has computed up to the end) (default value = 0)
       --fermion : compute the slater decomposition of the Jack polynomial times Vandermonde
       --huge-basis : use huge Hilbert space support
       --large-basis : use large Hilbert space support (i.e. handle non-squeezed Hilbert space larger than 2^31 without hard-drive storage)
       --huge-fulldim : indicate the full Hilbert space dimension (i.e. without squeezing) when using huge Hilbert space (0 if it has to be computed) (default value = 0)
       --file-size : maximum file size (in MBytes) when using huge mode (default value = 0)
       --memory : maximum memory (in MBytes) that can allocated for precalculations when using huge mode (default value = 100)
       --huge-vector : maximum memory (in MBytes) that can allocated for buffering vector when using huge mode (default value = 100)
       --huge-blocks : maximum memory (in MBytes) that can allocated for buffering indices when using huge mode (useful to improve parallelization speed-up) (default value = 100)
       --disk-storage : use disk storage in huge mode both for the Hilbert space and vectors
       --large-memory : maximum memory (in kBytes) that can allocated for precalculations when using huge mode (default value = 1)
       --check-singularity : display configurations which may produce singularities
   
   output options:
       -o, --bin-output : output the Jack polynomial decomposition into a binary file
       -t, --txt-output : output the Jack polynomial decomposition into a text file
       -n, --normalize : express the Jack polynomial in the normalized basis
   
   precalculation options:
       --save-hilbert : save Hilbert space description in the indicated file and exit (only available for the Haldane basis)
       --load-hilbert : load Hilbert space description from the indicated file (only available for the Haldane basis)
   
   parallelization options:
       -S, --SMP : enable SMP mode
       --processors : number of processors to use in SMP mode (default value = 2)
       --smp-profil : enable SMP profiling, the name of the log file  has to be passed as argument
       --mpi : enable MPI mode
       --mpi-smp : enable both MPI and SMP mode, the name file describing the cluster has     to be passed as argument
       --cluster-profil : enable cluster profiling, the name of the log file  has to be passed as argument
   
   misc options:
       -h, --help : display this help


for any program you can always display help using the --help or -h option.

Now you can start some serious job. For example you can have a look at FQHESphereJackGenerator .


Updating the code

Next time you will need to get the latest version, just go into the DiagHam directory and type

svn update

you can then proceed with the compilation i.e. go into the build directory and type

make -jx

Common issues

Recently, several problems have been reported with svn. DiagHam cannot be retrieved with the typical error message

   svn: OPTIONS of 'https://www.nick-ux.org/diagham/svn/DiagHam': SSL negotiation failed:
   SSL error code -1/1/336032856 (https://www.nick-ux.org)

Most probably, this error is due to svn being outdated. Svn version should >= 1.6.12 . The version number can be checked using svn --version . In particular Ubuntu 10.04 or older Mac OsX lion have an svn version older than 1.6.12 . You can either update your system or download/compile a new version of svn . For Mac OsX users, macport provides an updated version of subversion.

On MacOSX, you might expect some strange behavior with the fortan2c library. While the g2c, f2c or gfortran2c libs are missing, the code runs fine without it. In that case, one can try to add the option --with-fortran2c-libs="" on the configure command line.

Using Intel compiler and MKL

While DiagHam is developed with GNU gcc as the default compiler, it should work with Intel compiler icc. There are a few tricks in order to make it work with icc and MKL. The configuration line should look like

CXX="icc" CC="icc" FC="ifort" ../configure --enable-fti --enable-fqhe --enable-mpi --enable-intelmkl --with-intelmkl-libdir=$MKL_HOME/lib/intel64

In this example, we have to force the compilers to be icc for C and C++ and ifort for the fortran compiler. While we still want to use Lapack, we rely on MKL for that purpose with the --enable-intelmkl option. In particular, we DO NOT set --enable-lapack. Most of the time, you will have to set the location of the MKL library using the --with-intelmkl-libdir option. A simple way to know this machine-dependent path is not to use the --with-intelmkl-libdir option and to try to compile. In principle, the compilation should fail and reveal in the error messages the path to th MKL library.

Note that in our example, we have also turned on MPI which should work fine with icc.

Using LLVM

DiagHam should compile without any problem with llvm (using clang or the Mac OS gcc frontend to llvm). On a Linux machine, compiling with llvm is straightforward. A configure command like

CC="clang" CXX="clang++" ../configure --enable-fqhe --enable-lapack --enable-gsl --enable-bz2 --enable-gmp --enable-spin --enable-fti

should work. Note that all the options are not mandatory.

Mirrors

If the svn main repository is not available or if your svn still complains about SSL, you can try to get a copy of Diagham using one of the following mirrors:

Please be aware that the mirrors might be slightly de-synchronized with respect to the main repository (usually a few minutes).