Opened 4 years ago

Last modified 4 years ago

#212 new

Build ODB API module

Reported by: Yi Xiao Owned by: Yi Xiao
Priority: major Component: BOM ACCESS
Keywords: APS3 Executable WG Cc: t.le@…, z.li@…, P.Steinle@…, R.Bowen@…, G.Dietachmayer@…

Description

To build OPS32.0.0 executable, it is required to have access to a pre-build odbapi module.
The required source code is at

https://access-svn.nci.org.au/svn/odb/trunk/odb_api/OdbAPI-0.10.3-Source

Currently our APS3 build environment is defined as below:
module load intel-cc/15.0.1.133
module load intel-fc/15.0.1.133
module load intel-mpi/5.0.3.048
This environment may change in the future.
Tan is the most suitable person to do this task. The estimate time for Tan is 1 day.

Change History (5)

comment:1 Changed 4 years ago by Yi Xiao

Cc: t.le@… z.li@… P.Steinle@… R.Bowen@… G.Dietachmayer@… added; t.le@… z.li@… bom.gov.au y.xiao@… P.Steinle@… R.Bowen@… G.Dietachmayer@… removed

comment:2 Changed 4 years ago by Yi Xiao

Component: ACCESS modelBOM ACCESS

We actually also need odb module rebuilt.
Information has passed to Tan, and Tan will
work on this request.

comment:3 Changed 4 years ago by Tan Le

I have compiled and installed the met office version of odb1.0.0 based on the info from Xiao, it is now available with "module load odb/1.0.0", the testing of which will rely opon OPS32 ODBcreate.

===
ODB source

https://access-svn.nci.org.au/svn/odb/trunk/odb/Odb-1.0.0-Source

https://access-svn.nci.org.au/svn/odb/trunk/odb/Odb-1.0.0-Source-meto

can you have a look the difference?

Odbapi source

https://access-svn.nci.org.au/svn/odb/trunk/odb_api/OdbAPI-0.10.3-Source

compiler and mpi:

module use ~access/modules
module del openmpi intel-fc intel-cc perl netcdf
module load intel-cc/15.0.1.133
module load intel-fc/15.0.1.133

module load intel-mpi/5.0.3.048

ODB schema in OPS32

/g/data1/dp9/ycx548/ops/ops32/r175_bom_nci/src/code/ODB/sql
===

My interpretation of the numerous comments from Jin is that we should use the met office version, and based on that I have worked on the original, un-tampered version in

https://access-svn.nci.org.au/svn/odb/branches/local/odb/Odb-1.0.0-Source-meto

as the version in trunk does not compile.

Although I used to compile the older versions of odb with mpicc/mpicxx/mpif90, from the "ticket summary" it seems to suggest icc/icpc/ifort, which I am unsure of if they were suggestions from the MetOffice?? or Jin's own interpretation, so the first attempt is to use to non-mpi version of compilers. This can be re-compiled if required by OPS.

Again from ticket summary the suggestion was to use netcdf version 4+, again I can not separate comments from the MetOffice?? and that of Jin's, anyway this version is not compatible with static lib. After a few unsuccessful attempts I have decided to use netcdf 3 instead. This issue can be revisited if required.

in summary the options to build are

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

cmake $SOURCE_DIR \

-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX="/projects/access/apps/odb/linux/odb1.0.0" \
-DCMAKE_SKIP_RPATH=ON \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_C_COMPILER=/apps/intel-ct/cc-wrapper/icc \
-DCMAKE_C_FLAGS="-g -traceback -DINTEL -DLINUX -lcurl" \
-DCMAKE_C_FLAGS_DEBUG="-O0" \
-DCMAKE_C_FLAGS_RELEASE="-O3 -DNDEBUG" \
-DCMAKE_CXX_COMPILER=/apps/intel-ct/cc-wrapper/icpc \
-DCMAKE_Fortran_COMPILER=/apps/intel-ct/fc-wrapper/ifort \
-DCMAKE_Fortran_FLAGS="-Bdynamic -g -openmp -fpp -convert big_endian -integer-size 32 -real-size 64 -fpe0 -traceback -assume byterecl -assume cc_omp -assume underscore -names lowercase -DLINUX -lcurl" \
-DCMAKE_Fortran_FLAGS_DEBUG="-O0" \
-DCMAKE_Fortran_FLAGS_RELEASE="-O3" \
-DNETCDF_PATH="$NETCDF_BASE" \
-DNETCDF_STATIC=ON \
-DODB_API_PATH="/projects/access/apps/odb/odbapi/0.10.3" \
-DODB_API_TOOLS=OFF $@

comment:4 Changed 4 years ago by Tan Le

odb/1.0.0 had since been re-built with mpicc/mpicxx/mpif90. the build options are

cmake $SOURCE_DIR \

-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX="/projects/access/apps/odb/linux/odb1.0.0" \
-DCMAKE_SKIP_RPATH=ON \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_C_COMPILER=/apps/intel-mpi/5.0.3.048/intel64/bin/mpicc \
-DCMAKE_C_FLAGS="-fPIC -g -traceback -DINTEL -DLINUX -lcurl" \
-DCMAKE_C_FLAGS_DEBUG="-O0" \
-DCMAKE_C_FLAGS_RELEASE="-O3 -DNDEBUG" \
-DCMAKE_CXX_COMPILER=/apps/intel-mpi/5.0.3.048/intel64/bin/mpicxx \
-DCMAKE_Fortran_COMPILER=/apps/intel-mpi/5.0.3.048/intel64/bin/mpif90 \
-DCMAKE_Fortran_FLAGS="-Bdynamic -fPIC -g -openmp -fpp -convert big_endian -integer-size 32 -real-size 64 -fpe0 -traceback -assume byterecl -assume cc_omp -assume underscore -names lowercase -DLINUX -lcurl" \
-DCMAKE_Fortran_FLAGS_DEBUG="-O0" \
-DCMAKE_Fortran_FLAGS_RELEASE="-O3" \
-DNETCDF_PATH="$NETCDF_BASE" \
-DNETCDF_STATIC=ON \
-DODB_API_PATH="/projects/access/apps/odb/odbapi/0.10.3" \
-DODB_API_TOOLS=OFF $@

comment:5 Changed 4 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.