welcome: please sign in
location: Diff for "Installation"
Differences between revisions 44 and 45
Revision 44 as of 2017-02-23 03:50:38
Size: 5914
Editor: huangc
Comment:
Revision 45 as of 2017-08-27 07:09:37
Size: 5902
Editor: 124
Comment:
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
Line 5: Line 6:
Line 8: Line 8:
Line 14: Line 15:
Line 19: Line 19:
    If you use bash shell, you can set fortran and c compiler:
. If you use bash shell, you can set fortran and c compiler:
Line 26: Line 27:
 Tips: If you ignored this step, the configure script will pick up the gfortran and gcc compiler as default.  . Tips: If you ignored this step, the configure script will pick up the gfortran and gcc compiler as default.
Line 28: Line 29:
2. Set blas and lapack library.
The external Blas and Lapack library is needed for compling BDF. In addition, C language Blas and Lapack are required.
It is easer to use Intel MKL. You only need set "MATHLIB" and "MATHINCLUDE" as
2. Set blas and lapack library. The external Blas and Lapack library is needed for compling BDF. In addition, C language Blas and Lapack are required. It is easer to use Intel MKL. You only need set "MATHLIB" and "MATHINCLUDE" as
Line 35: Line 35:
However, you may choose to use Blas and Lapack from netlib. You may download lapack library from http://www.netlib.org/lapack/lapack-3.6.0.tgz. Do not forget also compile "lapacke" and "cblas", which is a C interface for lapack and blas library.
Line 36: Line 37:
However, you may choose to use Blas and Lapack from netlib. You may download lapack library from http://www.netlib.org/lapack/lapack-3.6.0.tgz.
Do not forget also compile "lapacke" and "cblas", which is a C interface for lapack and blas library.
Then, you need set "MATHLIB" and "MATHINCLUDE"
Line 39: Line 39:
Then, you need set "MATHLIB" and "MATHINCLUDE"
Line 44: Line 43:
3.(optional)Set processor specific compiling flag.
If you need to speed up the program, you can turn on specific compiling flag in config/simd.mh
for example, you can turn on core-avx2 with intel compiler on intel CPU with Haswell microarchitecture or later on.
3.(optional)Set processor specific compiling flag. If you need to speed up the program, you can turn on specific compiling flag in config/simd.mh for example, you can turn on core-avx2 with intel compiler on intel CPU with Haswell microarchitecture or later on.
Line 55: Line 53:
4. Configure BDF package.
Line 56: Line 55:
After setting compiler and mathematic library. You can configure BDF by command configure in BDF root directory.
Line 57: Line 57:
4. Configure BDF package.
  
