tpism.rst - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch) (HTM) git clone git://src.adamsgaard.dk/pism (DIR) Log (DIR) Files (DIR) Refs (DIR) LICENSE --- tpism.rst (6910B) --- 1 .. include:: ../global.txt 2 3 .. _sec-install-pism: 4 5 Building PISM 6 ------------- 7 8 To make sure that the key PETSc and MPI prerequisites work properly together, so that you 9 can run PISM in parallel, you might want to make sure that the correct ``mpiexec`` can be 10 found, by setting your ``PATH``. For instance, if you used the option 11 ``--download-mpich=1`` in the PETSc configure, the MPI ``bin`` directory will have a path 12 like ``$PETSC_DIR/$PETSC_ARCH/bin``. Thus the following lines might appear in your 13 ``.bashrc`` or ``.profile``, if not there already: 14 15 .. code-block:: bash 16 17 export PETSC_DIR=/home/user/petsc-3.10.2/ 18 export PETSC_ARCH=opt 19 export PATH=$PETSC_DIR/$PETSC_ARCH/bin/:$PATH 20 21 From now on we will assume that the ``PETSC_ARCH`` and ``PETSC_DIR`` variables are set. 22 23 Follow these steps to build PISM: 24 25 #. Get the latest source for PISM using the Git_ version control system: 26 27 Check `PISM's website <PISM_>`_ for the latest version of PISM. 28 29 .. _git-clone: 30 31 Run 32 33 .. code-block:: bash 34 35 git clone git://github.com/pism/pism.git pism-stable 36 37 A directory called "``pism-stable``" will be created. Note that in the future when you 38 enter that directory, ``git pull`` will update to the latest revision of PISM. [#]_ 39 40 #. Build PISM:[#]_ 41 42 .. code-block:: bash 43 44 mkdir -p pism-stable/build 45 cd pism-stable/build 46 PISM_INSTALL_PREFIX=~/pism CC=mpicc CXX=mpicxx cmake .. 47 make install 48 49 Here ``pism-stable`` is the directory containing PISM source code while ``~/pism`` is 50 the directory PISM will be installed into. 51 52 Variables ``CC`` and ``CXX`` specify MPI compiler wrappers provided by your MPI 53 installation. 54 55 .. note:: 56 57 When using MPI's compiler wrappers, make sure that ``mpicc`` and ``mpicxx`` you 58 select were used to compile the PETSc library: *PISM and PETSc have to use the same 59 MPI installation.* 60 61 All the temporary files created during the build process will be in 62 ``pism-stable/build`` created above. 63 64 Commands above will configure PISM to be installed in ``~/pism/bin`` and 65 ``~/pism/lib/`` then compile and install all its executables and scripts. 66 67 If your operating system does not support shared libraries\ [#]_, then set 68 ``Pism_LINK_STATICALLY`` to "ON". This can be done by either running 69 70 .. code-block:: bash 71 72 cmake -DPism_LINK_STATICALLY=ON .. 73 74 or by using ``ccmake``\ [#]_ run 75 76 .. code-block:: bash 77 78 ccmake .. 79 80 and then change ``Pism_LINK_STATICALLY`` (and then press ``c`` to "configure" and ``g`` 81 to "generate Makefiles"). Then run ``make install``. 82 83 Object files created during the build process (located in the ``build`` sub-directory) 84 are not automatically deleted after installing PISM, so run "``make clean``" if space 85 is an issue. You can also delete the build directory altogether if you are not planning 86 on re-compiling PISM. 87 88 .. note:: 89 90 When using Intel's compiler high optimization settings such as ``-O3``, ``-fp-model 91 precise`` may be needed to get reproducible model results. Set it using ``ccmake`` 92 or by setting ``CFLAGS`` and ``CXXFLAGS`` environment variables when building PISM's 93 prerequisites and PISM itself. 94 95 .. code-block:: bash 96 97 export CFLAGS="-fp-model precise" 98 export CXXFLAGS="-fp-model precise" 99 cmake [other options] .. 100 101 .. note:: 102 103 To achieve best performance it can be useful to tell the compiler to target the 104 "native" architecture. (This gives it permission to use CPU instructions that may 105 not work on older CPUs.) 106 107 .. code-block:: bash 108 109 export CFLAGS="-march=native" 110 export CXXFLAGS="-march=native" 111 cmake [other options] .. 112 113 #. PISM executables can be run most easily by adding the ``bin/`` sub-directory in your 114 selected install path (``~/pism/bin`` in the example above) to your ``PATH``. For 115 instance, this command can be done in the Bash_ shell or in your ``.bashrc`` file: 116 117 .. code-block:: bash 118 119 export PATH=~/pism/bin:$PATH 120 121 #. Now see section :ref:`sec-install-quick-tests` or :ref:`sec-start` to continue. 122 123 .. _sec-install-pism-cmake-options: 124 125 PISM's build-time configuration 126 =============================== 127 128 Some of PISM's features (the ones requiring additional libraries, for example) need to be 129 enabled when building PISM. This section lists important build-time options. 130 131 .. csv-table:: 132 :header: Option, Description 133 134 ``CMAKE_BUILD_TYPE``, \"build type\": set to \"Debug\" for development 135 ``BUILD_SHARED_LIBS``, build shared (as opposed to static) libraries (this is the default) 136 ``Pism_LINK_STATICALLY``, set CMake flags to try to ensure that everything is linked statically 137 ``Pism_LOOK_FOR_LIBRARIES``, specifies whether PISM should look for libraries (disable this on Crays) 138 ``Pism_BUILD_EXTRA_EXECS``, build additional executables (needed to run ``make test``) 139 ``Pism_BUILD_PYTHON_BINDINGS``, build PISM's Python bindingd; requires ``petsc4py`` 140 ``Pism_USE_PROJ``, use the PROJ_ library to compute latitudes and longitudes of grid points 141 ``Pism_USE_PIO``, use the ParallelIO_ library to write output files 142 ``Pism_USE_PARALLEL_NETCDF4``, use NetCDF_ for parallel file I/O 143 ``Pism_USE_PNETCDF``, use PnetCDF_ for parallel file I/O 144 ``Pism_DEBUG``, enables extra sanity checks in the code (this makes PISM a lot slower but simplifies development) 145 146 To enable PISM's use of PROJ_, for example, run 147 148 .. code-block:: bash 149 150 cmake -DPism_USE_PROJ [other options] .. 151 152 .. _sec-install-local-libraries: 153 154 Building PISM with libraries in non-standard locations 155 ====================================================== 156 157 To build PISM with libraries installed in a non-standard location such as ``~/local/``, 158 use CMake's variable ``CMAKE_FIND_ROOT_PATH``. Set it to a semicolon-separated list of 159 directories. 160 161 For example, if ``netcdf.h`` is located in ``~/local/netcdf/include/`` and 162 ``libnetcdf.so`` is in ``~/local/netcdf/lib``, add ``~/local/netcdf`` to 163 ``CMAKE_FIND_ROOT_PATH``: 164 165 .. code-block:: bash 166 167 cmake -DCMAKE_FIND_ROOT_PATH=~/local/netcdf [other options] .. 168 169 To build PISM using parallel I/O libraries installed as described in 170 :ref:`sec-install-parallel-io-libs`, do this: 171 172 .. code-block:: bash 173 174 cmake -DCMAKE_FIND_ROOT_PATH="~/local/netcdf;~/local/pnetcdf;~/local/parallelio" \ 175 -DPism_USE_PNETCDF \ 176 -DPism_USE_PARALLEL_NETCDF4 \ 177 -DPism_USE_PIO \ 178 .. 179 180 .. rubric:: Footnotes 181 182 .. [#] Of course, after ``git pull`` you will ``make -C build install`` to recompile and 183 re-install PISM. 184 185 .. [#] Please report any problems you meet at these build stages by `sending us 186 <pism-email_>`_ the output. 187 188 .. [#] This might be necessary if you’re building on a Cray XT5 or a Sun Opteron Cluster, 189 for example. 190 191 .. [#] Install the ``cmake-curses-gui`` package to get ``ccmake`` on Ubuntu_.