build:extdeps_summary
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
build:extdeps [2015/01/27 11:30] – Yann Pouillon | build:extdeps_summary [2017/11/07 14:56] (current) – ↷ Links adapted because of a move operation Yann Pouillon | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== External dependencies of Abinit ====== | ||
+ | ===== Minimum requirements ===== | ||
+ | |||
+ | ==== Hardware and system requirements ==== | ||
+ | |||
+ | Abinit is able to run on a broad range of devices and operating systems. In order to build it and run it, you will need at least: | ||
+ | * 1Gb of memory (RAM); | ||
+ | * 4Gb of free disk space; | ||
+ | * a Unix-compatible development environment; | ||
+ | * recent C and Fortran 95/2003 compilers; | ||
+ | * Python >= 2.5. | ||
+ | |||
+ | For seamless builds and fast tests, the recommended configuration is the following: | ||
+ | * microprocessor with at least 4 cores; | ||
+ | * at least 8Gb of memory (RAM); | ||
+ | * at least 20Gb of free disk space; | ||
+ | * Linux; | ||
+ | * GNU Compilers Collection (GCC) >= 4.9 (4.8 will do, yet produce slower executables); | ||
+ | * Python >= 2.7.5. | ||
+ | |||
+ | MacOSX users will usually be able to build Abinit after installing a few missing basic tools and a Fortran compiler, although the procedure is not always straightforward. Please consult [[http:// | ||
+ | |||
+ | Windows users might be able to build Abinit after installing [[https:// | ||
+ | |||
+ | ==== Linear algebra ==== | ||
+ | |||
+ | To be able to run, Abinit requires working linear algebra libraries compatible with [[http:// | ||
+ | |||
+ | There are many implementations of BLAS and LAPACK available nowadays. If you are running a personal computer with Linux, look for packages such as: | ||
+ | * // | ||
+ | * // | ||
+ | * //atlas//, //blas//, and //lapack//, for other distributions. | ||
+ | Depending on your computer architecture and compilers, different packages may provide different levels of reliability and performance. In some cases, you may have to make some tests and benchmarks before selecting the implementation that best suits your needs. On Intel-based supercomputers, | ||
+ | |||
+ | In any case, we highly recommend you to take good care of finding the adequate linear algebra libraries for your calculations before anything else, as it will have a significant influence on your user experience of Abinit. You can find more information about the linear algebra implementations supported by Abinit in the config file template available in the source tarball, at // | ||
+ | |||
+ | ==== Fast Fourier Transforms (FFTs) ==== | ||
+ | |||
+ | Abinit comes with built-in [[http:// | ||
+ | |||
+ | ==== Optional features ==== | ||
+ | |||
+ | The presence of different libraries and tools on your system will let you customize and enhance the capabilities of Abinit in three areas: | ||
+ | * Input/ | ||
+ | * Mathematical operations, with //GSL//, and //Levmar//; | ||
+ | * Density-Functional Theory (DFT), with //BigDFT//, //LibXC//, and // | ||
+ | Although Abinit will be able to work in degraded mode without them, they might be mandatory for some of your calculations to run. LibXC is a typical example of such a dependency, since it lets you access a few hundreds of well-tested exchange-correlations functionals, | ||
+ | |||
+ | ==== Atomic data ==== | ||
+ | |||
+ | Abinit requires atomic data to be able to run, mainly pseudopotentials and/or Projector-Augmented Waves (PAW) datasets, as well as atomic densities. Although the source tarball of Abinit contains some of them to run the test suite, they are not suitable for production calculations. Please remember to download the ones you need before running Abinit. They can be found on the Abinit website: | ||
+ | * [[http:// | ||
+ | |||
+ | ===== Preparing your build environment ===== | ||
+ | |||
+ | If you wish to build some external packages before building Abinit, you might have to install more software prerequisites than just for Abinit, as well as to tune some environment variables and parameters of your system. Selecting adequate compilers is also a critical step. Please remember that, for every choice, the latest version is usually not the best one, as it very often lacks the testing and bugfixing that older and more robust versions have. If this is the first time you do this, take your time to do it well, because it will greatly improve and accelerate the build of the various packages you might need. | ||
+ | |||
+ | If you are a beginner, the bad news is that you will suffer a bit before succeeding in building Abinit. The good news with external dependencies is however that you will have to do it only once a year on average. Taking notes of everything you are doing to achieve the build of a package is a very clever idea and will save you a lot of time in your future attempts to build new versions of the same package. With practice, you will also understand better and better the underlying concepts and designs, which will let you navigate with ease in this apparently messy world. | ||
+ | |||
+ | If you are using a Debian-based Linux distribution, | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | ===== External libraries and tools ===== | ||
+ | |||
+ | <WRAP important> | ||
+ | |||
+ | ==== Standard installation procedure ==== | ||
+ | |||
+ | Each version of Abinit is compatible with only some versions of its external dependencies. To determine which version of each package you should download, please consult our [[build: | ||
+ | < | ||
+ | tar xvzf < | ||
+ | cd < | ||
+ | ./configure --prefix=/ | ||
+ | make | ||
+ | make check | ||
+ | make install | ||
+ | export LD_LIBRARY_PATH="/ | ||
+ | export PATH="/ | ||
+ | export MANPATH="/ | ||
+ | </ | ||
+ | When unpacking, the options given to //tar// may vary depending on the file extension. If the file ends in //.zip//, you will of course use //unzip// instead of //tar//. See the corresponding manual pages (//man tar// and //man unzip//) for more information. | ||
+ | |||
+ | Before building external packages, it is important that you choose where you will install them. This corresponds to the // | ||
+ | - Installing them all in one common prefix, in order to make it easier to find them. In this case, we recommend you to include // | ||
+ | - Installing each of them in a separate directory, in order to play more easily with the different versions and make compatibility tests as well as benchmarks, e.g. // | ||
+ | - Grouping them by compiler vendor and version, if you find yourself in a situation where you have to build packages for different compilers. This explicit separation is often necessary because Fortran modules are unfortunately incompatible between compiler vendors and even many times between different versions of the same compiler too. | ||
+ | You may of course make any combination of the previous or define your own structure if it makes more sense to you. If you want to be time-efficient, | ||
+ | |||
+ | When it comes to the build itself, do not hesitate to use //make -j// instead of //make// for packages that support parallel builds. You might gain an appreciable amount of time. | ||
+ | |||
+ | A good practice is to always run //make check// before //make install//, in order to run the test suite of the package after building it. Unfortunately, | ||
+ | |||
+ | After installing a package, you have to tell the system and the compilers where to look for it, which is something most beginners forget about. This corresponds to the //export ...// commands in the case of a Bourne-compatible shell (you would use //setenv// for a C-compatible shell). Prepending the install library path to // | ||
+ | |||
+ | <WRAP tip>If you are managing many packages on a shared computer, it might be worth learning // | ||
+ | |||
+ | ==== BigDFT: wavelets for low-dimensional systems ==== | ||
+ | |||
+ | BigDFT is a wavelet-based DFT code developed by the [[http:// | ||
+ | * http:// | ||
+ | If you are going to use BigDFT exclusively with Abinit, you may configure it with the following options to accelerate the build: | ||
+ | <code bash abinit-bigdft-config.sh> | ||
+ | Make sure that you enable the build of // | ||
+ | |||
+ | Please consult and/or report issues on the [[http:// | ||
+ | |||
+ | ==== ETSF_IO: platform-independent data exchange ==== | ||
+ | |||
+ | ETSF_IO is a Fortran library implementing the [[http:// | ||
+ | |||
+ | ETSF_IO depends on NetCDF (Network Common Data Form) to ensure the platform-independence of the data. NetCDF is available on most supercomputers and from standard packages in all Linux distributions. On other platforms, it may sometimes be tricky to get NetCDF running properly. This is why we strongly advise you to consult the NetCDF website and the NetCDF developers for any question related to the build of NetCDF. They will help you way better than we could ourseleves. The NetCDF website contains comprehensive documentation about NetCDF and its components. It can be found there: | ||
+ | * [[http:// | ||
+ | Once you know a little bit about NetCDF, its complexity, and its dependencies, | ||
+ | <code bash abinit-netcdf-config.sh> | ||
+ | It will work on most platforms, with however no guarantee. The [[http:// | ||
+ | |||
+ | Once you have a running NetCDF installation, | ||
+ | * [[https:// | ||
+ | If NetCDF has been installed in a non-standard directory, you will have to let the configure script of ETSF_IO know where to find it through its // | ||
+ | <code bash abinit-etsf_io-config.sh> | ||
+ | Another important option is where ETSF_IO will install its Fortran modules. By default it will store them under // | ||
+ | |||
+ | ==== FFTW: Fastest Fourier Transform in the West ==== | ||
+ | |||
+ | Although Abinit has its own Fourier transform routines, FFTW is an optimized Fast Fourier Transform library which can provide an interesting speedup on some architectures and for some calculations. It is very widely available on all kinds of platforms, which means that you will likely not have to build it yourself. Should you need to do it, the FFTW website will provide you with all you need to build the library: | ||
+ | * [[http:// | ||
+ | A bit of caution, though: if you build FFTW yourself, the optimization flags you provide the compiler with will have a critical influence on the performance of the library, both in terms of speed and accuracy. We highly recommend you to run the test suite of FFTW before using it with Abinit and consult experts around you or on internet to adjust the compile flags in a safe and efficient manner. | ||
+ | |||
+ | ==== FoX: XML I/O support ==== | ||
+ | |||
+ | [[wp> | ||
+ | * the reading of PAW datasets; | ||
+ | * the writing of XML output for post-processing. | ||
+ | Since FoX is used punctually and at very well defined moments during the calculations to access small files, optimization is not a concern at all. This makes it easier to build the library and debug potential issues. | ||
+ | |||
+ | FoX can be downloaded from the website of the University of Bristol: | ||
+ | * [[http:// | ||
+ | If you plan to use FoX exclusively with Abinit, just know that Abinit only requires the SAX parser to work. You may thus configure FoX with the following options: | ||
+ | <code bash abinit-fox-config.sh> | ||
+ | Issues should be reported to the GitHub bug tracker of FoX: | ||
+ | * [[https:// | ||
+ | |||
+ | ==== GSL: GNU Scientific Library for mathematical operations ==== | ||
+ | |||
+ | GSL provides various mathematical routines to perform interpolation, | ||
+ | |||
+ | GSL can be downloaded from the GNU website and all its mirrors: | ||
+ | * [[https:// | ||
+ | GSL does not require any particular tuning to work with Abinit. As it is a well-designed and portable project, the standard procedure described above should work seamlessly in most cases. | ||
+ | |||
+ | Should you encounter any issue while building GSL, please follow the guidance that you can find on the GSL webpage: | ||
+ | * [[https:// | ||
+ | |||
+ | ==== Levmar: Levenberg-Marquardt algorithm for GW ==== | ||
+ | |||
+ | When performing GW calculations, | ||
+ | |||
+ | Levmar is a C++ library which can be downloaded from there: | ||
+ | * [[http:// | ||
+ | Although this library is relatively small and straightforward to build, you have to be prepared to do some manual adjustments on some architectures. And since its use is limited to particular kinds of GW calculations, | ||
+ | |||
+ | Potential issues when building Levmar should be reported to: | ||
+ | * [[mailto: | ||
+ | |||
+ | ==== Libpspio: reading atomic data generated for other programs ==== | ||
+ | |||
+ | Libpspio is a general-purpose library to read and write pseudopotential formats. It is part of the [[http:// | ||
+ | |||
+ | Libpspio can be downloaded from Launchpad: | ||
+ | * [[https:// | ||
+ | |||
+ | Libpspio is a C library and does not build Fortran interfaces by default. If you plan to use it with Abinit, please configure it with // | ||
+ | <code bash abinit-libpspio-config.sh> | ||
+ | Please note that Libpspio is still under active development and may randomly fail. Using it means that you are willing to contribute by testing it and reporting bugs. | ||
+ | |||
+ | Should you encounter any issue with Libpspio, please report it to its Launchpad bug tracker: | ||
+ | * [[https:// | ||
+ | |||
+ | ==== LibXC: reference library for exchange-correlation functionals ==== | ||
+ | |||
+ | LibXC is a library providing a few hundreds of exchange-correlation functionals, | ||
+ | |||
+ | You can download LibXC from the Octopus website: | ||
+ | * [[http:// | ||
+ | LibXC is a C library, with Fortran interfaces. In order to make sure it will be usable by Abinit, please use the // | ||
+ | <code bash abinit-libxc-config.sh> | ||
+ | On some systems, you may encounter issues with shared libraries. Should this happen, just use the // | ||
+ | |||
+ | Since exchange-correlation is a critical component of any DFT calculation, | ||
+ | * [[mailto: | ||
+ | * [[http:// | ||
+ | |||
+ | ==== LibYAML: YAML I/O support ==== | ||
+ | |||
+ | [[wp> | ||
+ | |||
+ | Abinit is currently able to use the YAML part of the Flib library of BigDFT to produce YAML output. Please note that this feature is experimental and still requires some work. Using it means that you are ready to contribute and report bugs. | ||
+ | |||
+ | For more information, | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | ==== Wannier90: Maximally-Localized Wannier Functions (MLWFs) ==== | ||
+ | |||
+ | Wannier90 is a Fortran package to compute and use Maximally-Localized Wannier Functions (MLWFs). It is mainly used in Abinit for transport calculations and to evaluate van der Waals interactions between atoms and molecules. It can be used either as a stand-alone executable or as a library. | ||
+ | |||
+ | The pristine version of Wannier90 can be downloaded from there: | ||
+ | * [[http:// | ||
+ | However, it cannot be used directly with Abinit, as it does not make available all the information needed by Abinit. This is why we provide a patched version on Launchpad: | ||
+ | * [[https:// | ||
+ | |||
+ | The build of Wannier90 is relatively straightforward and only requires the location of linear algebra libraries. Following the instructions provided in the source package is generally sufficient and has proven seamless in most situations. | ||
+ | |||
+ | ===== Alternatives ===== | ||
+ | |||
+ | At present, the only alternative to correctly installing the external dependencies of Abinit are the [[https:// |
build/extdeps_summary.txt · Last modified: 2017/11/07 14:56 by Yann Pouillon