After setting compiler and mathematic library. You can configure BDF by command configure in BDF root directory.
{{{
{{{
Line 63: Line 60:
Configure support several parameters.
Line 64: Line 62:
   Configure support several parameters.
Line 74: Line 70:
5. Compile BDF package.
Line 75: Line 72:
5. Compile BDF package.
Line 77: Line 73:
 $make   $make
Line 79: Line 75:
Line 84: Line 79:
{{{ 
{{{
Line 87: Line 83:
2. Only MPI.
Line 88: Line 85:
2. Only MPI.
{{{
{{{
Line 92: Line 88:
3. Only OpenMP.
Line 93: Line 90:
3. Only OpenMP.
{{{
{{{
Line 97: Line 93:
== Examples of some typical installations ==
1. A 64bit machine with intel compiler and MKL library.
Line 98: Line 96:

== Examples of some typical installations ==

1. A 64bit machine with intel compiler and MKL library.
Line 111: Line 105:
2. A Mac laptop with gfortran, gcc and user compiled lapack and blas library
Line 112: Line 107:
2. A Mac laptop with gfortran, gcc and user compiled lapack and blas library
Line 114: Line 108:
  $export FC=gfortran 
  $export CC=gcc 
  $export FC=gfortran
  $export CC=gcc
Line 117: Line 111:
  $export MATHILIB="-L/Users/mike/mathlib -lblas -llapack"    $export MATHILIB="-L/Users/mike/mathlib -lblas -llapack"
Line 119: Line 113:
  $./configure --enable-i8=yes --enable-openmp=yes    $./configure --enable-i8=yes --enable-openmp=yes
Line 122: Line 116:
3. A Linux cluster with fort, icc, openmpi and intel MKL library.
Line 123: Line 118:
3. A Linux cluster with fort, icc, openmpi and intel MKL library.  . Check MPI flags by using command
Line 125: Line 120:
 Check MPI flags by using command
{{{
{{{
Line 128: Line 122:
}}} }}}
 . You may get such output.
Line 130: Line 125:
 You may get such output.
{{{
{{{
Line 134: Line 128:
 . You can compile bdf package as
Line 135: Line 130:
 You can compile bdf package as
Line 146: Line 140:
 . If you only want to evoke MPI, just use
Line 147: Line 142:
 If you only want to evoke MPI, just use
Line 149: Line 143:
  $./configure --enabale-i8=yes --enable-mpi=yes --enable-mkl=yes   $./configure --enable-i8=yes --enable-mpi=yes --enable-mkl=yes
Line 151: Line 145:
Line 153: Line 146:
Line 156: Line 148:
Line 158: Line 151:
Line 159: Line 153:
The extra libraries libcint,libgen1int,libxcfun are dynamic.
The list of other dynamic libraries can be finded in variable "DYNUTL" in database/xianest.mh
The extra libraries libcint,libgen1int,libxcfun are dynamic. The list of other dynamic libraries can be finded in variable "DYNUTL" in database/xianest.mh
Line 163: Line 157:
Line 167: Line 162:
Line 171: Line 167:

Installation

System requirements

In principle, BDF supports all Unix-like platforms. However, we strongly propose you to use BDF at Linux platform together Intel Fortran and C compiler because BDF package is developed and thoroughly tested on such platforms. System requirements of BDF is summarized as following lines:

 OS: Linux, Mac, FreeBSD, Unix
 Compiler: Fortran 90 compiler such as Intel, gfortran, g95
 Support softwares: Python, make
 Parallel environments: MPI

Configure and compile BDF package

Several steps are needed to install BDF package.

1. Set fortran and C compiler.

  • If you use bash shell, you can set fortran and c compiler:

$export FC=ifort
$export CC=gcc
$export CXX=g++
  • Tips: If you ignored this step, the configure script will pick up the gfortran and gcc compiler as default.

2. Set blas and lapack library. The external Blas and Lapack library is needed for compling BDF. In addition, C language Blas and Lapack are required. It is easer to use Intel MKL. You only need set "MATHLIB" and "MATHINCLUDE" as

$export MATHLIB="-lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread"
$export MATHINCLUDE="-I/opt/intel/mkl/include"

However, you may choose to use Blas and Lapack from netlib. You may download lapack library from http://www.netlib.org/lapack/lapack-3.6.0.tgz. Do not forget also compile "lapacke" and "cblas", which is a C interface for lapack and blas library.

Then, you need set "MATHLIB" and "MATHINCLUDE"

$export MATHLIB="-L/Users/aaa/mathlib/lapack -llapack64 -lblas64"
$export MATHINCLUDE="-I/Users/aaa/lapack-3.6.0/lapacke/include -I/Users/aaa/lapack-3.6.0/cblas/include"

3.(optional)Set processor specific compiling flag. If you need to speed up the program, you can turn on specific compiling flag in config/simd.mh for example, you can turn on core-avx2 with intel compiler on intel CPU with Haswell microarchitecture or later on.

SIMDFLAGS := -march=core-avx2

CFLAGS :=$(SIMDFLAGS) $(CFLAGS)
CXXFLAGS :=$(SIMDFLAGS) $(CXXFLAGS)
F77FLAGS :=$(SIMDFLAGS) $(F77FLAGS)
F90FLAGS :=$(SIMDFLAGS) $(F90FLAGS)

4. Configure BDF package.

After setting compiler and mathematic library. You can configure BDF by command configure in BDF root directory.

$./configure

Configure support several parameters.

 --enable-debug=yes[no]     Compile BDF in debug mode.
 --enable-i8=yes[no]            Compile BDF with 64 bit integrals.
 --enable-openmp=yes[no]  Compile BDF with OpenMP supporting.
 --enable-mpi=yes[no]         Compile BDF with MPI supporting.
 --enable-parallel=yes[no]   Compiler BDF with MPI and OpenMP support.
 --enable-mkl=yes[no]   Compiler BDF withIntel MKL support.

5. Compile BDF package.

 $make

Compile parallel bdf

Some of BDF modules support parallel calculation. You can compiler BDF as parallel mode. At present, we support MPI and OpenMP.

1. MPI and OpenMP hybrid.

 $./configure  --enable-parallel=yes

2. Only MPI.

 $./configure  --enable-mpi=yes

3. Only OpenMP.

 $./configure  --enable-openmp=yes

Examples of some typical installations

1. A 64bit machine with intel compiler and MKL library.

  export FC=ifort
  export CC=gcc
  export CXX=g++
  export MATHLIB="-lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread"
  export MATHINLCUDE="-I/opt/intel/mkl/include"
  ./configure --enable-i8=yes --enable-openmp=yes --enable-mkl=yes
  make

2. A Mac laptop with gfortran, gcc and user compiled lapack and blas library

  $export FC=gfortran
  $export CC=gcc
  $export CXX=g++
  $export MATHILIB="-L/Users/mike/mathlib -lblas -llapack"
  $export MATHINCLUDE="-I/Users/mike/lapack-3.6.0/lapacke/include -I/Users/mike/lapack-3.6.0/cblas/include"
  $./configure --enable-i8=yes --enable-openmp=yes
  $make

3. A Linux cluster with fort, icc, openmpi and intel MKL library.

  • Check MPI flags by using command

  $mpif90 --shownme
  • You may get such output.

  ifort -I/opt/openmpi/include -I/opt/openmpi/lib -L/opt/openmpi/lib -lmpi_f90 -lmpi_f77 -lmpi -ldl -lm -Wl,--export-dynamic -lrt -lnsl -lutil
  • You can compile bdf package as

  $export FC=ifort
  $export CC=icc
  $export CXX=icpc
  $export MATHLIB="-lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread"
  $export MATHINCLUDE="I/opt/intel/mkl/include"
  $export MPILIB="-I/opt/openmpi/include -I/opt/openmpi/lib -L/opt/openmpi/lib -lmpi_f90 -lmpi_f77 -lmpi -ldl -lm -Wl,--export-dynamic -lrt -lnsl -lutil"
  $./configure --enable-i8=yes --enable-parallel=yes --enable-mkl=yes
  $make
  • If you only want to evoke MPI, just use

  $./configure --enable-i8=yes --enable-mpi=yes --enable-mkl=yes

Set system variables of BDF package

Using dynamic library

For reducing program size and easy developing, dynamic library can be used.

Branch

Just clone/pull/checkout the branch dynamic-dev. The installation is just as static library version.

List of dynamic libraries

The extra libraries libcint,libgen1int,libxcfun are dynamic. The list of other dynamic libraries can be finded in variable "DYNUTL" in database/xianest.mh

Modifying libraries

If the modified code is code of static library, please rebuild the library and the programs use this library. Just type

make

If the modified code is code of program, just rebuild the program. Just type

make

After modifying dynamic libraries, just rebuild the library. You need to type

make ISLIB=dynamic

If function calls are changed in both dynamic library and program, please rebuild the library first, then program.

Installation (last edited 2021-07-22 05:07:26 by bsuo)