Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions docs/build-install/applications/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[](){#ref-build-applications}
# Application installation guides

This is a collection of installation guides for commonly-used software that is not [officially supported softare][ref-software-sciapps].

!!! note "Contributions welcome!"
The guides here are best effort, and may become out of date.

If you see that a guide is out of date, you are welcome to [propose an update](https://github.com/eth-cscs/cscs-docs/issues) or make a [contribution][ref-contributing].

## Guides

* [WRF][ref-software-packages-wrf]

92 changes: 92 additions & 0 deletions docs/build-install/applications/wrf.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
[](){#ref-software-packages-wrf}
# WRF

[The Weather Research & Forecasting Model](https://www.mmm.ucar.edu/models/wrf) (WRF) is a numerical weather prediction system designed for both atmospheric research and weather forecasting.

It is used for CPU-only simulation on [Eiger][ref-cluster-eiger], for which this guide applies.

## Using Spack

Spack provides the [wrf](https://packages.spack.io/package.html?name=wrf) package, which we can install using the [uenv-spack][ref-building-uenv-spack] tool.

First create a working directory where you will install the software.
Here, we create it in your project's [Store][ref-storage-store] path, where the package can be accessed by all users in your project.
```bash
mkdir $STORE/wrf
cd $STORE/wrf
```

Then follow the steups in the [uenv-spack][ref-building-uenv-spack] guide to install `uenv-spack`

```bash
git clone https://github.com/eth-cscs/uenv-spack.git
(cd uenv-spack && ./bootstrap)
```

The [`prgenv-gnu`][ref-uenv-prgenv-gnu] uenv is suitable for building WRF.
```
uenv start prgenv-gnu/24.11:v2 --view=spack
```
In this example we use the latest version of `prgenv-gnu` on Eiger at the time of writing -- check the `prgenv-gnu` [guide][ref-uenv-prgenv-gnu] for the latest version.

```bash
# build the latest version provided by the version of Spack used by prgenv-gnu

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add $ cd ..

$ uenv-spack/uenv-spack $PWD/build --uarch=zen2 --specs=wrf

# build a specific version
$ uenv-spack/uenv-spack $PWD/build --uarch=zen2 [email protected]

# build a specific version with WRF-Chem enabled
$ uenv-spack/uenv-spack $PWD/build --uarch=zen2 [email protected] +chem
```

!!! note
See the wrf Spack [package documentation](https://packages.spack.io/package.html?name=wrf) for information about options that can be enabled disabled.

Finally, it is time to build the software:

```
cd build
./build
```

This will take 30-60 minutes, while Spack builds some dependencies then WRF.

### Using the Spack installation

The installation creates a module file in the `wrf/build` path, that you created.
Let's assume you have installed it in the `$STORE` path for your project, add the following to the top of your sbatch script:

```bash
#SBATCH --uenv=prgenv-gnu/24.11:v2

module use $STORE/wrf/build/modules
module load wrf
```

!!! example "Modules installed by Spack"
Spack creates a module for ever
```console
$ module use $STORE/wrf/build/modules
$ module avail

------------------ /capstor/store/cscs/cscs/csstaff/wrf/build/modules ------------------
boost/1.86.0 kokkos-tools/develop netlib-scalapack/2.2.0
cmake/3.30.5 kokkos/4.4.01 ninja/1.12.1
cray-mpich/8.1.30 libtree/3.1.1 openblas/0.3.28
fftw/3.3.10 lua/5.4.6 osu-micro-benchmarks/5.9
fmt/11.0.2 lz4/1.10.0 python/3.12.5
gcc/13.3.0 meson/1.5.1 superlu/5.3.0
gsl/2.8 netcdf-c/4.9.2 wrf/4.6.1
hdf5/1.14.5 netcdf-cxx/4.2 zlib-ng/2.2.1
kokkos-kernels/4.4.01 netcdf-fortran/4.6.1

$ module load wrf
$ which wrf.exe
/capstor/store/cscs/cscs/csstaff/wrf/build/store/linux-sles15-zen2/gcc-13.3.0/wrf-4.6.1-owj2dsfeslzkulaobdqbad4kh6ojh6n5/main/wrf.exe
```

## Installing by hand

The process for building by hand is more difficult -- so try the Spack approach first, before contacting us.

21 changes: 11 additions & 10 deletions docs/build-install/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,29 @@

CSCS provides commonly used software and tools on Alps, however many use cases will require first installing software on a system before you can start working.

Modern HPC applications and software stacks are often very complicated, and there is no one-size-fits-all method for building and installing them.
<div class="grid cards" markdown>

- :fontawesome-solid-earth-americas: __[Application guides][ref-build-applications]__ – guides on how to install commonly requested or difficult to install software.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- :fontawesome-solid-earth-americas: __[Application guides][ref-build-applications]__ – guides on how to install commonly requested or difficult to install software.
- :fontawesome-solid-earth-americas: __[Application guides][ref-build-applications]__ – guides on how to install commonly requested or difficult to install, but not officially supported, software.

or something in that direction?


## Programming environments
</div>

Modern HPC applications and software stacks are often very complicated, and there is no one-size-fits-all method for building and installing them.

<div class="grid cards" markdown>

- :fontawesome-solid-earth-americas: __[uenv][ref-uenv]__ – uenv provide isolated software environments for applications and developers.

</div>

## Python

There are multiple ways to install Python software.

<div class="grid cards" markdown>

- :fontawesome-brands-python: __[pip]__ – create a virtual environment using python in a uenv
- :fontawesome-brands-docker: __[Podman][ref-build-containers]__ – for building software in containers.

</div>

[pip]: pip.md
<div class="grid cards" markdown>

## Containers
- :fontawesome-brands-python: __[Python][ref-build-python]__ – create a virtual environment using python in a uenv.

</div>

CSCS provides [Podman][ref-build-containers] for building software in containers
5 changes: 3 additions & 2 deletions docs/build-install/pip.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# Installing Python software with pip
[](){#ref-build-python}
# Installing Python software

todo
!!! todo
3 changes: 3 additions & 0 deletions docs/build-install/uenv.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
[](){#ref-building-uenv}
# Building with uenv

Uenv are user environments that provide scientific applications, libraries and tools on [Alps][ref-alps].
This article explains how to use them to build software.

Expand Down
1 change: 1 addition & 0 deletions docs/contributing/index.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[](){#ref-contributing}
# Contributing

This documentation is developed using the [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) framework, and the source code for the docs is publicly available on [GitHub](https://github.com/eth-cscs/cscs-docs).
Expand Down
5 changes: 4 additions & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,11 @@ nav:
- 'Building and Installing software':
- build-install/index.md
- 'uenv': build-install/uenv.md
- 'containers (podman)': build-install/containers.md
- 'Containers (podman)': build-install/containers.md
- 'Python with pip': build-install/pip.md
- 'Applications':
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seeing "Applications" in the navigation tree I would not necessarily expect to find this guide under that heading. What about using the title of the page, "Application installation guides"? Or "Application guides" like on the "Building and Installing software" index page?

- build-install/applications/index.md
- 'WRF': build-install/applications/wrf.md
- 'Debugging and Performance Analysis':
- software/devtools/index.md
- 'Linaro uenv': software/devtools/linaro-uenv.md
Expand Down