PermafrostExecutorSiwenna: Difference between revisions

From CSDMS
m Words
m Set pymt==0.2
 
(20 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{PageTitle|Siwenna: wmt-permafrost}}
{{PageTitle|wmt-permafrost executor on siwenna}}


Instructions for installing and configuring a WMT executor on '''''siwenna'''''.
Instructions for installing and configuring a WMT executor on '''''siwenna'''''.
Line 7: Line 7:
--[[User:Mpiper|Mpiper]] ([[User talk:Mpiper|talk]]) 14:52, 22 February 2018 (MST)
--[[User:Mpiper|Mpiper]] ([[User talk:Mpiper|talk]]) 14:52, 22 February 2018 (MST)


==Set install directory==


==Install Python==
The install directory for this executor is '''/home/csdms/wmt/permafrost'''.


Install a Python distribution to be used locally by the executor.
install_dir=/home/csdms/wmt/permafrost
We like to use Miniconda.
mkdir -p $install_dir


mkdir -p /home/csdms/wmt/_testing && cd /home/csdms/wmt/_testing
==Install Python==
curl https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh -o miniconda.sh
bash ./miniconda.sh -f -b -p $(pwd)/conda
export PATH=$(pwd)/conda/bin:$PATH
root=$(pwd)


If working with an existing Python install, be sure to update everything before continuing:
{{:Shorter_Miniconda_install_instructions}}
 
conda update --all


==Install the CSDMS software stack==
==Install the CSDMS software stack==


