OpenMP support

Some of the CDO operators are shared memory parallelized with OpenMP. An OpenMP-enabled C compiler is needed to use this feature. Users may request a specific number of OpenMP threads nthreads with the '-P' switch.

Here is an example to distribute the bilinear interpolation on 8 OpenMP threads:

cdo -P 8  remapbil,targetgrid  ifile  ofile
Many CDO operators are I/O-bound. This means most of the time is spend in reading and writing the data. Only compute intensive CDO operators are parallelized. The following CDO operators are parallelized with OpenMP:

Module Operator Description
Detrend detrend Detrend
Ensstat ensmin Ensemble minimum
Ensstat ensmax Ensemble maximum
Ensstat enssum Ensemble sum
Ensstat ensmean Ensemble mean
Ensstat ensavg Ensemble average
Ensstat ensvar Ensemble variance
Ensstat ensstd Ensemble standard deviation
Ensstat enspctl Ensemble percentiles
Fourier fourier Fourier transformation
Genweights genbil Generate bilinear interpolation weights
Genweights genbic Generate bicubic interpolation weights
Genweights gendis Generate distance-weighted average remap weights
Genweights gennn Generate nearest neighbor remap weights
Genweights gencon Generate 1st order conservative remap weights
Genweights gencon2 Generate 2nd order conservative remap weights
Genweights genlaf Generate largest area fraction remap weights
Gridboxstat gridboxmin Gridbox minimum
Gridboxstat gridboxmax Gridbox maximum
Gridboxstat gridboxsum Gridbox sum
Gridboxstat gridboxmean Gridbox mean
Gridboxstat gridboxavg Gridbox average
Gridboxstat gridboxvar Gridbox variance
Gridboxstat gridboxstd Gridbox standard deviation
Remapeta remapeta Remap vertical hybrid level
Remap remapbil Bilinear interpolation
Remap remapbic Bicubic interpolation
Remap remapdis Distance-weighted average remapping
Remap remapnn Nearest neighbor remapping
Remap remapcon First order conservative remapping
Remap remapcon2 Second order conservative remapping
Remap remaplaf Largest area fraction remapping