% $Id: installation.tex 1205 2013-07-15 10:55:47Z heinze $ \input{header_tmp.tex} \usepackage[utf8]{inputenc} \usepackage{ngerman} \usepackage{pgf} \usetheme{Dresden} \usepackage{subfigure} \usepackage{units} \usepackage{multimedia} \usepackage{hyperref} \newcommand{\event}[1]{\newcommand{\eventname}{#1}} \usepackage{xmpmulti} \usepackage{tikz} \usetikzlibrary{shapes,arrows,positioning,decorations.pathreplacing} \def\Tiny{\fontsize{4pt}{4pt}\selectfont} %---------- neue Pakete \usepackage{amsmath} \usepackage{amssymb} \usepackage{multicol} \usepackage{pdfcomment} \usepackage{xcolor} \institute{Institut für Meteorologie und Klimatologie, Leibniz Universität Hannover} \date{last update: \today} \event{PALM Seminar} \setbeamertemplate{navigation symbols}{} \setbeamersize{text margin left=.5cm,text margin right=.2cm} \setbeamertemplate{footline} {% \begin{beamercolorbox}[rightskip=-0.1cm]& {\includegraphics[height=0.65cm]{imuk_logo.pdf}\hfill \includegraphics[height=0.65cm]{luh_logo.pdf}} \end{beamercolorbox} \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,% leftskip=.3cm,rightskip=0.3cm plus1fil]{title in head/foot}% {\leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor} \hfill \eventname \hfill \insertframenumber \; / \inserttotalframenumber}% \end{beamercolorbox}% % \begin{beamercolorbox}[colsep=1.5pt]{lower separation line foot}% % \end{beamercolorbox} }%\logo{\includegraphics[width=0.3\textwidth]{luhimuk_logo.eps}} \title[PALM - Installation]{PALM - Installation} \author{Siegfried Raasch} % Notes: % jede subsection bekommt einen punkt im menu (vertikal ausgerichtet. % jeder frame in einer subsection bekommt einen punkt (horizontal ausgerichtet) \begin{document} % Folie 1 \begin{frame} \titlepage \end{frame} % Folie 2 \begin{frame} \frametitle{Before we start: Some Definitions About Runs (I)} \begin{itemize} \item<1->{Interactive run} \begin{itemize} \item<1->{Run command ({\tt mrun}) is called in terminal and program (PALM) immediately starts to run.} \end{itemize} \item<2->{Batch run} \begin{itemize} \item<2->{Run command is called in terminal and creates a so called batch job, which is send to a queueing system. It may run at a later time (over night), depending on how many other jobs are waiting in the queue.} \end{itemize} \item<3->{Batch run on \textcolor{red}{remote} machine} \begin{itemize} \item<3->{Like a batch run, but the batch job is send (via {\tt scp}) to a queue on a \textcolor{red}{remote} computer.} \end{itemize} \end{itemize} \end{frame} % Folie 3 \begin{frame} \frametitle{Before we start: Some Definitions About Runs (II)} \begin{itemize} \item<1->{Initial run / restart run}\\ \par\medskip \begin{itemize} \item<2->{Every queuing system has CPU time limits. If a run needs more time than these limits allow, it has to be split into several parts.}\\ \par\medskip \item<3->{The first part is called \textbf{initial run}.}\\ \par\medskip \item<4->{The other parts are called \textbf{restart runs}.}\\ \par\medskip \item<5->{All runs together form a so-called \textbf{job-chain}.}\\ \par\medskip \end{itemize} \end{itemize} \end{frame} % Folie 4 \begin{frame} \frametitle{PALM - Installation Overview} \small \begin{itemize} \item<1->{Participants of this seminar will install and use PALM in different ways:} \item<2->{Installation on a \textcolor{green}{local} computer (either a private Linux notebook or the Linux-cluster at IMUK) and run interactively.} \item<3->{Installation on a \textcolor{green}{local}+\textcolor{red}{remote} computer (Linux-cluster at IMUK + HLRN) and run on the \textcolor{red}{remote} computer (at HLRN) in batch mode. This requires the \textcolor{green}{local} computer to have a fixed IP-address (no DHCP).} \item<4->{We will start with installing PALM on a \textcolor{green}{local} computer and running it interactively.} \end{itemize} \end{frame} % Folie 5 \begin{frame} \frametitle{PALM - Installation} \begin{itemize} \item<1->{The following slides describe the installation procedure for running PALM on a \textcolor{green}{local} computer and how to verify the installation.}\\ \par\medskip \item<2->{The installation instructions can also be found in the PALM online-documentation under\\ \par\medskip \url{http://palm.muk.uni-hannover.de/wiki/doc/install}} \end{itemize} \end{frame} % Folie 6 \begin{frame} \frametitle{PALM - Installation / General Requirements (I)} \footnotesize \begin{itemize} \item<1->[1.]{The Korn-shell (AT\&T ksh or public domain ksh) must be available under {\tt /bin/ksh}.} \item<2->[2.]{The netCDF-library with version number not earlier than 3.6.3 (for netCDF, see under www.unidata.ucar.edu).} \item<3->[3.]{A FORTRAN90/95 compiler.} \item<4->[4.]{The Message Passing Interface (MPI), if the parallel version of PALM shall be used.} \item<5->[5.]{On the \textcolor{green}{local} computer, the revision control system subversion (see subversion.tigris.org). This is already included in many Linux distributions (e.g. SuSe). Subversion requires port 3690 to be open for tcp/udp. If there are firewall restrictions concerning this port, the PALM code cannot be accessed. The user needs a permit to access the PALM repository. For getting a permit please contact the PALM group (raasch@muk.uni-hannover.de) and define a username and a password under which you like to access the repository. This username and password also gives you access to advanced features of the online documentation. (trac-server)} \end{itemize} \end{frame} % Folie 6a \begin{frame} \frametitle{PALM - Installation / General Requirements (II)} \footnotesize \begin{itemize} \item<1->[6.]{All participants of this seminar are already permitted to access the repository. Use \dq seminar2012\dq as username and \dq palm2012\dq as password.} \item<2->[7.]{For the installation of the PALM code on the \textcolor{red}{remote} computer (at HLRN), a sufficient virtual memory has to be allocated on the \textcolor{red}{remote} computer. The value of 256 MByte that is set by \texttt{ulimit -S -v 256000} in the users profile under {\tt $\sim$/.profile} is not sufficient. Please remove this line in your user profile in order to disable the virtual memory limitation.} \end{itemize} \end{frame} % Folie 7 \begin{frame} \frametitle{List of Usernames / Passwords for PALM 2012 Seminar} \begin{tabbing} IP-address of IMUK: \qquad \=inferno.muk.uni-hannover.de (130.75.105.5)\\ IP-address of SGI-ICE: \>hicegate.hlrn.de (130.75.4.101) \end{tabbing} \tiny \begin{tabular}[c]{|p{2cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|} \hline \textbf{Participant} & \textbf{Username on Linux-cluster (IMUK)} & \textbf{Password (IMUK)} & \textbf{Username on SGI-ICE (HLRN)} & \textbf{Password (HLRN)} \\ \hline Lennart Böske & boeske & ... & hzkurs01 & @PSR0723 \\ \hline & & & & \\ \hline & & & & \\ \hline & & & & \\ \hline & & & & \\ \hline & & & & \\ \hline & & & & \\ \hline & & & & \\ \hline & & & & \\ \hline & & & & \\ \hline & & & & \\ \hline & & & & \\ \hline & & & & \\ \hline \end{tabular} \end{frame} % Folie 8 \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Package Download on Linux Notebooks} \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny] \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny] \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.1\textwidth, font=\tiny] \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.15\textwidth, font=\tiny] \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny] \tikzstyle{green2} = [rectangle, draw, fill=green!75!black, text width=0.15\textwidth, font=\scriptsize] \tikzstyle{green3} = [rectangle, draw, fill=green!75!black, text width=0.35\textwidth, font=\scriptsize] \tikzstyle{green4} = [rectangle, draw, fill=green!75!black, text width=0.4\textwidth, font=\scriptsize] \tikzstyle{line} = [draw, -] \tikzstyle{arrow} = [draw, -latex'] \scriptsize \uncover<2->{It is assumed that the ksh (Korn-shell) or bash is the user‘s default shell!} \begin{columns}[c] \column{0.5\textwidth} \begin{itemize} \item<3->[1.]{Create your working directory \\ \par\medskip \qquad {\tt mkdir -p $\sim$/palm/current\_version}} \end{itemize} \column{0.42\textwidth} \uncover<4->{ \begin{tikzpicture}[auto] \node[yellow1] (home) {\$HOME/}; \node[yellow1] (palm) [right=0.4cm of home] {palm/}; \node[yellow2] (currentv) [right=0.4cm of palm] {current\_version/}; \path[line] (home) -- (palm); \path[line] (palm) -- (currentv); \end{tikzpicture} } \end{columns} \par\medskip \begin{itemize} \item<5->[2.]{Create a working copy of the newest PALM version (currently 3.8) from the subversion repository: \\ \par\medskip \qquad {\tt cd $\sim$/palm/current\_version} \\ \qquad {\tt svn checkout --username \textless your username\textgreater \textbackslash} \\ \qquad \qquad {\tt svn://130.75.105.7/palm/tags/release-3.8 trunk} } \\ \par\medskip \uncover<6->{ \begin{tikzpicture}[auto] \hspace{3cm} \node[yellow3] (home) {\$HOME/}; \node[yellow3] (palm) [right=0.4cm of home] {palm/}; \node[yellow4] (currentv) [right=0.4cm of palm] {current\_version/}; \node[green1] (trunk) [right=0.4cm of currentv] {trunk/}; \path[line] (home) -- (palm); \path[line] (palm) -- (currentv); \path[line] (currentv) -- (trunk); \end{tikzpicture} } \par\medskip \item<7->[]{Alternatively, check out the most recent (test) version: \\ \par\smallskip \qquad {\tt cd $\sim$/palm/current\_version} \\ \qquad {\tt svn checkout --username \textless your username\textgreater \textbackslash} \\ \qquad \qquad {\tt svn://130.75.105.7/palm/tags/release-3.8 trunk} }\\ \par\medskip \item<8->[]{Generally, this version may contain bugs and new features may not be documented! \textbf{Anyhow, using the most recent version is recommended for this seminar!}} \end{itemize} \end{frame} % Folie 9 \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Package Download on IMUK-Linux-cluster} \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny] \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny] \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.1\textwidth, font=\tiny] \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.15\textwidth, font=\tiny] \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny] \tikzstyle{line} = [draw, -] \footnotesize \begin{itemize} \item<2->[1.]{Login from the \textcolor{green}{local} desktop or from your notebook using an ssh-client: \\ \par\smallskip \qquad {\tt ssh -X \textless your IMUK-username\textgreater @inferno.muk.uni-hannover.de}\\ \par\smallskip FORTRAN-compiler, MPI- and netCDF-libraries and all other required software are already installed.} \end{itemize} \begin{columns}[c] \column{0.5\textwidth} \begin{itemize} \item<3->[2.]{Create your working directory \\ \par\medskip \qquad {\tt mkdir -p $\sim$/palm/current\_version}} \end{itemize} \column{0.42\textwidth} \uncover<4->{ \begin{tikzpicture}[auto] \node[yellow1] (home) {\$HOME/}; \node[yellow1] (palm) [right=0.4cm of home] {palm/}; \node[yellow2] (currentv) [right=0.4cm of palm] {current\_version/}; \path[line] (home) -- (palm); \path[line] (palm) -- (currentv); \end{tikzpicture} } \end{columns} \par\medskip \begin{itemize} \item<5->[3.]{Check out the most recent PALM version to your working directory: \\ \par\medskip \qquad {\tt cd $\sim$/palm/current\_version} \\ \qquad {\tt svn checkout --username \textless your username\textgreater \textbackslash} \\ \qquad \qquad {\tt svn://130.75.105.7/palm/trunk trunk} } \\ \par\medskip \uncover<6->{ \begin{tikzpicture}[auto] \hspace{3cm} \node[yellow3] (home) {\$HOME/}; \node[yellow3] (palm) [right=0.4cm of home] {palm/}; \node[yellow4] (currentv) [right=0.4cm of palm] {current\_version/}; \node[green1] (trunk) [right=0.4cm of currentv] {trunk/}; \path[line] (home) -- (palm); \path[line] (palm) -- (currentv); \path[line] (currentv) -- (trunk); \end{tikzpicture} } \end{itemize} \end{frame} % Folie 10 \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Package Configuration on Linux Notebooks} \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny] \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny] \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.1\textwidth, font=\tiny] \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.15\textwidth, font=\tiny] \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny] \tikzstyle{line} = [draw, -] \tikzstyle{label} = [rectangle, font=\scriptsize, minimum size=8pt] \scriptsize \begin{itemize} \item<1->{Set environment variables in the respective profile of the user‘s default shell (e.g. in {\tt .profile}, when ksh is used, or in {\tt .bashrc}, when bash is used): \\ \par\medskip \uncover<2->{{\tiny \textcolor{red}{Note: .profile / .bashrc have to be located in \$HOME; recommended text editors are e.g. xedit / vi}}} \\ \par\medskip \qquad {\tt export PALM\_BIN=\$HOME/palm/current\_version/trunk/SCRIPTS} \\ \qquad {\tt export PATH=\$PALM\_BIN:\$PATH}}\\ \par\medskip \uncover<3->{ \begin{tikzpicture}[auto, >=latex'] \hspace{0.5cm} \node[yellow3] (home) {\$HOME/}; \node[yellow3] (palm) [right=0.4cm of home] {palm/}; \node[yellow4] (currentv) [right=0.4cm of palm] {current\_version/}; \node[green1] (trunk) [right=0.4cm of currentv] {trunk/}; \node[green1] (scripts) [right=0.4cm of trunk] {SCRIPTS/}; \path[line] (home) -- (palm); \path[line] (palm) -- (currentv); \path[line] (currentv) -- (trunk); \path[line] (trunk) -- (scripts); \uncover<6->{\draw [->, thick] {(scripts.south) .. controls (8.0,-1.0) and (4.0,-1.0) .. (currentv.south)};} \node[label, right=0pt of scripts] (scriptlabelbase2) {}; \node[label, above=0pt of scriptlabelbase2] (scriptlabelbase1) {}; \node[label, below=0pt of scriptlabelbase2] (scriptlabelbase3) {}; \node[label, right=0pt of scriptlabelbase1] (scriptlabel1) {mrun}; \node[label, right=0pt of scriptlabelbase2] (scriptlabel2) {mbuild}; \node[label, right=0pt of scriptlabelbase3] (scriptlabel3) {...}; \end{tikzpicture} } \item<4->{Restart the shell (e.g. exit and login (via ssh) again). Otherwise settings are not active.} \item<5->{Create your personal configuration file, needed by {\tt mbuild} and {\tt mrun}: \\ \par\medskip \qquad {\tt cd ~/palm/current\_version} \\ \qquad {\tt cp trunk/SCRIPTS/.mrun.config.default .mrun.config} \\ \par\medskip \uncover<7->{The next two slides explain parts of the format of the configuration file.}} \end{itemize} \end{frame} % Folie 11 \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ The Configuration File (I)} \tikzstyle{box} = [rectangle, draw, text width=0.8\textwidth, font=\tiny] \small \begin{itemize} \item<1->{In the first part of the file, environment-variables used by {\tt mbuild} and {\tt mrun} are set to their required values. The format is like} \end{itemize} \uncover<2->{ \begin{center} \begin{tikzpicture}[auto, node distance=0] \node[box](box){ \begin{tabbing} {\tt \#column 1} \hspace{1.5cm} \={\tt column 2} \hspace{3.5cm} \={\tt column 3} \\ {\tt \#name of variable} \>{\tt value of variable (must not be used)} \>{\tt scope} \\ {\tt \#-------------------------------------------------------------------------------------} \\ {\tt \%mainprog} \>{\tt palm.f90} \\ {\tt \%base\_directory} \>{\tt \$HOME/palm/current\_version/} \>{\tt \textcolor{blue}{\uncover<4->{lcsgih}}} \\ \end{tabbing}}; \end{tikzpicture} \end{center} } \begin{itemize} \item<3->{The configuration file allows settings for different computers \\ (e.g. \textcolor{green}{local} / \textcolor{red}{remote} host). These are done in different blocks of lines, and these blocks are marked with the so-called \textcolor{blue}{host-identifier} of the respective computer. This identifier is given in column 3. No entry in column 3 means that the respective setting is valid for all computers (hosts).} \end{itemize} \end{frame} % Folie 12 \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ The Configuration File (II)} \tikzstyle{box} = [rectangle, draw, text width=0.65\textwidth, font=\tiny] \scriptsize \begin{itemize} \item<2->{The host identifier string can be freely chosen, but the first characters must match the type of operating system on the respective host:}\\ \par\medskip \begin{itemize}\scriptsize \item<2->{Linux(-Cluster): \hspace{1.15cm} {\tt lc}} \item<2->{IBM-AIX: \hspace{1.9cm} {\tt ibm}} \item<2->{NEC-SX: \hspace{2.01cm} {\tt nec}} \end{itemize} \par\medskip \item<3->{Here is an example for settings of compiler names for different hosts: \\ {\tiny {\tt (compiler\_name}: for compiling MPI-programs, {\tt compiler\_name\_ser}: for compiling serial code)}} \end{itemize} \uncover<4->{ \begin{center} \begin{tikzpicture}[auto, node distance=0] \node[box](box){ \begin{tabbing} {\tt \%compiler\_name} \hspace{1cm} \={\tt mpif90} \hspace{3cm} \={\tt lcsgih} \\ {\tt \%compiler\_name\_ser} \>{\tt ifort} \>{\tt lcsgih} \\ {\tt \%compiler\_name} \>{\tt mpif90} \>{\tt lcother} \\ {\tt \%compiler\_name\_ser} \>{\tt f95} \>{\tt lcother} \\ {\tt \%compiler\_name} \>{\tt ftn} \>{\tt lcxt4} \\ {\tt \%compiler\_name\_ser} \>{\tt ftn} \>{\tt lcxt4} \end{tabbing}}; \end{tikzpicture} \end{center} } \begin{itemize} \item<5->{If value-strings contain blanks, they have to be replaced by colon (\dq:\dq): \\ {\tiny ({\tt fopts}: compiler options to be used)}} \end{itemize} \uncover<5->{ \begin{center} \begin{tikzpicture}[auto, node distance=0] \node[box](box){ {\tt \%fopts} \hspace{0.4cm} {\tt -g:-w:-xT:-O3:-cpp:-r8:-nbs} \hspace{1cm} {\tt lcother parallel}}; \end{tikzpicture} \end{center} } \end{frame} % Folie 13 \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Configuring {\tt .mrun.config} on Linux Notebooks} \small \begin{itemize} \item<1->{Now edit the configuration file and adjust it for your \textcolor{green}{local} computer. \\ \par\medskip For this, you will need informations about all paths where the netCDF- and MPI-libraries reside, as well as the hostname of your \textcolor{green}{local} computer. You can find out the hostname by simply typing the unix-command: \\ \par\medskip \qquad {\tt hostname}}\\ \par\medskip \item<2->{The default configuration file assumes that an \textcolor{blue}{Intel FORTRAN compiler} and the \textcolor{orange}{mpich2} - MPI-version is installed on the \textcolor{green}{local} computer.} \item<3->{Please give all respective \textcolor{cyan}{paths} and replace \textless hi\textgreater by your host identifier.} \end{itemize} \end{frame} % Folie 14a \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Configuring {\tt .mrun.config} on Linux Notebooks} \tikzstyle{box} = [rectangle, draw, text width=0.9\textwidth, font=\tiny] \scriptsize \begin{itemize} \item{The default configuration file assumes that an \textcolor{blue}{Intel FORTRAN compiler} and the \textcolor{orange}{mpich2} - MPI-version is installed on the \textcolor{green}{local} computer.} \item{Please give all respective \textcolor{cyan}{paths} and replace \textless hi\textgreater by your host identifier.} \end{itemize} \begin{center} \begin{tikzpicture}[auto, node distance=0] \node[box](box){ {\tt \# The next line is just an example. Add your own line below or replace this line.} \\ {\tt \%host\_identifier myhostname lcmy} \\ {\tt \#} \\ {\tt \# The next block contains all informations for compiling the PALM code} \\ {\tt \#} \\ \begin{tabbing} {\tt \%tmp\_use\_catalog} \hspace{0.3cm} \={\tt /tmp} \hspace{6.0cm} \={\tt parallel} \\ {\tt \%compiler\_name} \>{\tt \textcolor{blue}{mpif90}} \>{\tt parallel} \\ {\tt \%compiler\_name\_ser} \>{\tt ifort} \>{\tt parallel} \\ {\tt \%cpp\_options} \>{\tt \textcolor{orange}{-D\_\_mpi2}:-DMPI\_REAL=MPI\_DOUBLE\_PRECISION:} \>{\tt parallel} \\ {\tt } \>{\tt :-DMPI\_2REAL=MPI\_2DOUBLE\_PRECISION:-D\_\_netcdf} \>{\tt } \\ {\tt \%netcdf\_inc} \>{\tt -I:\textcolor{cyan}{}} \>{\tt parallel} \\ {\tt \%netcdf\_lib} \>{\tt -L\textcolor{cyan}{}:-lnetcdf} \>{\tt parallel} \\ {\tt \%fopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-convert:little\_endian:} \>{\tt parallel} \\ {\tt } \>{\tt -I:\textcolor{cyan}{}} \>{\tt } \\ {\tt \%lopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-Vaxlib:} \>{\tt parallel} \\ {\tt } \>{\tt -L\textcolor{cyan}{}} \>{\tt } \\ {\tt \# if you want to use your own hostfile, uncomment next line} \>{\tt } \>{\tt } \\ {\tt \#\%hostfile} \>{\tt \$base\_directory/.hostfile} \>{\tt parallel} \\ {\tt \# if you want this host to be used as a \textcolor{red}{remote} host, uncomment next line} \>{\tt } \>{\tt } \\ {\tt \#\%remote\_username} \>{\tt } \>{\tt parallel} \end{tabbing}}; \end{tikzpicture} \end{center} \end{frame} % Folie 14b \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Configuring {\tt .mrun.config} on Linux Notebooks} \tikzstyle{box} = [rectangle, draw, text width=0.9\textwidth, font=\tiny] \scriptsize \begin{itemize} \item{The default configuration file assumes that an \textcolor{blue}{Intel FORTRAN compiler} and the \textcolor{orange}{mpich2} - MPI-version is installed on the \textcolor{green}{local} computer.} \item{Please give all respective \textcolor{cyan}{paths} and replace \textless hi\textgreater by your host identifier.} \end{itemize} \begin{center} \begin{tikzpicture}[auto, node distance=0] \node[box](box){ {\tt \# The next line is just an example. Add your own line below or replace this line.} \\ {\tt \%host\_identifier scirocco \textcolor{purple}{lcsci}} \\ {\tt \#} \\ {\tt \# The next block contains all informations for compiling the PALM code} \\ {\tt \#} \\ \begin{tabbing} {\tt \%tmp\_use\_catalog} \hspace{0.3cm} \={\tt /tmp} \hspace{6.0cm} \={\tt parallel} \\ {\tt \%compiler\_name} \>{\tt \textcolor{blue}{mpif90}} \>{\tt parallel} \\ {\tt \%compiler\_name\_ser} \>{\tt ifort} \>{\tt parallel} \\ {\tt \%cpp\_options} \>{\tt \textcolor{orange}{-D\_\_mpi2}:-DMPI\_REAL=MPI\_DOUBLE\_PRECISION:} \>{\tt parallel} \\ {\tt } \>{\tt :-DMPI\_2REAL=MPI\_2DOUBLE\_PRECISION:-D\_\_netcdf} \>{\tt } \\ {\tt \%netcdf\_inc} \>{\tt -I:\textcolor{cyan}{}} \>{\tt parallel} \\ {\tt \%netcdf\_lib} \>{\tt -L\textcolor{cyan}{}:-lnetcdf} \>{\tt parallel} \\ {\tt \%fopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-convert:little\_endian:} \>{\tt parallel} \\ {\tt } \>{\tt -I:\textcolor{cyan}{}} \>{\tt } \\ {\tt \%lopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-Vaxlib:} \>{\tt parallel} \\ {\tt } \>{\tt -L\textcolor{cyan}{}} \>{\tt } \\ {\tt \# if you want to use your own hostfile, uncomment next line} \>{\tt } \>{\tt } \\ {\tt \#\%hostfile} \>{\tt \$base\_directory/.hostfile} \>{\tt parallel} \\ {\tt \# if you want this host to be used as a \textcolor{red}{remote} host, uncomment next line} \>{\tt } \>{\tt } \\ {\tt \#\%remote\_username} \>{\tt } \>{\tt parallel} \end{tabbing}}; \end{tikzpicture} \end{center} \end{frame} % Folie 14c \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Configuring {\tt .mrun.config} on Linux Notebooks} \tikzstyle{box} = [rectangle, draw, text width=0.9\textwidth, font=\tiny] \scriptsize \begin{itemize} \item{The default configuration file assumes that an \textcolor{blue}{Intel FORTRAN compiler} and the \textcolor{orange}{mpich2} - MPI-version is installed on the \textcolor{green}{local} computer.} \item{Please give all respective \textcolor{cyan}{paths} and replace \textless hi\textgreater by your host identifier.} \end{itemize} \begin{center} \begin{tikzpicture}[auto, node distance=0] \node[box](box){ {\tt \# The next line is just an example. Add your own line below or replace this line.} \\ {\tt \%host\_identifier scirocco \textcolor{purple}{lcsci}} \\ {\tt \#} \\ {\tt \# The next block contains all informations for compiling the PALM code} \\ {\tt \#} \\ \begin{tabbing} {\tt \%tmp\_use\_catalog} \hspace{0.3cm} \={\tt /tmp} \hspace{6.0cm} \={\tt \textcolor{purple}{lcsci} parallel} \\ {\tt \%compiler\_name} \>{\tt \textcolor{blue}{mpif90}} \>{\tt \textcolor{purple}{lcsci} parallel} \\ {\tt \%compiler\_name\_ser} \>{\tt ifort} \>{\tt \textcolor{purple}{lcsci} parallel} \\ {\tt \%cpp\_options} \>{\tt \textcolor{orange}{-D\_\_mpi2}:-DMPI\_REAL=MPI\_DOUBLE\_PRECISION:} \>{\tt \textcolor{purple}{lcsci} parallel} \\ {\tt } \>{\tt :-DMPI\_2REAL=MPI\_2DOUBLE\_PRECISION:-D\_\_netcdf} \>{\tt } \\ {\tt \%netcdf\_inc} \>{\tt -I:\textcolor{cyan}{}} \>{\tt \textcolor{purple}{lcsci} parallel} \\ {\tt \%netcdf\_lib} \>{\tt -L\textcolor{cyan}{}:-lnetcdf} \>{\tt \textcolor{purple}{lcsci} parallel} \\ {\tt \%fopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-convert:little\_endian:} \>{\tt \textcolor{purple}{lcsci} parallel} \\ {\tt } \>{\tt -I:\textcolor{cyan}{}} \>{\tt } \\ {\tt \%lopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-Vaxlib:} \>{\tt \textcolor{purple}{lcsci} parallel} \\ {\tt } \>{\tt -L\textcolor{cyan}{}} \>{\tt } \\ {\tt \# if you want to use your own hostfile, uncomment next line} \>{\tt } \>{\tt } \\ {\tt \#\%hostfile} \>{\tt \$base\_directory/.hostfile} \>{\tt \textcolor{purple}{lcsci} parallel} \\ {\tt \# if you want this host to be used as a \textcolor{red}{remote} host, uncomment next line} \>{\tt } \>{\tt } \\ {\tt \#\%remote\_username} \>{\tt } \>{\tt \textcolor{purple}{lcsci} parallel} \end{tabbing}}; \end{tikzpicture} \end{center} \end{frame} % Folie 15 \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Package Configuration on IMUK-cluster (I)} \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny] \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny] \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.1\textwidth, font=\tiny] \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.15\textwidth, font=\tiny] \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny] \tikzstyle{line} = [draw, -] \tikzstyle{label} = [rectangle, font=\scriptsize, minimum size=8pt] \scriptsize \begin{itemize} \item<1->[1.]{Login on host inferno:\\ \par\medskip \qquad {\tt ssh -X \textless your IMUK-username\textgreater @130.75.105.5}} \\ \par\medskip \item<2->[2.]{Set environment variables in the respective profile of the user‘s default shell, (which is .\textcolor{red}{my}profile, on the IMUK-Linux-cluster): \\ \par\medskip \uncover<3->{\qquad {\tiny \textcolor{red}{Note: .profile / .bashrc have to be located in \$HOME; recommended text editors are e.g. xedit / vi}}} \\ \qquad {\tt export PALM\_BIN=\$HOME/palm/current\_version/trunk/SCRIPTS} \\ \qquad {\tt export PATH=\$PALM\_BIN:\$PATH}}\\ \par\medskip \item<4->[3.]{Restart the shell (e.g. exit and login (via ssh) again). Otherwise settings are not active.}\\ \par\medskip \item<5->[4.]{Create your personal configuration file, needed by {\tt mbuild} and {\tt mrun}: \\ \par\medskip \qquad {\tt cd ~/palm/current\_version} \\ \qquad {\tt cp trunk/SCRIPTS/.mrun.config.imuk\_hlrn .mrun.config} \\ \par\medskip \uncover<6->{ \begin{tikzpicture}[auto, >=latex'] \hspace{0.5cm} \node[yellow3] (home) {\$HOME/}; \node[yellow3] (palm) [right=0.4cm of home] {palm/}; \node[yellow4] (currentv) [right=0.4cm of palm] {current\_version/}; \node[green1] (trunk) [right=0.4cm of currentv] {trunk/}; \node[green1] (scripts) [right=0.4cm of trunk] {SCRIPTS/}; \path[line] (home) -- (palm); \path[line] (palm) -- (currentv); \path[line] (currentv) -- (trunk); \path[line] (trunk) -- (scripts); \uncover<7->{\draw [->, thick] {(scripts.south) .. controls (8.0,-1.0) and (4.0,-1.0) .. (currentv.south)};} \node[label, right=0pt of scripts] (scriptlabelbase2) {}; \node[label, above=0pt of scriptlabelbase2] (scriptlabelbase1) {}; \node[label, below=0pt of scriptlabelbase2] (scriptlabelbase3) {}; \node[label, right=0pt of scriptlabelbase1] (scriptlabel1) {mrun}; \node[label, right=0pt of scriptlabelbase2] (scriptlabel2) {mbuild}; \node[label, right=0pt of scriptlabelbase3] (scriptlabel3) {...}; \end{tikzpicture}}} \end{itemize} \end{frame} % Folie 16 \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Package Configuration on IMUK-cluster (II)} \tikzstyle{box} = [rectangle, draw, text width=0.8\textwidth, font=\tiny] \small \begin{itemize} \item<1->[5.]{Edit the configuration file and replace the string {\tt} by your IMUK username and uncomment the respective lines:\\ \par\medskip \qquad {\tt vi .mrun.config}} \\ \par\medskip \begin{itemize} \item<1->{Old: \\ \begin{center} \begin{tikzpicture}[auto, node distance=0] \node[box](box){ .\\.\\ {\tt \# The next block contains all informations for compiling the PALM code}\\ {\tt\#} \\.\\.\\ \begin{tabbing} {\tt \#\%remote\_username} \hspace{0.2cm} \={\tt \textcolor{blue}{}} \hspace{1.6cm} \={\tt lcmuk parallel} \\ {\tt \#\%tmp\_use\_catalog} \>{\tt /localdata/\textcolor{blue}{}} \>{\tt lcmuk parallel} \end{tabbing}}; \end{tikzpicture} \end{center} } \item<2->{New: \\ \begin{center} \begin{tikzpicture}[auto, node distance=0] \node[box](box){ \begin{tabbing} {\tt \%remote\_username} \hspace{0.2cm} \={\tt \textcolor{blue}{your\_name}} \hspace{4.1cm} \={\tt lcmuk parallel} \\ {\tt \%tmp\_use\_catalog} \>{\tt /localdata/\textcolor{blue}{your\_name}} \>{\tt lcmuk parallel} \end{tabbing}}; \end{tikzpicture} \end{center} } \end{itemize} \end{itemize} \end{frame} % Folie 17 \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Creating the Utility Programs} \tikzstyle{blanc} = [rectangle, text width=0\textwidth, font=\scriptsize] \tikzstyle{white} = [rectangle, text width=0.1\textwidth, font=\scriptsize] \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny] \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny] \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.08\textwidth, font=\tiny] \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.13\textwidth, font=\tiny] \tikzstyle{yellow5} = [rectangle, draw, fill=yellow!100, text width=0.05\textwidth, font=\tiny] \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.08\textwidth, font=\tiny] \tikzstyle{green2} = [rectangle, draw, fill=green!75!black, text width=0.05\textwidth, font=\tiny] \tikzstyle{line} = [draw, -] \tikzstyle{label} = [rectangle, font=\scriptsize, minimum size=8pt] \scriptsize \begin{itemize} \item<1->{The shellscript {\tt mrun} which is used to run PALM needs a few more utility programs (written in FORTRAN) and the respective executables have to be created on the local host:\\ \par\smallskip \qquad {\tt cd ~/palm/current\_version} \\ \qquad {\tt mbuild -u -h }} \\ \par\bigskip \begin{tikzpicture}[auto, >=latex'] \node[blanc] (base) {}; \node[blanc] (basebefore) [below=0.0cm of base] {}; \node[blanc] (baseafter) [below=2.0cm of base] {}; \uncover<2->{ \node[white] (before) [left=1.0cm of basebefore] {\textbf{Before:}}; \node[yellow3] (home) [below=0.3cm of before] {\$HOME/}; \node[yellow5] (palm) [right=0.4cm of home] {palm/}; \node[yellow4] (currentv) [right=0.4cm of palm] {current\_version/}; \node[green2] (trunk) [right=0.4cm of currentv] {trunk/}; \node[green1] (utils) [right=0.4cm of trunk] {UTIL/}; \path[line] (home) -- (palm); \path[line] (palm) -- (currentv); \path[line] (currentv) -- (trunk); \path[line] (trunk) -- (utils); \node[label, right=0pt of utils] (utillabelbase2) {}; \node[label, above=0pt of utillabelbase2] (utillabelbase1) {}; \node[label, below=0pt of utillabelbase2] (utillabelbase3) {}; \node[label, right=0pt of utillabelbase1] (utillabel1) {interpret\_config.f90}; \node[label, right=0pt of utillabelbase2] (utillabel2) {combine\_plot\_fields.f90}; } \uncover<3->{ \node[white] (after) [left=1.0cm of baseafter] {\textbf{After:}}; \node[yellow3] (home2) [below=0.3cm of after] {\$HOME/}; \node[yellow5] (palm2) [right=0.4cm of home2] {palm/}; \node[yellow4] (currentv2) [right=0.4cm of palm2] {current\_version/}; \node[green2] (trunk2) [right=0.4cm of currentv2] {trunk/}; \node[green1] (scripts) [right=0.4cm of trunk2] {SCRIPTS/}; \path[line] (home2) -- (palm2); \path[line] (palm2) -- (currentv2); \path[line] (currentv2) -- (trunk2); \path[line] (trunk2) -- (scripts); \node[label, right=0pt of scripts] (scriptlabelbase2) {}; \node[label, above=0pt of scriptlabelbase2] (scriptlabelbase1) {}; \node[label, below=0pt of scriptlabelbase2] (scriptlabelbase3) {}; \node[label, above=0pt of scriptlabelbase1] (scriptlabelbase0) {}; \node[label, below=0pt of scriptlabelbase3] (scriptlabelbase4) {}; \node[label, right=0pt of scriptlabelbase0] (scriptlabel0) {mrun}; \node[label, right=0pt of scriptlabelbase1] (scriptlabel1) {mbuild}; \node[label, right=0pt of scriptlabelbase2] (scriptlabel2) {interpret\_config\_parallel.x}; \node[label, right=0pt of scriptlabelbase3] (scriptlabel3) {combine\_plot\_fields\_parallel.x}; \node[label, right=0pt of scriptlabelbase4] (scriptlabel4) {...}; } \uncover<4->{ \node[label, above=0pt of scriptlabelbase2] (scriptlabelbase01) {}; \node[label, right=40pt of scriptlabelbase01] (scriptlabe01) {}; \node[label, below=0pt of utillabelbase2] (utillabelbase04) {}; \node[label, right=40pt of utillabelbase04] (utiltlabe04) {}; \draw[->, thick] (utiltlabe04) -- (scriptlabe01); } \end{tikzpicture} \end{itemize} \end{frame} % Folie 18 \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Pre-Compiling the PALM Code} \tikzstyle{blanc} = [rectangle, text width=0\textwidth, font=\scriptsize] \tikzstyle{white} = [rectangle, text width=0.1\textwidth, font=\scriptsize] \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny] \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny] \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.08\textwidth, font=\tiny] \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.13\textwidth, font=\tiny] \tikzstyle{yellow5} = [rectangle, draw, fill=yellow!100, text width=0.05\textwidth, font=\tiny] \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny] \tikzstyle{green2} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny] \tikzstyle{green3} = [rectangle, draw, fill=green!75!black, text width=0.25\textwidth, font=\tiny] \tikzstyle{line} = [draw, -] \tikzstyle{label} = [rectangle, font=\scriptsize, minimum size=8pt] \tikzstyle{point} = [rectangle, draw, inner sep=0pt,minimum size=0pt,fill=black] \scriptsize \begin{tabbing} {\textcolor{blue}{Reason:}} \hspace{0.2cm} \={Compilation is time consuming (especially when regarding short test runs).}\\ {\tt } \>{Using pre-compiled files prevents the code from being repeatedly compiled}\\ {\tt } \>{for each model run.} \end{tabbing} Pre-compiled files are generated by using the command {\tt mbuild}.\\ {\tt mbuild} performs the following steps:\\ \begin{itemize} \item<2->{It copies all source code files from trunk/SOURCE to a make depository, \begin{tikzpicture}[auto, >=latex'] \uncover<3->{ \node[yellow4] (currentv2) {current\_version/}; \node[point] (base) [right=0.2cm of currentv2] {}; \node[blanc] (base1) [above=0.3cm of base] {}; \node[blanc] (base2) [below=0.3cm of base] {}; \node[green2] (trunk2) [right=0.1cm of base1] {trunk/}; \node[green1] (source) [right=0.4cm of trunk2] {SOURCE/}; \path[line] (trunk2) -- (source); \node[label, right=0pt of source] (scriptlabelbase2) {}; \node[label, above=0pt of scriptlabelbase2] (scriptlabelbase1) {}; \node[label, below=0pt of scriptlabelbase2] (scriptlabelbase3) {}; \node[label, below=0pt of scriptlabelbase3] (scriptlabelbase4) {}; \node[label, right=0pt of scriptlabelbase1] (scriptlabel1) {Makefile}; \node[label, right=0pt of scriptlabelbase2] (scriptlabel2) {advec\_particles.f90}; \node[label, right=0pt of scriptlabelbase3] (scriptlabel3) {advec\_s\_bc.f90}; \node[label, right=0pt of scriptlabelbase4] (scriptlabel4) {...}; \node[green3] (makedep) [right=0.1cm of base2] {MAKE\_DEPOSITORY\_parallel/}; \path[line] (currentv2) -- (base); \path[line] (base.south) |- (trunk2); \path[line] (base.north) |- (makedep); \draw[->, thick] (scriptlabel3) |- (makedep); } \end{tikzpicture} }\\ \item<4->{It calls the compiler using the {\tt unix} make mechanism. Compilation informations (i.e. files to be translated, dependencies, etc.) are given in file {\tt trunk/SOURCE/Makefile}. {\tt mbuild} transfers compiler options given in {\tt .mrun.config} to Makefile.}\\ \item<5->{The compiled files (object files with suffix .o) are stored in the make depository. This directory should \textbf{never} be directly modified by the user.}\\ \item<6->{If more than one block of settings for the \textcolor{green}{local} host (host identifier) is given in {\tt .mrun.config}, {\tt mbuild} creates further depositories, one for each block ({\tt MAKE\_DEPOSITORY\_block1, MAKE\_DEPOSITORY\_block2}, etc.).}\\ \end{itemize} \end{frame} % Folie 19 \begin{frame} \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Pre-Compiling the PALM Code, Running {\tt mbuild}} \small The pre-compiled PALM code is generated with the command\\ \par\medskip \qquad {\tt mbuild -h \textless host identifier\textgreater}\\ \par\medskip \begin{itemize} \item<2->{Informations will appear on the terminal.} \item<3->{Please read them carefully and answer the questions asked by {\tt mbuild}.} \item<4->{You will get continuous informations about the progress of compilation.} \item<5->{Compilation on Intel machines may take several minutes. On multicore systems less time is needed, because parallel compilation is switched on by default (see setting of environment variable {\tt mopts} in the configuration file).} \item<6->{No errors should (hopefully) occur, as long as the previous installation steps have been carried out without errors, and as long as the PALM source code has not yet been modified by yourself.} \end{itemize} \end{frame} % Folie 20 \begin{frame} \frametitle{Checking the PALM Installation (I)} \tikzstyle{blanc} = [rectangle, text width=0\textwidth, font=\scriptsize] \tikzstyle{white} = [rectangle, text width=0.1\textwidth, font=\scriptsize] \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny] \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny] \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.08\textwidth, font=\tiny] \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.13\textwidth, font=\tiny] \tikzstyle{yellow5} = [rectangle, draw, fill=yellow!100, text width=0.05\textwidth, font=\tiny] \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny] \tikzstyle{green2} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny] \tikzstyle{green3} = [rectangle, draw, fill=green!75!black, text width=0.25\textwidth, font=\tiny] \tikzstyle{line} = [draw, -] \tikzstyle{label} = [rectangle, font=\scriptsize, minimum size=8pt] \tikzstyle{point} = [rectangle, draw, inner sep=0pt,minimum size=0pt,fill=black] \small The installation can be checked by running a short PALM test job (\dq example run\dq) and comparing the output of this job with values from a reference file. \\ \par\medskip The test job will be started by using the mrun-tool.\\ Details about mrun and its options will be explained later. \\ \par\medskip \uncover<2->{Pre-requisites on the \textcolor{green}{local} host:}\\ \begin{itemize} \item<2->[1.]{Provide the configuration file {\tt .mrun.config} (already done)} \item<3->[2.]{Provide the parameter file for running the test job (needed for steering PALM):\\ \qquad {\tt mkdir -p JOBS/example\_cbl/INPUT} \\ \qquad {\tt cp trunk/INSTALL/example\_cbl\_p3d JOBS/example\_cbl/INPUT/}} \end{itemize} \begin{center} \begin{tikzpicture}[auto, >=latex'] \uncover<4->{ \node[yellow4] (currentv2) {current\_version/}; \node[point] (base) [right=0.2cm of currentv2] {}; \node[blanc] (base1) [above=0.3cm of base] {}; \node[blanc] (base2) [below=0.3cm of base] {}; \node[green2] (trunk2) [right=0.1cm of base2] {trunk/}; \node[green1] (instal) [right=0.4cm of trunk2] {INSTAL/}; \path[line] (trunk2) -- (instal); \node[yellow3] (jobs) [right=0.1cm of base1] {JOBS/}; \node[yellow4] (example) [right=0.4cm of jobs] {example\_cbl/}; \node[yellow3] (input) [right=0.4cm of example] {INPUT/}; \path[line] (jobs) -- (example); \path[line] (example) -- (input); \path[line] (currentv2) -- (base); \path[line] (base.south) |- (jobs); \path[line] (base.north) |- (trunk2); } \uncover<5->{ \draw[->, thick] (input) |- (instal); } \end{tikzpicture} \end{center} \end{frame} % Folie 21 \begin{frame} \frametitle{Checking the PALM Installation (II) \\ on the \textcolor{green}{local} Computer} \small Now the job can be run and results can be compared with the reference file \begin{itemize} \item<2->[1.]{If {\tt mpich2} is used (e.g. on the IMUK-cluster), the MPI-daemon has to be started as a background process: \\ \par\medskip \qquad {\tt mpd \&} } \item<3->[2.]{Create and start the (interactive) test run using {\tt mrun}: \\ \par\medskip \qquad {\tt mrun -d example\_cbl -K parallel -X2 -T2 -r \dq d3\# ts\#\dq} \\ \par\bigskip Confirm the terminal query with \dq y\dq. Messages about the progress of execution will be displayed on the terminal and should end (after about 30 s) with \\ \par\medskip \qquad {\tt --\textgreater \quad all actions finished} \\ \qquad {\tt Bye, bye \textless username\textgreater} !!} \end{itemize} \end{frame} % Folie 22 \begin{frame} \frametitle{Checking the PALM Installation (III)} \tikzstyle{blanc} = [rectangle, text width=0\textwidth, font=\scriptsize] \tikzstyle{white} = [rectangle, text width=0.1\textwidth, font=\scriptsize] \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny] \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny] \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.08\textwidth, font=\tiny] \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.13\textwidth, font=\tiny] \tikzstyle{yellow5} = [rectangle, draw, fill=yellow!100, text width=0.05\textwidth, font=\tiny] \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny] \tikzstyle{green2} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny] \tikzstyle{green3} = [rectangle, draw, fill=green!75!black, text width=0.25\textwidth, font=\tiny] \tikzstyle{line} = [draw, -] \tikzstyle{label} = [rectangle, font=\scriptsize, minimum size=8pt] \tikzstyle{point} = [rectangle, draw, inner sep=0pt,minimum size=0pt,fill=black] \small \begin{itemize} \item<1->[1.]{Check output files:\\ \par\medskip After the above message has appeared, there should be three files in directory: {\tt JOBS/example\_cbl/MONITORING} with names {\tt example\_cbl\_cpu, example\_cbl\_header} and {\tt example\_cbl\_rc}\\ \begin{center} \begin{tikzpicture}[auto, >=latex'] \uncover<2->{ \node[yellow4] (currentv) {current\_version/}; \node[yellow3] (jobs) [right=0.4cm of currentv] {JOBS/}; \node[yellow4] (example) [right=0.4cm of jobs] {example\_cbl/ }; \path[line] (currentv) -- (jobs); \path[line] (jobs) -- (example); \node[point] (base) [right=0.2cm of example] {}; \node[blanc] (base1) [above=0.3cm of base] {}; \node[blanc] (base2) [below=0.3cm of base] {}; \node[yellow3] (input) [right=0.1cm of base1] {INPUT/}; \node[yellow4] (monitoring) [right=0.1cm of base2] {MONITORING/}; \path[line] (example) -- (base); \path[line] (base.south) |- (input); \path[line] (base.north) |- (monitoring); } \end{tikzpicture} \end{center} } \item<3->[2.]{Compare the contents of {\tt example\_cbl\_rc} with the contents of a reference file by using the unix command {\tt diff} or, even better, {\tt kdiff3} (if available):\\ \par\medskip \qquad {\tt cd JOBS/example\_cbl/MONITORING} \\ \qquad {\tt diff example\_cbl\_rc ../../../trunk/INSTALL/example\_cbl\_rc}\\ \par\medskip \uncover<4->{ \textcolor{red}{Except run date, time, and small differences in the version/processor numbers, you should not find any difference between these files!}}} \end{itemize} \end{frame} % Folie 23 \begin{frame} \frametitle{Installing PALM on IMUK‘s inferno \\ Step by Step Instructions (I)} \footnotesize \begin{itemize} \item<2->[1.]{Login on the IMUK-system using the NX-client or an ssh-client:\\ \par\medskip \qquad {\tt ssh -X \textless your IMUK-username\textgreater @130.75.105.5} \\ \par\medskip FORTRAN-compiler, MPI- and netCDF-libraries and all other required software are already installed.} \item<3->[2.]{Download the PALM package by using subversion: \\ \par\medskip \qquad {\tt mkdir -p $\sim$/palm/current\_version} \\ \qquad {\tt cd $\sim$/palm/current\_version} \\ \qquad {\tt svn checkout --username \textless your IMUK-username\textgreater \quad \textbackslash} \\ \qquad \qquad{\tt svn://130.75.105.7/palm/trunk trunk }} \item<4->[3.]{Set environment variables: \\ \par\medskip \qquad {\tt export PALM\_BIN=\$HOME/palm/current\_version/trunk/SCRIPTS} \\ \qquad {\tt export PATH=\$PALM\_BIN:\$PATH} \\ \par\medskip Set these variables also in file {\tt .myprofile.} or \\ \par\medskip \qquad {\tt cp /home/raasch/.myprofile \qquad \$HOME}} \end{itemize} \end{frame} % Folie 24 \begin{frame} \frametitle{Installing PALM on IMUK‘s inferno \\ Step by Step Instructions (II)} \footnotesize \begin{itemize} \item<1->[4.]{A pre-configured configuration file for the IMUK/HLRN system is available: \\ \par\medskip \qquad{\tt cp trunk/SCRIPTS/.mrun.config.imuk\_hlrn .mrun.config}}\\ \par\medskip \item<2->[5.]{Edit this file and replace the string \textless replace by your IMUK username\textgreater \ with your IMUK-username. (Do not forget to uncomment the respective two lines!)} \item<3->[6.]{Create the utility programs: \\ \par\medskip \qquad {\tt mbuild -u -h lcmuk}}\\ \par\medskip \item<4->[7.]{Pre-compile the PALM code:\\ \par\medskip \qquad{\tt mbuild -h lcmuk}}\\ \par\medskip \item<5->[8.]{Provide the parameter file: \\ \par\medskip \qquad{\tt mkdir -p JOBS/example\_cbl/INPUT} \\ \qquad{\tt cp trunk/INSTALL/example\_cbl\_p3d JOBS/example\_cbl/INPUT}} \end{itemize} \end{frame} % Folie 25 \begin{frame} \frametitle{Installing PALM on IMUK‘s inferno \\ Step by Step Instructions (III)} \footnotesize \begin{itemize} \item<1->[9.]{Carry out the test run: \\ \par\medskip \qquad{\tt mrun -d example\_cbl -K parallel -X2 -T2 -r \dq d3\#\dq}} \item<2->[10.]{Check results (after job has finished): \\ \par\medskip \qquad{\tt cd JOBS/example\_cbl/MONITORING} \\ \qquad{\tt kdiff3 example\_cbl\_rc ../../../trunk/INSTALL/example\_cbl\_rc}} \end{itemize} \end{frame} % Folie 26 \begin{frame} \frametitle{Installing PALM on a \textcolor{red}{remote} Computer (HLRN) \\ Step by Step Instructions (I)} \footnotesize \begin{itemize} \item<1->[1.]{Create your working directory on the \textcolor{red}{remote} host: \\ \par\medskip \qquad {\tt ssh \textless your HLRN-username\textgreater@hicegate.hlrn.de}\\ \qquad {\tt mkdir -p $\sim$/palm/current\_version}} \item<2->[2.]{Set environment variables on the \textcolor{red}{remote} host: \\ \par\medskip \qquad{\tt export PALM\_BIN=\$HOME/palm/current\_version/trunk/SCRIPTS} \\ \qquad{\tt export PATH=\$PALM\_BIN:\$PATH} \\ \par\medskip This has to be done in file {\tt $\sim$/.bashrc} or in file {\tt $\sim$/.profile}, depending on your default shell. You can get your default shell via command: \\ \par\medskip \qquad{\tt echo \$SHELL}} \item<3->[3.]{Please also remove the line \texttt{ulimit -S -v 256000} in file {\tt $\sim$/.profile} to disable the virtual memory limitation of 256 MByte that is set for your seminar user account.} \end{itemize} \end{frame} % Folie 27 \begin{frame} \frametitle{Installing PALM on a \textcolor{red}{remote} Computer (HLRN) \\ Step by Step Instructions (II)} \footnotesize \begin{itemize} \item<1->[4.]{On the \textcolor{green}{local} host, edit your configuration file ({\tt .mrun.config}), and replace in the lcsgih-block \textless replace by your HLRN username\textgreater with your HLRN-username.}\\ \par\medskip \item<2->[5.]{Create directory {\tt job\_queue} on the \textcolor{green}{local} and the \textcolor{red}{remote} host:\\ \par\medskip \qquad{\tt mkdir $\sim$/job\_queue}} \end{itemize} \end{frame} % Folie 28 \begin{frame} \frametitle{Establishing the ssh Public-Key Authentication} \tikzstyle{blue} = [rectangle, draw, align=center, color=green, text width=0.18\textwidth, font=\tiny] \tikzstyle{red} = [rectangle, draw, align=center, color=red, text width=0.18\textwidth, font=\tiny] \tikzstyle{label} = [rectangle, font=\tiny, minimum size=8pt] \footnotesize The PALM-tools (mrun, mbuild) are using ssh/scp for batch jobs on \textcolor{red}{remote} computers and require, that ssh/scp does not prompt for passwords.This can be managed by using the public-key authentication method. \\ \par\medskip Public-key authentication is needed for connections in both directions! \\ \par\medskip \begin{center} \begin{tikzpicture}[auto, >=latex'] \coordinate (p0) at (-2.0cm,0.0cm); \coordinate (p1) at (2.0cm,0.0cm); \coordinate (p2) at (-2.0cm,0.2cm); \coordinate (p3) at (2.0cm,0.2cm); \coordinate (p4) at (-2.0cm,-0.2cm); \coordinate (p5) at (2.0cm,-0.2cm); \coordinate (p6) at (0.0cm,0.0cm); \draw[->, thick, color=green] (p2) -- (p3); \draw[<-, thick, color=red] (p4) -- (p5); \node[blue] (green) [left=0.4cm of p0] { local computer\\ \textless{IP-local}\textgreater\\ OpenSSH }; \node[red] (red) [right=0.4cm of p1] { remote computer\\ \textless{IP-remote}\textgreater\\ OpenSSH }; \node[label, above=0.3cm of p6] (labelblue) {{\tt ssh @<130.75.4.101>}}; \node[label, below=0.3cm of p6] (labelred) {{\tt ssh @<130.75.4.101>}}; \end{tikzpicture} \end{center} \uncover<2->{Pre-requisites:}\\ \begin{itemize} \item<3->[1.]{On the \textcolor{green}{local} system (IMUK, OpenSSH): create .ssh directory (if not existing):\\ \par\medskip \qquad{\tt mkdir $\sim$/.ssh}\\ \qquad{\tt chmod go-rwx $\sim$/.ssh}} \par\medskip \item<4->[2.]{On the \textcolor{red}{remote} system (HLRN, OpenSSH): create .ssh directory (if not existing):\\ \par\medskip \qquad{\tt mkdir $\sim$/.ssh}\\ \qquad{\tt chmod go-rwx $\sim$/.ssh}} \end{itemize} \end{frame} % Folie 29 \begin{frame} \frametitle{Enable public-key authentication for connections from the \textcolor{green}{local} system to the \textcolor{red}{remote} system:} \footnotesize On the \textcolor{green}{local} system (inferno.muk.uni-hannover.de, 130.75.105.5): \begin{itemize} \item<2->[1.]{create the key:\\ \par\medskip \qquad{\tt cd $\sim$/.ssh}\\ \qquad{\tt ssh-keygen -b 2048 -t dsa}\\ \qquad\qquad{\tt \# creates files id\_dsa and id\_dsa.pub}\\ \qquad\qquad{\tt \# type when asked for passphrase!!}} \par\medskip \item<3->[2.]{copy the public key to the \textcolor{red}{remote} system:\\ \par\medskip \qquad{\tt scp id\_dsa.pub @130.75.4.101:.ssh/authorized\_keys}} \end{itemize} \end{frame} % Folie 30 \begin{frame} \frametitle{Enable public-key authentication for connections from the \textcolor{red}{remote} system to the \textcolor{green}{local} system:} \footnotesize On the \textcolor{red}{remote} system (hicegate.hlrn.de, 130.75.4.101): \begin{itemize} \item<2->[1.]{Create the key:\\ \par\medskip \qquad{\tt cd $\sim$/.ssh}\\ \qquad{\tt ssh-keygen -t dsa}\\ \qquad\qquad{\tt \# creates files id\_dsa and id\_dsa.pub}\\ \qquad\qquad{\tt \# type when asked for passphrase!!}} \par\medskip \item<3->[2.]{Copy the public key to the \textcolor{green}{local} system:\\ \par\medskip \qquad{\tt scp id\_dsa.pub @130.75.105.5:.ssh/authorized\_keys}}\\ \par\medskip \item<4->[3.]{Append the public key also to the HLRN authorized\_keys file:\\ \par\medskip \qquad{\tt cat id\_dsa.pub >> authorized\_keys}} \end{itemize} \end{frame} % Folie 31 \begin{frame} \frametitle{Establishing the ssh Public-Key Authentication} \footnotesize \underline{Final action:}\\ \par\medskip Establish ssh-connection at least one time from the \textcolor{green}{local} host to the \textcolor{red}{remote} host and vice versa.\\ \par\medskip Use IP-adresses (eg. 130.75...) and not the symbolic names (e.g. ...hlrn.de)!\\ \par\medskip After this, {\tt ssh-} and {\tt scp-} calls should not prompt for passwords any more. Please test at least one time from the \textcolor{red}{remote} to the \textcolor{green}{local} host, because the first ssh connection requires a confirmation to be typed from the keyboard!\\ \par\medskip \begin{itemize} \item<2->[1.]{On the \textcolor{green}{local} system (inferno):\\ \par\medskip \qquad{\tt ssh @130.75.4.101}} \par\medskip \item<3->[2.]{On the \textcolor{red}{remote} system (hicegate):\\ \par\medskip \qquad{\tt ssh @130.75.105.5}}\\ \end{itemize} \end{frame} % Folie 32 \begin{frame} \frametitle{Installing PALM on a \textcolor{red}{remote} Computer (HLRN) \\ Step by Step Instructions (III)} \footnotesize \begin{itemize} \item<1->[5.]{Create the utility programs on the \textcolor{red}{remote} host by executing the following command on the \textcolor{green}{local} host: \\ \par\medskip \qquad{\tt mbuild -u -h lcsgih} \\ \par\medskip This command also copies some shellscripts required to run PALM from the \textcolor{green}{local} host to the directory {\tt $\sim$/palm/current\_version/trunk/SCRIPTS} on the \textcolor{red}{remote} host.} \\ \par\medskip \item<2->[6.]{Pre-compile the PALM code on the \textcolor{red}{remote} host: \\ \par\medskip \qquad{\tt mbuild -h lcsgih}} \\ \par\medskip \item<3->[7.]{Create the temporary working catalog on the \textcolor{red}{remote} host, if it does not exist (this is the directory given for the \textcolor{red}{remote} host by the environment variable {\tt tmp\_user\_catalog} in the configuration file {\tt .mrun.config}):\\ \par\medskip \qquad{\tt mkdir \textless tmp\_user\_catalog\textgreater}} \end{itemize} \end{frame} % Folie 33 \begin{frame} \frametitle{Installing PALM on a \textcolor{red}{remote} Computer (HLRN) \\ Step by Step Instructions (IV)} \footnotesize \begin{itemize} \item<1->[8.]{Carry out the test run by calling mrun on the \textcolor{green}{local} host:\\ \par\medskip \qquad{\tt mrun -d example\_cbl -h lcsgih -K parallel -X8 -T2 -q testq}\\ \qquad{\tt -t 300 -r \dq d3\#\dq}}\\ \par\medskip \item<2->[9.]{After the job has finished on the \textcolor{red}{remote} host, results will be automatically transferred to the \textcolor{green}{local} host. Check the results on the \textcolor{green}{local} host:\\ \par\medskip \qquad{\tt cd JOBS/example\_cbl/MONITORING} \\ \qquad{\tt kdiff3 lcsgih\_example\_cbl\_rc}\\ \qquad{\tt ../../../trunk/INSTALL/example\_cbl\_rc}} \end{itemize} \end{frame} \end{document}