Difference between revisions of "SMOKE Installation Notes"

From LADCO Wiki
Jump to: navigation, search
(Compile SMOKE)
 
(One intermediate revision by the same user not shown)
Line 6: Line 6:
  
 
Install Intel Compiler. Two components: [https://www.intel.com/content/www/us/en/develop/documentation/installation-guide-for-intel-oneapi-toolkits-linux/top/installation/install-using-package-managers/yum-dnf-zypper.html One API Base Toolkit & One API HPC Toolkit]
 
Install Intel Compiler. Two components: [https://www.intel.com/content/www/us/en/develop/documentation/installation-guide-for-intel-oneapi-toolkits-linux/top/installation/install-using-package-managers/yum-dnf-zypper.html One API Base Toolkit & One API HPC Toolkit]
 +
 +
Add the following lines to your .cshrc
 +
 +
if ( ! $?intel_sourced ) then
 +
  setenv intel_sourced "yes"
 +
  bash -c 'source /opt/intel/oneapi/setvars.sh ; exec csh'
 +
endif
  
 
== Libraries ==
 
== Libraries ==
Line 89: Line 96:
 
  ! Add the following line
 
  ! Add the following line
 
         INTEGER, PARAMETER :: M3TYPES( NM3TYPES ) = (/ M3INT, M3REAL, M3DBLE, M3INT8 /)
 
         INTEGER, PARAMETER :: M3TYPES( NM3TYPES ) = (/ M3INT, M3REAL, M3DBLE, M3INT8 /)
 +
 +
Manually change the SMOKE exec directory to note where it was compiled
 +
 +
cd /t10/apps/SMOKE/SMOKEv4.8.1/subsys/smoke
 +
mv Linux2_x86_64ifort Linux2_x86_64ifort.cluster1

Latest revision as of 02:54, 9 December 2021


Cluster 1 Installation

System updates

 sudo yum install m4

Install Intel Compiler. Two components: One API Base Toolkit & One API HPC Toolkit

Add the following lines to your .cshrc

if ( ! $?intel_sourced ) then
  setenv intel_sourced "yes"
  bash -c 'source /opt/intel/oneapi/setvars.sh ; exec csh'
endif

Libraries

IOAPI

Download the latest I/O API library from the CMAS Center, untar in the desired location

Go to the source code location, copy the makefile template, and set environment variables to compile for your system (e.g., Intel fortran):

 tar xvzf 20200828.tar.gz
 cd ioapi-3.2-20200828/ioapi
 cp Makefile.nocpl Makefile
 setenv BIN Linux2_x86_64ifort
 mkdir /t10/apps/IOAPI/ioapi-3.2-20200828/$BIN
 make

A couple of notes:

  • Edit the Makefile to set the installation directory BASEDIR
  • You need to manually create the output directory because this feature isn't working in the I/O API install package

NetCDF

Use netCDF C version 4.6.1 and Fortran version 4.2 (tar files available here: /t5/apps/NETCDF)

First untar and compile the C version of netCDF

tar xvzf netcdf-4.6.1.tar.gz
cd netcdf-4.6.1
setenv C_NCF_OUT /t10/apps/NETCDF/netcdf-4.6.1/Linux2_x86_64ifort_v2021.4.0
setenv CC icc
setenv FC ifort
./configure --prefix $C_NCF_OUT --disable-netcdf-4 --disable-dap
make
make install

Then compile the Fortran version of netCDF

tar xvzf netcdf-fortran-4.2.tar.gz
cd netcdf-fortran-4.2
setenv F_NCF_OUT /t10/apps/NETCDF/netcdf-fortran-4.2/Linux2_x86_64ifort_v2021.4.0
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${C_NCF_OUT}/lib
setenv CPPFLAGS -I${C_NCF_OUT}/include
setenv LDFLAGS -L${C_NCF_OUT}/lib
./configure --prefix $F_NCF_OUT
make
make install

Compile SMOKE

Download and install the source code per the instructions in the SMOKE manual.

Link the I/O API installation directory where SMOKE expects to see it

cd /t10/apps/SMOKE/SMOKEv4.8.1/subsys
ln -s /t10/apps/IOAPI/ioapi-3.2-20200828 ioapi

Link in the netCDF libraries into the I/O API library directory (this is what SMOKE expects)

cd /t10/apps/SMOKE/SMOKEv4.8.1/subsys/ioapi/Linux2_x86_64ifort
ln -s /t10/apps/NETCDF/netcdf-4.6.1/Linux2_x86_64ifort_v2021.4.0/lib/libnetcdf.a .
ln -s /t10/apps/NETCDF/netcdf-fortran-4.2/Linux2_x86_64ifort_v2021.4.0/lib/libnetcdff.a .

Configure the SMOKE Makeinclude file

cd /t10/apps/SMOKE/SMOKEv4.8.1/subsys/smoke/src
vi Makeinclude

Add these two lines to the file, right before the BASEDIR setting:

SMK_HOME = /t10/apps/SMOKE/SMOKEv4.8.1
BIN = Linux2_x86_64ifort

Compile using the Makefile in the same directory

make |& tee make.cluster1.log 

Note: the intel compiler didn't like the syntax in one of the include files of the 20200828 version of the I/O API

vi /t10/apps/SMOKE/SMOKEv4.8.1/ioapi/ioapi/fixed_src/PARMS3.EXT
! Original code, comment out these lines
!        INTEGER, PARAMETER :: M3TYPES( NM3TYPES ) =                             &
!     &        (/ M3INT, M3REAL, M3DBLE, M3INT8 /)

! Add the following line
       INTEGER, PARAMETER :: M3TYPES( NM3TYPES ) = (/ M3INT, M3REAL, M3DBLE, M3INT8 /)

Manually change the SMOKE exec directory to note where it was compiled

cd /t10/apps/SMOKE/SMOKEv4.8.1/subsys/smoke
mv Linux2_x86_64ifort Linux2_x86_64ifort.cluster1