Opened 3 years ago

Last modified 3 years ago

#216 assigned

Build ODB API version 0.10.3

Reported by: Jin Lee Owned by: Tan Le
Priority: major Component: ACCESS model
Keywords: ODB API OPS build compile link library Cc: Jin Lee, Tan Le, Yi Xiao, Peter Steinle, Fabrizio Baordo, Susan Rennie, Zhihong Li

Description

ODB API consists of:

  • library dealing with the new ODB2/ODA format
  • the "odb" and "odb_migrator" executables
  • the python interface

The ODB API library is used during the building of OPS32.0.0. Also during OPS32.0.0 build an ODB API Fortran source file is compiled and linked.

This ticket describes in detail how to build the ECMWF ODB API package (version 0.10.3).

Change History (5)

comment:1 Changed 3 years ago by Jin Lee

Here's a brief explanation of how ODB API is used in OPS building as described by David Davies

Thu 23/07/2015 11:17 PM

The ODB versions used are 1.0.0 for ODB (with some modifications) and ODB API 0.10.3. They are not the same thing; I don't know if they will every be combined. The ODB package contains the code for the original ODB format, including the Fortran interface, the backend, the SQL - C converted and various scripts like odbdup, odbless, odbsql for command line usage. The changes I made were for porting purposes, nothing functional, I can send you those changes if you like. We build it inline with the code but you don't have to do that if it is easier to generate a separate installation and link that, it is up to you. The ODB API package contains the libraries for dealing with the new ODB2/ODA format, the odb and odb_migrator executables and the python interface. We handle this by building the installation separately and linking to it rather than building it inline *except* there is a single Fortran file for interfacing with Fortran programs, we build that file only as part of the OPS build (as it is compiler dependent whereas the library is not).

There has recently be an ODB API 0.10.5 released. I haven't tried it yet. It seems that eckit has been removed from it but is still required; they haven't released that as a separate library yet. It seems that the only way to build ODB API 0.10.5 at the moment is to build ODB API 0.10.3 as well and make the ODB API 0.10.5 install use the 0.10.3 version of eckit.

Let me know if you need me to send anything.

David Davies From: Jin Lee [J.Lee@…] Sent: 23 July 2015 13:45 To: Davies, David Cc: Susan Rennie Subject: RE: obtaining OPS source - OPS31.0.0 [SEC=UNCLASSIFIED]

Hi David,

After receiving Adam's email about the availability of OPS32.0.0 on the shared repository (hooray!) I have started working on creating FCM make config files for our site. With ODB sources there's a couple of references to Met Office internal repositories (in common/core.cfg):

$odb_rev = 89 $odb_api_rev = 184

Perhaps this is a good opportunity for us to use the same ODB code that Met Office uses. Can you please tell me what ODB version $odb_rev=89 corresponds to?

About ODB API: I thought ODB API's were part of ODB source (?) Do we ask for ODB API's from ECMWF? If that's the case do you mind telling me what version of ODB API $odb_api_rev=184 corresponds to?

Thank you.

Regards,

Jin

comment:2 Changed 3 years ago by Jin Lee

comment:3 Changed 3 years ago by Jin Lee

Cc: Zhihong Li added

comment:4 Changed 3 years ago by Jin Lee

Owner: changed from Jin Lee to Tan Le
Status: newassigned

comment:5 Changed 3 years ago by Tan Le

odb api version 0.10.3 has been compiled and installed on raijin, and is available for linking with ops32 for testing of ODBcreate.

module load odbapi/0.10.3

the following env settings and options are use in the building of odbapi/0.10.3

module use ~access/modules
module unload netcdf intel-cc intel-fc intel-mpi
module del openmpi
module load cmake
#module load netcdf/4.1.3
module load netcdf/3.6.3
module load intel-cc/15.0.1.133
module load intel-fc/15.0.1.133
module load intel-mpi/5.0.3.048

module unload python/2.7.6-matplotlib

module load odb/1.0.0

cmake ../.. \

-DCMAKE_BUILD_TYPE=production \
-DCMAKE_PREFIX_PATH=$PYTHON_BASE \
-DCMAKE_C_COMPILER=/apps/intel-ct/cc-wrapper/icc \
-DCMAKE_CXX_COMPILER=/apps/intel-ct/cc-wrapper/icpc \
-DCMAKE_Fortran_COMPILER=/apps/intel-ct/fc-wrapper/ifort \
-DCMAKE_INSTALL_PREFIX=/projects/access/apps/odb/odbapi/0.10.3 \
-DFORTRAN_LIBRARIES="-L$INTEL_FC_ROOT/lib/intel64 -lifcore -lifport -liomp5" \
-DCMAKE_C_FLAGS="-nofor_main" \
-DODB_PATH=$ODB_ROOT \
-DECKIT_SOURCE=$SRC/eckit \
-DBUILD_SHARED_LIBS=ON \
-DENABLE_MIGRATOR=ON \
-DENABLE_FORTRAN=ON \
-DENABLE_PYTHON=ON \
-DBISON_EXECUTABLE=/usr/bin/bison \
-DSWIG_EXECUTABLE=/usr/bin/swig

Note: See TracTickets for help on using tickets.