A limiting factor in setting up this executor
A limiting factor in setting up this executor
is that the componentized version of ILAMB can only be run with `pymt=0.2`;
is the componentized version of ILAMB can only be run with `pymt=0.2`;
in particular,
in particular,
the BMI I wrote for ILAMB is incompatible
the BMI I wrote for ILAMB is incompatible
with the `model_metadata` package in newer versions of PyMT.
with the `model_metadata` package in newer versions of PyMT.
Further,
as of 2018-03-20,
wind back the `netcdf-fortran` package so that HDF5 1.8.18 is used.
There are problems with HDF5 1.10.1 and ESMF, used in PyMT.
To ensure all the packages meet the same dependencies
(looking at you, numpy),
simultaneously install `cca-tools`, `netcdf-fortran`, `pymt=0.2` and `csdms-ilamb`
using the ''csdms-stack'' conda channel (the [https://anaconda.org/csdms-stack/ Bakery]),


Using the ''csdms-stack'' conda channel (the [https://anaconda.org/csdms-stack/ Bakery]),
conda install cca-tools netcdf-fortran=4.4.4=5 pymt==0.2 csdms-ilamb -c csdms-stack -c defaults -c conda-forge
simultaneously install the `pymt=0.2` and `cca-tools` packages.
 
conda install cca-tools pymt=0.2 -c csdms-stack -c defaults -c conda-forge
 
Next, install `wmt-exe` from source.
 
mkdir -p $root/opt && cd $root/opt
git clone https://github.com/csdms/wmt-exe
cd wmt-exe
python setup.py develop


Install the `babelizer` for components that need to be built from source.
Install the `babelizer` for components that need to be built from source.
Line 51: Line 44:
  conda install ipython
  conda install ipython


When running IPython remotely on '''''siwenna''''',
Note that when running IPython remotely on '''''siwenna''''',
it's helpful to set
it's helpful to set


  export MPLBACKEND=Agg
  export MPLBACKEND=Agg


===Install executor software===
Install the `wmt-exe` package from source.
mkdir -p $install_dir/opt && cd $install_dir/opt
git clone https://github.com/csdms/wmt-exe
cd wmt-exe
python setup.py develop
Create a site configuration file that describes the executor and symlink it to the executor's '''etc/''' diectory.
python setup.py configure --wmt-prefix=$install_dir --launch-dir='/scratch/$USER/wmt/permafrost' --exec-dir='/scratch/$USER/wmt/permafrost'
ln -s "$(realpath wmt.cfg)" $install_dir/conda/etc
Here I've configured the executor to do stuff in the '''/scratch''' directory instead of the default '''~/.wmt'''.


==Install and test CSDMS components==
==Install and test CSDMS components==
Line 62: Line 70:
describes how to install and test a particular CSDMS component.
describes how to install and test a particular CSDMS component.


Currently installed components:
# BenchmarkIngestTool
# CMIP
# CRUAKTemp
# FrostNumberGeoModel
# FrostNumberModel
# ILAMB
# KuGeoModel
# KuModel
# ModelIngestTool
===ILAMB===
We installed ILAMB above.
Test it by starting a Python session
in '''$install_dir/test'''
and executing the setup and IRF methods.
from pymt.components import ILAMB
comp = ILAMB()
comp.get_component_name()
comp.setup('.')
At this point,
stop and edit '''bmi_ilamb.yaml''',
updating the `ilamb_root` attribute with the appropriate location on '''''siwenna''''',
'''/home/csdms/ilamb'''.
All other attributes can be left unchanged with their default values.
comp.initialize('bmi_ilamb.yaml')
comp.get_start_time()
comp.get_end_time()
comp.get_current_time()
comp.update()
comp.finalize()
ILAMB is run at the call to `update`.
The default run takes about 75 min.
===PBS===
Download and install the `pbs-executor` software from source.
cd $install_dir/opt
git clone https://github.com/permamodel/pbs-executor
cd pbs-executor
python setup.py develop
Babelize the PBS components.
cd $install_dir
mkdir -p build && cd build
bmi-babelize $install_dir/opt/pbs-executor --prefix=$install_dir/conda
Test a component (here, ModelIngestTool) by starting a Python session
in '''$install_dir/test'''
and executing the setup and IRF methods.
from pymt.components import ModelIngestTool
comp = ModelIngestTool()
comp.get_component_name()
comp.setup('.')
At this point,
suspend the IPython session and copy a sample config file and data from the `pbs-executor` repo.
(This could be improved.)
cd $install_dir/opt/pbs-executor/pbs_executor/data
cp ingest.yaml sftlf_fx_PBS-test_historical_r9i0p0.nc $install_dir/test
cd -
Restore the IPython session and continue.
comp.initialize('ingest.yaml')
comp.update()
comp.finalize()
View the '''index.html''' file that results.


===Permamodel===
===Permamodel===


Install the `permamodel` components from the Bakery.
Install the permamodel components from the Bakery
using the `csdms-permamodel` metapackage.


  conda install *permamodel* -c csdms-stack
  conda install csdms-permamodel -c csdms-stack


Test a component by starting a Python session
This metapackage contains
in '''$root/test'''
 
* csdms-permamodel-ku
* csdms-permamodel-frostnumber
* csdms-permamodel-kugeo
* csdms-permamodel-frostnumbergeo
* csdms-cruaktemp
 
Test a component (here, FnM) by starting a Python session
in '''$install_dir/test'''
and executing the setup and IRF methods.
and executing the setup and IRF methods.


Line 85: Line 183:
  comp.get_current_time()
  comp.get_current_time()
  comp.update()
  comp.update()
comp.finalize()
Check the ouput of the run
$ cat frostnumber_output.dat
Year: 2000  output=('0.396', '-1.000', '-1.000')
===CMIP===
Download and install the `cmip` software from source.
cd $install_dir/opt
git clone https://github.com/permamodel/cmip
cd cmip
python setup.py develop
Babelize the CMIP tool.
cd $install_dir
mkdir -p build && cd build
bmi-babelize $install_dir/opt/cmip --prefix=$install_dir/conda
Download the [https://csdms.colorado.edu/pub/users/mapi8461/WMT/sample_cmip-siwenna.cfg sample config file]
and test the babelized CMIP component by starting a Python session in '''$install_dir/test'''
and executing the setup and IRF methods.
from pymt.components import CMIP
comp = CMIP()
comp.get_component_name()
comp.initialize('sample_cmip-siwenna.cfg')
comp.get_start_time()
comp.get_end_time()
comp.get_current_time()
comp.update()
comp.get_current_time()
comp.update_until(comp.get_end_time())
comp.get_current_time()
  comp.finalize()
  comp.finalize()

Latest revision as of 16:43, 8 October 2018

wmt-permafrost executor on siwenna

Instructions for installing and configuring a WMT executor on siwenna.

--Mpiper (talk) 14:52, 22 February 2018 (MST)

Set install directory

The install directory for this executor is /home/csdms/wmt/permafrost.

install_dir=/home/csdms/wmt/permafrost
mkdir -p $install_dir

Install Python

Install a Python distribution to be used locally by WMT. We like to use Miniconda.

cd $install_dir
curl https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh -o miniconda.sh
bash ./miniconda.sh -f -b -p $(pwd)/conda
export PATH=$(pwd)/conda/bin:$PATH

If working with an existing Miniconda install, be sure to update everything before continuing:

conda update conda
conda update --all

Install the CSDMS software stack

A limiting factor in setting up this executor is the componentized version of ILAMB can only be run with `pymt=0.2`; in particular, the BMI I wrote for ILAMB is incompatible with the `model_metadata` package in newer versions of PyMT. Further, as of 2018-03-20, wind back the `netcdf-fortran` package so that HDF5 1.8.18 is used. There are problems with HDF5 1.10.1 and ESMF, used in PyMT. To ensure all the packages meet the same dependencies (looking at you, numpy), simultaneously install `cca-tools`, `netcdf-fortran`, `pymt=0.2` and `csdms-ilamb` using the csdms-stack conda channel (the Bakery),

conda install cca-tools netcdf-fortran=4.4.4=5 pymt==0.2 csdms-ilamb -c csdms-stack -c defaults -c conda-forge

Install the `babelizer` for components that need to be built from source.

conda install -c csdms-stack babelizer

Optionally install IPython for testing.

conda install ipython

Note that when running IPython remotely on siwenna, it's helpful to set

export MPLBACKEND=Agg

Install executor software

Install the `wmt-exe` package from source.

mkdir -p $install_dir/opt && cd $install_dir/opt
git clone https://github.com/csdms/wmt-exe
cd wmt-exe
python setup.py develop

Create a site configuration file that describes the executor and symlink it to the executor's etc/ diectory.

python setup.py configure --wmt-prefix=$install_dir --launch-dir='/scratch/$USER/wmt/permafrost' --exec-dir='/scratch/$USER/wmt/permafrost'
ln -s "$(realpath wmt.cfg)" $install_dir/conda/etc

Here I've configured the executor to do stuff in the /scratch directory instead of the default ~/.wmt.

Install and test CSDMS components

Each section below describes how to install and test a particular CSDMS component.

Currently installed components:

  1. BenchmarkIngestTool
  2. CMIP
  3. CRUAKTemp
  4. FrostNumberGeoModel
  5. FrostNumberModel
  6. ILAMB
  7. KuGeoModel
  8. KuModel
  9. ModelIngestTool

ILAMB

We installed ILAMB above. Test it by starting a Python session in $install_dir/test and executing the setup and IRF methods.

from pymt.components import ILAMB

comp = ILAMB()
comp.get_component_name()
comp.setup('.')

At this point, stop and edit bmi_ilamb.yaml, updating the `ilamb_root` attribute with the appropriate location on siwenna, /home/csdms/ilamb. All other attributes can be left unchanged with their default values.

comp.initialize('bmi_ilamb.yaml')
comp.get_start_time()
comp.get_end_time()
comp.get_current_time()
comp.update()
comp.finalize()

ILAMB is run at the call to `update`. The default run takes about 75 min.

PBS

Download and install the `pbs-executor` software from source.

cd $install_dir/opt
git clone https://github.com/permamodel/pbs-executor
cd pbs-executor
python setup.py develop

Babelize the PBS components.

cd $install_dir
mkdir -p build && cd build
bmi-babelize $install_dir/opt/pbs-executor --prefix=$install_dir/conda

Test a component (here, ModelIngestTool) by starting a Python session in $install_dir/test and executing the setup and IRF methods.

from pymt.components import ModelIngestTool

comp = ModelIngestTool()
comp.get_component_name()
comp.setup('.')

At this point, suspend the IPython session and copy a sample config file and data from the `pbs-executor` repo. (This could be improved.)

cd $install_dir/opt/pbs-executor/pbs_executor/data
cp ingest.yaml sftlf_fx_PBS-test_historical_r9i0p0.nc $install_dir/test
cd -

Restore the IPython session and continue.

comp.initialize('ingest.yaml')
comp.update()
comp.finalize()

View the index.html file that results.

Permamodel

Install the permamodel components from the Bakery using the `csdms-permamodel` metapackage.

conda install csdms-permamodel -c csdms-stack

This metapackage contains

  • csdms-permamodel-ku
  • csdms-permamodel-frostnumber
  • csdms-permamodel-kugeo
  • csdms-permamodel-frostnumbergeo
  • csdms-cruaktemp

Test a component (here, FnM) by starting a Python session in $install_dir/test and executing the setup and IRF methods.

from pymt.components import FrostNumberModel

comp = FrostNumberModel()
comp.get_component_name()
# args = comp.setup('.')
# comp.initialize(*args)
comp.setup('.')
comp.initialize('frostnumber_model.cfg')
comp.get_start_time()
comp.get_end_time()
comp.get_current_time()
comp.update()
comp.finalize()

Check the ouput of the run

$ cat frostnumber_output.dat
Year: 2000  output=('0.396', '-1.000', '-1.000')

CMIP

Download and install the `cmip` software from source.

cd $install_dir/opt
git clone https://github.com/permamodel/cmip
cd cmip
python setup.py develop

Babelize the CMIP tool.

cd $install_dir
mkdir -p build && cd build
bmi-babelize $install_dir/opt/cmip --prefix=$install_dir/conda

Download the sample config file and test the babelized CMIP component by starting a Python session in $install_dir/test and executing the setup and IRF methods.

from pymt.components import CMIP

comp = CMIP()
comp.get_component_name()
comp.initialize('sample_cmip-siwenna.cfg')
comp.get_start_time()
comp.get_end_time()
comp.get_current_time()
comp.update()
comp.get_current_time()
comp.update_until(comp.get_end_time())
comp.get_current_time()
comp.finalize()