====== Software stacks ======= ===== Overview ===== Building, deploying and running scientific software relies upon different categories of applications: * system applications, which provide the basis of the development environment; * development tools, to manage the source code and deployment of scientific software; * scientific libraries, on which scientific programs directly depend; * scientific programs, to perform the actual calculations. Each category is compatible with a specific range of versions of the other ones. On a personal computer, it is relatively easy to provide sufficiently recent applications and tools. However, on production clusters, a significant part of the environment may be outdated. Here, we describe how to install the necessary software in each of the above categories. ===== System applications ===== ==== Compilers ==== A lot of scientific software is written in Fortran, while many operating systems do not have Fortran support by default or provide outdated versions of the corresponding compilers. This is why it is essential to check that a suitable compiler and version is installed on your system, then install one yourself if not. The reference set of compilers is GCC, the [[https://gcc.gnu.org/|GNU Compiler Collection]]. When accessing a new computer for the first time, the very first thing to do is to check which version of GCC is installed, by typing the following: gcc --version g++ --version gfortran --version If GCC is correctly installed, the 3 commands should return the same version number. If one of them is missing, the best is to install a recent version of GCC yourself. For scientific software, the criteria to choose a version of GCC is: * a stable version, i.e. a branch which is in bugfix-only mode; * the highest available patch level in the selected branch; * a sufficient support of the required Fortran standard (e.g. GCC >= 5 for Fortran 2003). Here are a few pointers to facilitate your choices: * "Supported releases" frame on the [[https://gcc.gnu.org/|GCC Home Page]]; * [[https://gcc.gnu.org/develop.html#timeline|GCC Development Timeline]]; * [[https://gcc.gnu.org/fortran/|GNU Fortran Home Page]]. To install GCC, follow the instructions provided on the [[https://gcc.gnu.org/install/|GCC installation page]]. ==== Python ==== The use of Python has greatly spread and expanded among the scientific community over the last decade. In particular, it has now become a requirement for many testing and post-processing tools.