fimex:install

LDAP: couldn't connect to LDAP server

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 [2012-01-18 14:10:31]
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 -ftree-vectorize -fno-math-errno' CXXFLAGS='-O2 -mfpmath=sse -msse2 -ftree-vectorize -fno-math-errno' ./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 and performs very slowly (> factor 2) when calculating sqrt(nan). This is already the default on i386-64. 
-  * //-ftree-vectorize -fno-math-errno// gives tiny performance gain through auto-vecotrization. //-fno-math-errno// is required to enable vectorization of intrinsic functions like //sqrt//. 
-  * //-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. 
-  * //-O3// gives no visible performance gain. 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.1326895831.txt.gz
  • Last modified: 2022-05-31 09:23:15
  • (external edit)