fimex:install

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
fimex:install [2011-12-21 09:56:50]
heikok [Build]
fimex:install [2026-02-04 09:41:20] (current)
alexanderb
Line 1: Line 1:
 ====== Installation ====== ====== Installation ======
  
-===== Pre-build Packages =====+Please see the wiki on [[https://github.com/metno/fimex/wiki/Build|github]].
  
-If you are lucky to run one of the following operating systems, you can install fimex from a package repository: 
- 
-==== Ubuntu 10.04 Lucid ==== 
- 
-Ubuntu Lucid packages are available since 0.28 at: https://launchpad.net/~heiko-klein/+archive/fimex 
- 
-==== Ubuntu 8.04 Hardy ==== 
- 
-Ubuntu Lucid packages are available up to 0.25 at: https://launchpad.net/~heiko-klein/+archive/fimex 
- 
- 
-===== Dependencies ===== 
- 
-Fimex requires at least the following libraries to be installed for compilation: 
-  * c99/c++ compiler 
-  * [[http://www.xmlsoft.org|libxml2]] >= 2.5.0 
-  * [[http://www.boost.org/|boost library]] >= 1.32 
-  * [[http://proj.maptools.org|proj-4]] >= 4.4.9 
-  * [[http://www.unidata.ucar.edu/packages/udunits/|udunits]] 1.12.x or >= 2.1.x 
-  
-To configure the different file formats it requires: 
-  * [[http://www.unidata.ucar.edu/software/netcdf/|NetCDF]] (netcdf-3 > 3.6) 
-  * Felt (libmi or libfelt (bundled)) 
-  * [[http://www.ecmwf.int/products/data/software/grib_api.html|grib_api]] (> 1.4) 
- 
-===== Build ===== 
- 
-The installation follows the usual autoconf rules, see 'INSTALL' for 
-extensive information. Since Fimex makes some floating-point calculations 
-in large loops, it is advisable to switch on SIMD/SSE operations in your 
-compiler. On a Xeon machine with a x386 machine and gcc, I use the  
-following flags (those are default for x86-64) (see [[http://heikok.blogspot.com/2008/08/microbenchmark-of-sse-in-c-revisited.html|microbenchmark of sse]] for more information) 
- 
-Since fimex 0.21 
-<code> 
-CFLAGS='-O2 -mfpmath=sse -msse2' CXXFLAGS='-O2 -mfpmath=sse -msse2' ./configure --with-netcdf=/usr --with-udunits=/usr 
-make 
-make check 
-make install 
-</code> 
- 
- 
-In case of compilation against the netcdf4 library with hdf5 support, additional libraries needed by a static netcdf4 need to be added manually in LDFLAGS. Those can be retrieved from the nc-config program, e.g. 
-<code> 
- $ /usr/local/netcdf/netcdf-4.1.1/bin/nc-config/nc-config --libs 
--L/usr/local/netcdf/netcdf-4.1.1/lib -lnetcdf -L/usr/local/hdf/hdf5-1.8.5-patch1/lib -lhdf5_hl -lhdf5 -lz -lm -lgpfs 
- $ export LDFLAGS='-L/usr/local/hdf/hdf5-1.8.5-patch1/lib -lhdf5_hl -lhdf5 -lz -lm -lgpfs' 
-</code> 
- 
-==== Optimizations with gcc ==== 
- 
-The following optimizations have been tried with gcc 4.4 and kd-tree interpolation. 
- 
-  * **-O2** general optimizations like loop-unrolling/inline  
-  * **-mfpmath=sse -msse2** on i386 computers, use math from sse-unit. The build-in FPU is not IEEE conform an performs very slowly (> factor 2) when calculating sqrt(nan). This is already the default on i386-64. 
-  * //-fno-trapping-math -fno-signaling-nans// fimex does not make use of trapping-math or signaling-nans, so this option can safely be switched on. Unfortunately, this does not give any performance gain. 
-  * //-ftree-vectorize// or //-O3// should in theory give a good performance gain through auto-vectorization of the loops, but none is visible. This should be tested again with newer compiler-versions. 
-  * //-fprofile-generate/-fprofile-use// gives a performance gain of ~4%. Since it complicates the build, it is not used by default. 
- 
-==== Parallelization (OpenMP) ==== 
- 
-Fimex can be build with OpenMP parallelization support with the //configure// option //--enable-openmp//. The following operations are parallelized: 
- 
-  * interpolation: fill2d (good parallelization on z-axis) 
-  * interpolation with coord_nearestneighbor (good parallelization in startup) 
- 
-=== CAVEAT === 
- 
-Due to a bug in libtool, the options required for linking again a parallelized libfimex are not set automatically and need be entered manually by the programmer using libfimex: https://lists.gnu.org/archive/html/bug-libtool/2011-03/msg00022.html 
- 
- 
-===== Test ===== 
- 
-  * Download the file with testdata: {{:fimex:flth00.dat.gz|}} 
-  * Put this file into the test-catalogue 
-  * gunzip the file 
-  * run 'make check' (make check will work even without the testdata and skip a lot of tests) 
  • fimex/install.1324461410.txt.gz
  • Last modified: 2022-05-31 09:23:15
  • (external edit)