Working on the GRICAD infrastructure
Create an account (do it once)
Register on https://perseus.univ-grenoble-alpes.fr using your institutional email address. When your account is activated, you will receive an email.
Preliminary steps for Windows10 users (last updated May 2020)
If you use Linux or Mac OSX, skip this section. For Windows10, you will need to activate OpenSSH (“Settings”, then “Apps and features”, then “Manage optional features”, then “Add a feature” and look for “OpenSSH Client”, then install it). Then, install Ubuntu20 from the Windows Store (see this page). Then, launch the Ubuntu app in Windows.
You can enable copy/paste through Ctrl+Maj+C/v somewhere in the menu.
Then, to enable remote display, do:
echo "export DISPLAY=localhost:0.0" >> ~/.bashrc # or ~/.zshrc
source ~/.bashrc # or ~/.zshrc
sudo apt-get update
sudo apt-get install xterm
Check connections
export MYLOGIN='munkw' ## replace munkw with your GRICAD login
ssh ${MYLOGIN}@access-rr-ciment.imag.fr
This will connect you on one of the gateways (either rotule or trinity), from which you should be able to connect to luke or dahu:
ssh luke
exit
Set up an SSH tunel to directly connect to luke or dahu (do it once)
See full documentation here.
Do this on your computer (provide a relatively complex pass phrase):
ssh-keygen
export MYLOGIN='munkw' ## replace munkw your GRICAD login
cat ~/.ssh/id_rsa.pub | ssh ${MYLOGIN}@access-ciment.univ-grenoble-alpes.fr 'cat >> .ssh/authorized_keys'
If you want to enter the pass phrase only once per session on your computer:
cat << EOF >> ~/.bashrc # or ~/.zshrc
if [ $? -eq 2 ]
then
echo launch ssh-agent
eval $(ssh-agent)
ssh-add
fi
EOF
source ~/.bashrc # or ~/.zshrc
Now, to set up a tunel connection:
cat << EOF >> ~/.ssh/config
Host luke* cargo* dahu*
User ${MYLOGIN}
ProxyCommand ssh -q ${MYLOGIN}@access-gricad.univ-grenoble-alpes.fr "nc -w 60 `basename %h .ciment` %p"
GatewayPorts yes
Host *
ServerAliveInterval 60
TCPKeepAlive yes
ForwardX11Trusted yes
EOF
You should now be able to connect directly from your computer to luke or dahu, entering your pass phrase for the first connection but no password:
ssh -X luke
NB: For Windows10 users, it is possible that permissions are not set correctly by default, so you may need to change them once .ssh/config is created:
chmod ugo-rwx ~/.ssh/config
chmod u+rw ~/.ssh/config
Prepare a workable environment (do it once)
To activatre the module environment on luke or dahu:
cat << EOF >> ~/.bashrc
# to access module commands :
source /applis/ciment/v2/env.bash
EOF
source ~/.bashrc
To check that it works:
module avail
module load nco
which ncks
You can also define some aliases:
cat << EOF >> ~/.bashrc
# Aliases:
alias ll='ls -l'
alias lr='ls -lrt'
alias h='history'
alias whereami='echo `whoami`@luke:`pwd`'
alias qs='oarstat -u `whoami` --format 2'
alias bet='cd /bettik/`whoami`'
alias gfortran='/usr/bin/gfortran -ffixed-line-length-none -ffree-line-length-none'
EOF
source ~/.bashrc
Set up a conda environment (do it once)
ssh -X luke
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
. ~/.bashrc
conda info
conda create --name py37 python=3.7
conda activate py37
conda install numpy ipython netcdf4 xarray matplotlib scipy pandas pillow
Other possibly useful libraries include:
conda install dask
conda install zarr
pip install watermark # load with '%load_ext watermark' # print versions with '%watermark -v -iv'
conda install cartopy
conda install -c conda-forge cmocean # nice colors for ocean plots
If you use Jupyter (inspired by the MEOM page:
conda install jupyter jupyterlab numba ipykernel nodejs
conda install -c conda-forge papermill # to run notebooks like scripts
conda install -c conda-forge gsw
python -m ipykernel install --user --name py37 --display-name py37
For dask dashboard in jupyter lab:
pip install dask_labextension
jupyter labextension install dask-labextension
jupyter serverextension enable --py --sys-prefix dask_labextension
To enable running notebooks on the cluster:
jupyter notebook --generate-config
echo "c.NotebookApp.open_browser = False" >> ~/.jupyter/jupyter_notebook_config.py
echo "c.NotebookApp.ip = '0.0.0.0'" >> ~/.jupyter/jupyter_notebook_config.py
exit
Run Jupyter Notebook in conda environment (do every time)
In a first terminal, do (here assuming that you belong to group ice_speed and have access to node luke62):
ssh -X luke
oarsub -I -l nodes=1/core=1,walltime=00:29:00 --project ice_speed -p "network_address='luke62'"
conda activate py37
jupyter notebook
It should give you a web address http://127.0.0.1:…
NB: the oarsub command allocates a number of cores for a certain amount of time. If you work on large files, you will need to increase the core number in the oarsub command (e.g. core=4
). You can increase the walltime to e.g. 24:00:00, although you may have to wait some time in the queue before obtaining access.
In a second terminal:
ssh -fNL 8888:luke62:8888 luke
NB: if port 8888 is already being used, the jupyter notebook
command will give you another port number (e.g. 8889).
Then, in a web browser (e.g. Firefox, Chrome…), copy/paste the aforementioned address starting as http://127.0.0.1. This should open Jupyter notebook.
Once you are done, you need to free the port (here 8888):
lsof -ti:8888 # indicates a number
kill -9 <number>