21 Commits

Author SHA1 Message Date
6812bb6bad improve some admonishment titles
All checks were successful
Build and deploy documentation / build-and-deploy-docs (push) Successful in 25s
2026-01-23 15:25:23 +01:00
76c2b407f3 improve merlin_quotas docu
All checks were successful
Build and deploy documentation / build-and-deploy-docs (push) Successful in 22s
2026-01-23 15:22:04 +01:00
b79f937149 Update RSM step2 image
All checks were successful
Build and deploy documentation / build-and-deploy-docs (push) Successful in 21s
2026-01-15 16:43:38 +01:00
7aba2e0851 Merge pull request 'MkDocs migration' (#17) from mkdocs into master
All checks were successful
Build and deploy documentation / build-and-deploy-docs (push) Successful in 21s
Reviewed-on: #17
2026-01-12 17:51:34 +01:00
3d3eb50d10 final changes 2026-01-12 17:51:15 +01:00
266846282e add/rm final files 2026-01-12 17:49:48 +01:00
ad1735a62f minor improvements 2026-01-12 17:49:48 +01:00
7add1a6e0b add latest new section to frontpage
We use a custom override template (jinja) to generate a suitable list of
new items.

Also added first text for announcing our new user docs
2026-01-12 17:49:48 +01:00
8c0f9e3c21 merge and move support pages
this are now under the /support path, meaning that this is unified for
all clusters.
2026-01-12 17:49:48 +01:00
0bda3a430a fix issue with the news page 2026-01-12 17:49:47 +01:00
e7bfce70a4 minor fixes
* added back the HPCE logo to landing page
* activated the sticky tabs navigation feature (so navigation bar stays
  visible)
* added edit buttons to content (so users can _maybe_ help us in keeping
  our docs up to date)
2026-01-12 17:49:47 +01:00
fb8a2ca771 update main Merlin7 page with production status, remove dead links 2026-01-12 17:49:47 +01:00
7db5d0fd05 initial formatting changes complete 2026-01-12 17:49:47 +01:00
f58c1f57b8 fixed all links now 2026-01-12 17:49:47 +01:00
d6fffc1a82 ensure headers have permalinks usable 2026-01-12 17:49:47 +01:00
bde174b726 first stab at mkdocs migration
refactor CSCS and Meg content

add merlin6 quick start

update merlin6 nomachine docs

give the userdoc its own color scheme

we use the Materials default one

refactored slurm general docs merlin6

add merlin6 JB docs

add software support m6 docs

add all files to nav

vibed changes #1

add missing pages

further vibing #2

vibe #3

further fixes
2026-01-12 17:49:41 +01:00
149de6fb18 FIX: old gitlab links
All checks were successful
Build and Deploy Documentation / build-and-deploy (push) Successful in 7s
2025-12-18 10:39:01 +01:00
c332469434 added average allocation number for GPU projects
All checks were successful
Build and Deploy Documentation / build-and-deploy (push) Successful in 7s
2025-12-09 13:09:22 +01:00
f95af6babe FIX: old IPPL modules
All checks were successful
Build and Deploy Documentation / build-and-deploy (push) Successful in 7s
2025-12-03 13:10:47 +01:00
643d0873be ADD: q-e@7.5
All checks were successful
Build and Deploy Documentation / build-and-deploy (push) Successful in 6s
2025-11-28 18:01:36 +01:00
921a62b702 ADD: gromacs@2025.3 all systems
All checks were successful
Build and Deploy Documentation / build-and-deploy (push) Successful in 8s
2025-11-27 16:41:09 +01:00
49 changed files with 457 additions and 17113 deletions

View File

@@ -0,0 +1,30 @@
---
name: Build and deploy documentation
on:
push:
branches:
- master
workflow_dispatch:
jobs:
build-and-deploy-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configure git credentials
run: |
git config --global user.name "Gitea Actions"
git config --global user.email "actions@gitea.local"
- uses: actions/setup-python@v5
with:
python-version: "3"
- name: Install mkdocs-material
run: |
apt-get update
apt-get install -y pngquant
pip install \
mkdocs-material[recommended]=="9.7.*" \
mkdocs-material[git]=="9.7.*" \
mkdocs-material[imaging]=="9.7.*" \
mkdocs-glightbox=='0.5.*'
- name: Deploy documentation
run: mkdocs gh-deploy --force -b gitea-pages

6
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,6 @@
// Place your settings in this file to overwrite default and user settings.
{
"files.associations": {
"*.html": "liquid"
}
}

4
Dockerfile Normal file
View File

@@ -0,0 +1,4 @@
FROM docker.io/squidfunk/mkdocs-material:9.7
# add some plugins
RUN pip install mkdocs-glightbox=='0.5.*'

View File

@@ -1,28 +0,0 @@
# This is your sidebar TOC. The sidebar code loops through sections here and provides the appropriate formatting.
entries:
- product: HPCE
levels: one
folders:
- title: Services
output: web
folderitems:
- title: Overview
url: /index.html
output: web
- title: News
url: /news.html
output: web
- title: Merlin7 HPC Cluster
url: /merlin7/introduction.html
output: web
- title: Merlin6 HPC Cluster
url: /merlin6/introduction.html
output: web
- title: MEG HPC Cluster
url: /meg/introduction.html
output: web
- title: PSI HPC@CSCS
url: /CSCS/index.html
output: web

View File

@@ -1,125 +0,0 @@
# Follow the pattern here for the URLs -- no slash at the beginning, and include the .html. The link here is rendered exactly as is in the Markdown references.
entries:
- product: Merlin
version: 6
folders:
- title: Quick Start Guide
# URLs for top-level folders are optional. If omitted it is a bit easier to toggle the accordion.
#url: /merlin6/introduction.html
folderitems:
- title: Introduction
url: /merlin6/introduction.html
- title: Code Of Conduct
url: /merlin6/code-of-conduct.html
- title: Requesting Merlin Access
url: /merlin6/request-account.html
- title: Requesting Merlin Projects
url: /merlin6/request-project.html
- title: Accessing the Interactive Nodes
url: /merlin6/interactive.html
- title: Accessing the Slurm Clusters
url: /merlin6/slurm-access.html
- title: How To Use Merlin
folderitems:
- title: Accessing from a Linux client
url: /merlin6/connect-from-linux.html
- title: Accessing from a Windows client
url: /merlin6/connect-from-windows.html
- title: Accessing from a MacOS client
url: /merlin6/connect-from-macos.html
- title: Merlin6 Storage
url: /merlin6/storage.html
- title: Transferring Data
url: /merlin6/transfer-data.html
- title: Archive & PSI Data Catalog
url: /merlin6/archive.html
- title: Remote Desktop Access
url: /merlin6/nomachine.html
- title: Configuring SSH Keys
url: /merlin6/ssh-keys.html
- title: Kerberos and AFS authentication
url: /merlin6/kerberos.html
- title: Software repository - PModules
url: /merlin6/using-modules.html
- title: Slurm General Documentation
folderitems:
- title: Slurm Basic Commands
url: /merlin6/slurm-basics.html
- title: Running Slurm Batch Scripts
url: /merlin6/running-jobs.html
- title: Running Slurm Interactive Jobs
url: /merlin6/interactive-jobs.html
- title: Slurm Batch Script Examples
url: /merlin6/slurm-examples.html
- title: Slurm Monitoring
url: /merlin6/monitoring.html
- title: Merlin6 CPU Slurm cluster
folderitems:
- title: Using Slurm - merlin6
url: /merlin6/slurm-configuration.html
- title: HW/SW description
url: /merlin6/hardware-and-software.html
- title: Merlin6 GPU Slurm cluster
folderitems:
- title: Using Slurm - gmerlin6
url: /gmerlin6/slurm-configuration.html
- title: HW/SW description
url: /gmerlin6/hardware-and-software.html
- title: Merlin5 CPU Slurm cluster
folderitems:
- title: Using Slurm - merlin5
url: /merlin5/slurm-configuration.html
- title: HW/SW description
url: /merlin5/hardware-and-software.html
- title: Jupyterhub
folderitems:
- title: Jupyterhub service
url: /merlin6/jupyterhub.html
- title: Jupyter examples on merlin6
url: /merlin6/jupyter-examples.html
- title: Jupytext - efficient editing
url: /merlin6/jupytext.html
- title: Jupyter Extensions
url: /merlin6/jupyter-extensions.html
- title: Jupyterlab
url: /merlin6/jupyterlab.html
- title: Jupyterhub Troubleshooting
url: /merlin6/jupyterhub-trouble.html
- title: Software Support
folderitems:
- title: ANSYS
url: /merlin6/ansys.html
- title: ANSYS RSM
url: /merlin6/ansys-rsm.html
- title: ANSYS/CFX
url: /merlin6/ansys-cfx.html
- title: ANSYS/Fluent
url: /merlin6/ansys-fluent.html
- title: ANSYS/MAPDL
url: /merlin6/ansys-mapdl.html
- title: ANSYS/HFSS
url: /merlin6/ansys-hfss.html
- title: GOTHIC
url: /merlin6/gothic.html
- title: merlin_rmount
url: /merlin6/merlin-rmount.html
- title: IntelMPI
url: /merlin6/impi.html
- title: OpenMPI
url: /merlin6/openmpi.html
- title: ParaView
url: /merlin6/paraview.html
- title: Python
url: /merlin6/python.html
- title: Support
folderitems:
- title: FAQ
url: /merlin6/faq.html
- title: Known Problems
url: /merlin6/known-problems.html
- title: Troubleshooting
url: /merlin6/troubleshooting.html
- title: Contact
url: /merlin6/contact.html

View File

@@ -1,93 +0,0 @@
# Follow the pattern here for the URLs -- no slash at the beginning, and include the .html. The link here is rendered exactly as is in the Markdown references.
entries:
- product: Merlin
version: 7
folders:
- title: Quick Start Guide
folderitems:
- title: Introduction
url: /merlin7/introduction.html
- title: Code Of Conduct
url: /merlin7/code-of-conduct.html
- title: Requesting Merlin7 Access
url: /merlin7/request-account.html
# - title: Requesting Projects
# url: /merlin7/request-project.html
- title: Accessing the Interactive Login Nodes
url: /merlin7/interactive.html
- title: Accessing the Slurm Clusters
url: /merlin7/slurm-access.html
- title: Software Repositories
url: /merlin7/software-repositories.html
- title: How To Use Merlin7
folderitems:
- title: Accessing from a Linux client
url: /merlin7/connect-from-linux.html
- title: Accessing from a Windows client
url: /merlin7/connect-from-windows.html
- title: Accessing from a MacOS client
url: /merlin7/connect-from-macos.html
- title: Merlin7 Storage
url: /merlin7/storage.html
- title: Transferring Data
url: /merlin7/transfer-data.html
# - title: Archive & PSI Data Catalog
# url: /merlin7/archive.html
- title: Remote Desktop Access
url: /merlin7/nomachine.html
- title: Configuring SSH Keys
url: /merlin7/ssh-keys.html
- title: Kerberos and AFS authentication
url: /merlin7/kerberos.html
- title: Software Repositories
url: /merlin7/software-repositories.html
- title: General Tools
url: /merlin7/tools.html
- title: Slurm General Documentation
folderitems:
- title: Merlin7 Infrastructure
url: /merlin7/merlin7-configuration.html
- title: Slurm Configuration
url: /merlin7/slurm-configuration.html
- title: Running Slurm Interactive Jobs
url: /merlin7/interactive-jobs.html
- title: Slurm Batch Script Examples
url: /merlin7/slurm-examples.html
- title: Jupyterhub
folderitems:
- title: Jupyterhub service
url: /merlin7/jupyterhub.html
- title: Software Support
folderitems:
- title: PSI Modules
url: /merlin7/pmodules.html
- title: Spack Modules
url: /merlin7/spack.html
- title: Cray Modules
url: /merlin7/cray-module-env.html
- title: OpenMPI
url: /merlin7/openmpi.html
- title: ANSYS
url: /merlin7/ansys.html
- title: ANSYS RSM
url: /merlin7/ansys-rsm.html
- title: GROMACS
url: /merlin7/gromacs.html
- title: CP2K
url: /merlin7/cp2k.html
- title: LAMMPS
url: /merlin7/lammps.html
- title: Quantum ESPRESSO
url: /merlin7/quantum-espresso.html
- title: OPAL-X
url: /merlin7/opal-x.html
- title: IPPL
url: /merlin7/ippl.html
- title: Support
folderitems:
- title: Merlin6 to Merlin7 Migration Guide
url: /merlin7/migrating.html
- title: Contact
url: /merlin7/contact.html

View File

@@ -1,8 +1,9 @@
---
services:
zensical:
image: docker.io/zensical/zensical:latest
command: serve --dev-addr=0.0.0.0:8000
mkdocs:
build: .
# explicitly force live-reloading per https://github.com/squidfunk/mkdocs-material/issues/8478
command: serve --dev-addr=0.0.0.0:8000 --livereload
security_opt:
- no-new-privileges:true
volumes:

View File

@@ -32,7 +32,9 @@ oversubscription, will be arbitrated by a panel within CSD.
### Instructions for filling out the 2026 survey
* We have a budget of 100 kCHF for 2026, which translates to 435'000 multicore node hours or 35'600 node hours on the GPU Grace Hopper nodes. The minimum allocation is 10'000 node hours for multicore projects, an average project allocation would amount to 30'000 node hours
* We have a budget of 100 kCHF for 2026, which translates to 435'000 multicore node hours or 35'600 node hours on the GPU Grace Hopper nodes.
* multicore projects: The minimum allocation is 10'000 node hours, an average project allocation amounts to 30'000 node hours
* GPU projects: The minimum allocation is 800 node hours, an average project allocation is 2000 node hours.
* You need to specify the total resource request for your project in node hours, and how you would like to split the resources over the 4 quarters. For the allocations per quarter year, please enter the number in percent (e.g. 25%, 25%, 25%, 25%). If you indicate nothing, a 25% per quarter will be assumed.
* We currently have a total of 65 TB of storage for all projects. Additional storage
can be obtained, but large storage assignments are not in scope for these projects.

View File

@@ -112,13 +112,13 @@ The below table summarizes the hardware setup for the Merlin6 GPU computing node
### Login Nodes
The login nodes are part of the **[Merlin6](../merlin6/index.md)** HPC cluster,
The login nodes are part of the **[Merlin6](../merlin6/introduction.md)** HPC cluster,
and are used to compile and to submit jobs to the different ***Merlin Slurm clusters*** (`merlin5`,`merlin6`,`gmerlin6`,etc.).
Please refer to the **[Merlin6 Hardware Documentation](../merlin6/hardware-and-software-description.md)** for further information.
### Storage
The storage is part of the **[Merlin6](../merlin6/index.md)** HPC cluster,
The storage is part of the **[Merlin6](../merlin6/introduction.md)** HPC cluster,
and is mounted in all the ***Slurm clusters*** (`merlin5`,`merlin6`,`gmerlin6`,etc.).
Please refer to the **[Merlin6 Hardware Documentation](../merlin6/hardware-and-software-description.md)** for further information.
@@ -134,7 +134,7 @@ ibstat | grep Rate
## Software
In the Merlin6 GPU computing nodes, we try to keep software stack coherency with the main cluster [Merlin6](../merlin6/index.md).
In the Merlin6 GPU computing nodes, we try to keep software stack coherency with the main cluster [Merlin6](../merlin6/introduction.md).
Due to this, the Merlin6 GPU nodes run:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 KiB

View File

@@ -2,13 +2,14 @@
hide:
- navigation
- toc
template: "frontpage.html"
---
# HPCE User Documentation
![The HPCE clusters](images/merlin_cave.png){ width="650px" }
![HPCE group](images/hpce_logo_full.png#only-light){ width="250px" }
![HPCE group](images/hpce_logo_full_dark.png#only-dark){ width="250px" }
/// caption
_Within his lair, the wizard ever strives for the perfection of his art._
///
The [HPCE
@@ -20,3 +21,5 @@ researchers, staff, and external collaborators, such as the Merlin series of
HPC clusters. Furthermore the HPCE group engages in research activities on
technologies (data analysis and machine learning technologies) used on these
systems.
<!-- note that further content is dynamically added via the overrides/frontpage.html template -->

View File

@@ -6,7 +6,7 @@
mission-critical applications which was built in 2016-2017. It was an
extension of the Merlin4 cluster and built from existing hardware due
to a lack of central investment on Local HPC Resources. **Merlin5** was
then replaced by the **[Merlin6](../merlin6/index.md)** cluster in 2019,
then replaced by the **[Merlin6](../merlin6/introduction.md)** cluster in 2019,
with an important central investment of ~1,5M CHF. **Merlin5** was mostly
based on CPU resources, but also contained a small amount of GPU-based
resources which were mostly used by the BIO experiments.
@@ -15,8 +15,8 @@ resources which were mostly used by the BIO experiments.
called **`merlin5`**. In that way, the old CPU computing nodes are still available as extra computation resources,
and as an extension of the official production **`merlin6`** [Slurm](https://slurm.schedmd.com/overview.html) cluster.
The old Merlin5 _**login nodes**_, _**GPU nodes**_ and _**storage**_ were fully migrated to the **[Merlin6](../merlin6/index.md)**
cluster, which becomes the **main Local HPC Cluster**. Hence, **[Merlin6](../merlin6/index.md)**
The old Merlin5 _**login nodes**_, _**GPU nodes**_ and _**storage**_ were fully migrated to the **[Merlin6](../merlin6/introduction.md)**
cluster, which becomes the **main Local HPC Cluster**. Hence, **[Merlin6](../merlin6/introduction.md)**
contains the storage which is mounted on the different Merlin HPC [Slurm](https://slurm.schedmd.com/overview.html) Clusters (`merlin5`, `merlin6`, `gmerlin6`).
### Submitting jobs to 'merlin5'

View File

@@ -63,13 +63,13 @@ The below table summarizes the hardware setup for the Merlin5 computing nodes:
### Login Nodes
The login nodes are part of the **[Merlin6](../merlin6/index.md)** HPC cluster,
The login nodes are part of the **[Merlin6](../merlin6/introduction.md)** HPC cluster,
and are used to compile and to submit jobs to the different ***Merlin Slurm clusters*** (`merlin5`,`merlin6`,`gmerlin6`,etc.).
Please refer to the **[Merlin6 Hardware Documentation](../merlin6/hardware-and-software-description.md)** for further information.
### Storage
The storage is part of the **[Merlin6](../merlin6/index.md)** HPC cluster,
The storage is part of the **[Merlin6](../merlin6/introduction.md)** HPC cluster,
and is mounted in all the ***Slurm clusters*** (`merlin5`,`merlin6`,`gmerlin6`,etc.).
Please refer to the **[Merlin6 Hardware Documentation](../merlin6/hardware-and-software-description.md)** for further information.
@@ -81,7 +81,7 @@ However, this is an old version of Infiniband which requires older drivers and s
## Software
In Merlin5, we try to keep software stack coherency with the main cluster [Merlin6](../merlin6/index.md).
In Merlin5, we try to keep software stack coherency with the main cluster [Merlin6](../merlin6/introduction.md).
Due to this, Merlin5 runs:

View File

@@ -1,41 +0,0 @@
# Contact
## Support
Basic contact information can be also found when logging into the Merlin Login Nodes through the *Message of the Day*.
Support can be asked through:
* [PSI Service Now](https://psi.service-now.com/psisp)
* E-Mail: <merlin-admins@lists.psi.ch>
### PSI Service Now
**[PSI Service Now](https://psi.service-now.com/psisp)**: is the official tool for opening incident requests.
* PSI HelpDesk will redirect the incident to the corresponding department, or
* you can always assign it directly by checking the box `I know which service is affected` and providing the service name `Local HPC Resources (e.g. Merlin) [CF]` (just type in `Local` and you should get the valid completions).
### Contact Merlin6 Administrators
**E-Mail <merlin-admins@lists.psi.ch>**
* This is the official way to contact Merlin6 Administrators for discussions which do not fit well into the incident category.
Do not hesitate to contact us for such cases.
---
## Get updated through the Merlin User list!
Is strongly recommended that users subscribe to the Merlin Users mailing list: **<merlin-users@lists.psi.ch>**
This mailing list is the official channel used by Merlin6 administrators to inform users about downtimes,
interventions or problems. Users can be subscribed in two ways:
* *(Preferred way)* Self-registration through **[Sympa](https://psilists.ethz.ch/sympa/info/merlin-users)**
* If you need to subscribe many people (e.g. your whole group) by sending a request to the admin list **<merlin-admins@lists.psi.ch>**
and providing a list of email addresses.
---
## The Merlin Cluster Team
The PSI Merlin clusters are managed by the **[High Performance Computing and Emerging technologies Group](https://www.psi.ch/de/lsm/hpce-group)**, which
is part of the [Science IT Infrastructure, and Services department (AWI)](https://www.psi.ch/en/awi) in PSI's [Center for Scientific Computing, Theory and Data (SCD)](https://www.psi.ch/en/csd).

View File

@@ -1,42 +0,0 @@
# FAQ
## How do I register for Merlin?
See [Requesting Merlin Access](../quick-start-guide/requesting-accounts.md).
## How do I get information about downtimes and updates?
See [Get updated through the Merlin User list!](contact.md#get-updated-through-the-merlin-user-list)
## How can I request access to a Merlin project directory?
Merlin projects are placed in the `/data/project` directory. Access to each project is controlled by Unix group membership.
If you require access to an existing project, please request group membership as described in [Requesting Unix Group Membership](../quick-start-guide/requesting-projects.md#requesting-unix-group-membership).
Your project leader or project colleagues will know what Unix group you should belong to. Otherwise, you can check what Unix group is allowed to access that project directory (simply run `ls -ltrhd` for the project directory).
## Can I install software myself?
Most software can be installed in user directories without any special permissions. We recommend using `/data/user/$USER/bin` for software since home directories are fairly small. For software that will be used by multiple groups/users you can also [request the admins](contact.md) install it as a [module](../how-to-use-merlin/using-modules.md).
How to install depends a bit on the software itself. There are three common installation procedures:
1. *binary distributions*. These are easy; just put them in a directory (eg `/data/user/$USER/bin`) and add that to your PATH.
2. *source compilation* using make/cmake/autoconfig/etc. Usually the compilation scripts accept a `--prefix=/data/user/$USER` directory for where to install it. Then they place files under `<prefix>/bin`, `<prefix>/lib`, etc. The exact syntax should be documented in the installation instructions.
3. *conda environment*. This is now becoming standard for python-based software, including lots of the AI tools. First follow the [initial setup instructions](../software-support/python.md#anaconda) to configure conda to use /data/user instead of your home directory. Then you can create environments like:
```bash
module load anaconda/2019.07
# if they provide environment.yml
conda env create -f environment.yml
# or to create manually
conda create --name myenv python==3.9 ...
conda activate myenv
```
## Something doesn't work
Check the list of [known problems](known-problems.md) to see if a solution is known.
If not, please [contact the admins](contact.md).

View File

@@ -1,40 +0,0 @@
# Troubleshooting
For troubleshooting, please contact us through the official channels. See [Contact](contact.md)
for more information.
## Known Problems
Before contacting us for support, please check the **[Merlin6 Support: Known Problems](known-problems.md)** page to see if there is an existing
workaround for your specific problem.
## Troubleshooting Slurm Jobs
If you want to report a problem or request for help when running jobs, please **always provide**
the following information:
1. Provide your batch script or, alternatively, the path to your batch script.
2. Add **always** the following commands to your batch script
```bash
echo "User information:"; who am i
echo "Running hostname:"; hostname
echo "Current location:"; pwd
echo "User environment:"; env
echo "List of PModules:"; module list
```
3. Whenever possible, provide the Slurm JobID.
Providing this information is **extremely important** in order to ease debugging, otherwise
only with the description of the issue or just the error message is completely insufficient
in most cases.
## Troubleshooting SSH
Use the ssh command with the "-vvv" option and copy and paste (no screenshots please)
the output to your request in Service-Now. Example
```bash
ssh -Y -vvv $username@merlin-l-01.psi.ch
```

View File

@@ -6,14 +6,14 @@ Most methods allow data to be either transmitted or received, so it may make sen
initiate the transfer from either merlin or the other system, depending on the network
visibility.
- Merlin login nodes are visible from the PSI network, so direct data transfer
* Merlin login nodes are visible from the PSI network, so direct data transfer
(rsync/WinSCP) is generally preferable. This can be initiated from either endpoint.
- Merlin login nodes can access the internet using a limited set of protocols
- SSH-based protocols using port 22 (rsync-over-ssh, sftp, WinSCP, etc)
- HTTP-based protocols using ports 80 or 445 (https, WebDav, etc)
- Protocols using other ports require admin configuration and may only work with
* Merlin login nodes can access the internet using a limited set of protocols:
* SSH-based protocols using port 22 (rsync-over-ssh, sftp, WinSCP, etc)
* HTTP-based protocols using ports 80 or 445 (https, WebDav, etc)
* Protocols using other ports require admin configuration and may only work with
specific hosts (ftp, rsync daemons, etc)
- Systems on the internet can access the [PSI Data Transfer](https://www.psi.ch/en/photon-science-data-services/data-transfer) service
* Systems on the internet can access the [PSI Data Transfer](https://www.psi.ch/en/photon-science-data-services/data-transfer) service
`datatransfer.psi.ch`, using ssh-based protocols and [Globus](https://www.globus.org/)
## Direct transfer via Merlin6 login nodes
@@ -27,14 +27,14 @@ for use from within the PSI network.
Rsync is the preferred method to transfer data from Linux/MacOS. It allows
transfers to be easily resumed if they get interrupted. The general syntax is:
```
```bash
rsync -avAHXS <src> <dst>
```
For example, to transfer files from your local computer to a merlin project
directory:
```
```bash
rsync -avAHXS ~/localdata user@merlin-l-01.psi.ch:/data/project/general/myproject/
```
@@ -60,25 +60,28 @@ The purpose of the software is to send a large file to someone, have that file a
## PSI Data Transfer
From August 2024, Merlin is connected to the **[PSI Data Transfer](https://www.psi.ch/en/photon-science-data-services/data-transfer)** service,
`datatransfer.psi.ch`. This is a central service managed by the **[Linux team](https://linux.psi.ch/index.html)**. However, any problems or questions related to it can be directly
[reported](../99-support/contact.md) to the Merlin administrators, which will forward the request if necessary.
From August 2024, Merlin is connected to the **[PSI Data
Transfer](https://www.psi.ch/en/photon-science-data-services/data-transfer)**
service, `datatransfer.psi.ch`. This is a central service managed by the
**[Linux team](https://linux.psi.ch/index.html)**. However, any problems or
questions related to it can be directly [reported](../../support/index.md) to the
Merlin administrators, which will forward the request if necessary.
The PSI Data Transfer servers supports the following protocols:
* Data Transfer - SSH (scp / rsync)
* Data Transfer - Globus
Notice that `datatransfer.psi.ch` does not allow SSH login, only `rsync`, `scp` and [Globus](https://www.globus.org/) access is allowed.
The following filesystems are mounted:
* `/merlin/export` which points to the `/export` directory in Merlin.
* `/merlin/data/experiment/mu3e` which points to the `/data/experiment/mu3e` directories in Merlin.
* Mu3e sub-directories are mounted in RW (read-write), except for `data` (read-only mounted)
* `/merlin/data/project/general` which points to the `/data/project/general` directories in Merlin.
* Owners of Merlin projects should request explicit access to it.
* Currently, only `CSCS` is available for transferring files between PizDaint/Alps and Merlin
* `/merlin/data/project/bio` which points to the `/data/project/bio` directories in Merlin.
* `/merlin/data/user` which points to the `/data/user` directories in Merlin.
@@ -95,34 +98,42 @@ Therefore, having the Microsoft Authenticator App is required as explained [here
User data directories are mounted in RW.
!!! warning "Secure Permissions"
Please, **ensure proper secured permissions** in your `/data/user` directory. By default, when directory is created, the system applies the most restrictive permissions. However, this does not prevent users for changing permissions if they wish. At this point, users become responsible of those changes.
Please, **ensure proper secured permissions** in your `/data/user`
directory. By default, when directory is created, the system applies the
most restrictive permissions. However, this does not prevent users for
changing permissions if they wish. At this point, users become responsible
of those changes.
#### /merlin/export
Transferring big amounts of data from outside PSI to Merlin is always possible through `/export`.
!!! tip "Export Directory Access"
The `/export` directory can be used by any Merlin user. This is configured in Read/Write mode. If you need access, please, contact the Merlin administrators.
The `/export` directory can be used by any Merlin user. This is configured
in Read/Write mode. If you need access, please, contact the Merlin
administrators.
!!! warning "Export Usage Policy"
The use **export** as an extension of the quota *is forbidden*.
Auto cleanup policies in the **export** area apply for files older than 28 days.
The use **export** as an extension of the quota *is forbidden*. Auto
cleanup policies in the **export** area apply for files older than 28 days.
##### Exporting data from Merlin
For exporting data from Merlin to outside PSI by using `/export`, one has to:
* From a Merlin login node, copy your data from any directory (i.e. `/data/project`, `/data/user`, `/scratch`) to
`/export`. Ensure to properly secure your directories and files with proper permissions.
* Once data is copied, from **`datatransfer.psi.ch`**, copy the data from `/merlin/export` to outside PSI
* From a Merlin login node, copy your data from any directory (i.e. `/data/project`, `/data/user`, `/scratch`) to
`/export`. Ensure to properly secure your directories and files with proper permissions.
* Once data is copied, from **`datatransfer.psi.ch`**, copy the data from `/merlin/export` to outside PSI
##### Importing data to Merlin
For importing data from outside PSI to Merlin by using `/export`, one has to:
* From **`datatransfer.psi.ch`**, copy the data from outside PSI to `/merlin/export`.
* From **`datatransfer.psi.ch`**, copy the data from outside PSI to `/merlin/export`.
Ensure to properly secure your directories and files with proper permissions.
* Once data is copied, from a Merlin login node, copy your data from `/export` to any directory (i.e. `/data/project`, `/data/user`, `/scratch`).
* Once data is copied, from a Merlin login node, copy your data from `/export` to any directory (i.e. `/data/project`, `/data/user`, `/scratch`).
#### Request access to your project directory
@@ -148,10 +159,10 @@ Merlin6 is fully accessible from within the PSI network. To connect from outside
Merlin provides a command for mounting remote file systems, called `merlin_rmount`. This
provides a helpful wrapper over the Gnome storage utilities, and provides support for a wide range of remote file formats, including
- SMB/CIFS (Windows shared folders)
- WebDav
- AFP
- FTP, SFTP
- [others](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/using_the_desktop_environment_in_rhel_8/managing-storage-volumes-in-gnome_using-the-desktop-environment-in-rhel-8#gvfs-back-ends_managing-storage-volumes-in-gnome)
* SMB/CIFS (Windows shared folders)
* WebDav
* AFP
* FTP, SFTP
* [others](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/using_the_desktop_environment_in_rhel_8/managing-storage-volumes-in-gnome_using-the-desktop-environment-in-rhel-8#gvfs-back-ends_managing-storage-volumes-in-gnome)
[More instruction on using `merlin_rmount`](../software-support/merlin-rmount.md)

View File

@@ -1,21 +0,0 @@
# Merlin 6 Cluster
## Slurm clusters
* The new Slurm CPU cluster is called **`merlin6`**.
* The new Slurm GPU cluster is called [**`gmerlin6`**](gmerlin6/cluster-introduction.md)
* The old Slurm *merlin* cluster is still active and best effort support is provided.
The cluster, was renamed as [**merlin5**](../merlin5/cluster-introduction.md).
From July 2019, **`merlin6`** becomes the **default Slurm cluster** and any job submitted from the login node will be submitted to that cluster if not.
* Users can keep submitting to the old *`merlin5`* computing nodes by using the option ``--cluster=merlin5``.
* Users submitting to the **`gmerlin6`** GPU cluster need to specify the option ``--cluster=gmerlin6``.
### Slurm 'merlin6'
**CPU nodes** are configured in a **Slurm** cluster, called **`merlin6`**, and
this is the ***default Slurm cluster***. Hence, by default, if no Slurm cluster is
specified (with the `--cluster` option), this will be the cluster to which the jobs
will be sent.

View File

@@ -0,0 +1,25 @@
# Introduction
!!! failure "Deprecated"
Merlin6 is no longer accessible for new users! Please have a look at
[Merlin 7](../merlin7/01-Quick-Start-Guide/introduction.md) instead.
## Slurm clusters
Comprised the **`merlin6`** CPU cluster and the
[**`gmerlin6`**](../gmerlin6/cluster-introduction.md) GPU cluster. A legacy
cluster (formally called [**`merlin5`**](../merlin5/cluster-introduction.md) is
kept active with best effort support.
From July 2019, **`merlin6`** becomes the **default Slurm cluster** and any job
submitted from the login node will be submitted to that cluster if not.
* Users can keep submitting to the old *`merlin5`* computing nodes by using the option ``--cluster=merlin5``.
* Users submitting to the **`gmerlin6`** GPU cluster need to specify the option ``--cluster=gmerlin6``.
### Slurm 'merlin6'
**CPU nodes** are configured in a **Slurm** cluster, called **`merlin6`**, and
this is the ***default Slurm cluster***. Hence, by default, if no Slurm cluster
is specified (with the `--cluster` option), this will be the cluster to which
the jobs will be sent.

View File

@@ -34,7 +34,7 @@ For further information about how to use this cluster, please visit: [**Merlin6
The **Merlin6 GPU cluster** (**`gmerlin6`**) is visible from the login nodes. However, to submit jobs to this cluster, one needs to specify the option `--cluster=gmerlin6` when submitting a job or allocation.
For further information about how to use this cluster, please visit: [**Merlin6 GPU Slurm Cluster documentation**](../gmerlin6/slurm-configuration.md).
For further information about how to use this cluster, please visit: [**Merlin6 GPU Slurm Cluster documentation**](../../gmerlin6/slurm-configuration.md).
### Merlin5 CPU cluster access

View File

@@ -43,7 +43,7 @@ These computational resources are split into **two** different **[Slurm](https:/
* The Merlin6 CPU nodes are in a dedicated **[Slurm](https://slurm.schedmd.com/overview.html)** cluster called [**`merlin6`**](../slurm-configuration.md).
* This is the **default Slurm cluster** configured in the login nodes: any job submitted without the option `--cluster` will be submited to this cluster.
* The Merlin6 GPU resources are in a dedicated **[Slurm](https://slurm.schedmd.com/overview.html)** cluster called [**`gmerlin6`**](../gmerlin6/slurm-configuration.md).
* The Merlin6 GPU resources are in a dedicated **[Slurm](https://slurm.schedmd.com/overview.html)** cluster called [**`gmerlin6`**](../../gmerlin6/slurm-configuration.md).
* Users submitting to the **`gmerlin6`** GPU cluster need to specify the option ``--cluster=gmerlin6``.
### Merlin5

View File

@@ -52,11 +52,7 @@ The following settings are the minimum required for running a job in the Merlin
#SBATCH --clusters=<cluster_name> # Possible values: merlin5, merlin6, gmerlin6
```
Refer to the documentation of each cluster
[**`merlin6`**](../slurm-configuration.md),
[**`gmerlin6`**](../gmerlin6/slurm-configuration.md),
[**`merlin5`**](../../merlin5/slurm-configuration.md) for further
information.
Refer to the documentation of each cluster ([**`merlin6`**](../slurm-configuration.md),[**`gmerlin6`**](../../gmerlin6/slurm-configuration.md),[**`merlin5`**](../../merlin5/slurm-configuration.md) for further information.
* **Partitions:** except when using the *default* partition for each cluster, one needs to specify the partition:
@@ -64,11 +60,7 @@ The following settings are the minimum required for running a job in the Merlin
#SBATCH --partition=<partition_name> # Check each cluster documentation for possible values
```
Refer to the documentation of each cluster
[**`merlin6`**](../slurm-configuration.md),
[**`gmerlin6`**](../gmerlin6/slurm-configuration.md),
[**`merlin5`**](../../merlin5/slurm-configuration.md) for further
information.
Refer to the documentation of each cluster ([**`merlin6`**](../slurm-configuration.md),[**`gmerlin6`**](../../gmerlin6/slurm-configuration.md),[**`merlin5`**](../../merlin5/slurm-configuration.md) for further information.
* **[Optional] Disabling shared nodes**: by default, nodes are not exclusive. Hence, multiple users can run in the same node. One can request exclusive node usage with the following option:
@@ -82,11 +74,7 @@ The following settings are the minimum required for running a job in the Merlin
#SBATCH --time=<D-HH:MM:SS> # Can not exceed the partition `MaxTime`
```
Refer to the documentation of each cluster
[**`merlin6`**](../slurm-configuration.md),
[**`gmerlin6`**](../gmerlin6/slurm-configuration.md),
[**`merlin5`**](../../merlin5/slurm-configuration.md) for further information
about partition `MaxTime` values.
Refer to the documentation of each cluster ([**`merlin6`**](../slurm-configuration.md),[**`gmerlin6`**](../../gmerlin6/slurm-configuration.md),[**`merlin5`**](../../merlin5/slurm-configuration.md) for further information about partition `MaxTime` values.
* **Output and error files**: by default, Slurm script will generate standard output (`slurm-%j.out`, where `%j` is the job_id) and error (`slurm-%j.err`, where `%j` is the job_id) files in the directory from where the job was submitted. Users can change default name with the following options:
@@ -104,14 +92,8 @@ The following settings are the minimum required for running a job in the Merlin
#SBATCH --hint=nomultithread # Don't use extra threads with in-core multi-threading.
```
Refer to the documentation of each cluster
([**`merlin6`**](../slurm-configuration.md),
[**`gmerlin6`**](../gmerlin6/slurm-configuration.md),
[**`merlin5`**](../../merlin5/slurm-configuration.md) for further information
about node configuration and Hyper-Threading. Consider that, sometimes,
depending on your job requirements, you might need also to setup how many
`--ntasks-per-core` or `--cpus-per-task` (even other options) in addition to
the `--hint` command. Please, contact us in case of doubts.
Refer to the documentation of each cluster ([**`merlin6`**](../slurm-configuration.md),[**`gmerlin6`**](../../gmerlin6/slurm-configuration.md),[**`merlin5`**](../../merlin5/slurm-configuration.md) for further information about node configuration and Hyper-Threading.
Consider that, sometimes, depending on your job requirements, you might need also to setup how many `--ntasks-per-core` or `--cpus-per-task` (even other options) in addition to the `--hint` command. Please, contact us in case of doubts.
!!! tip
In general, for the cluster `merlin6` <span

View File

@@ -1,10 +1,15 @@
# Introduction
![Merlin](../../images/merlin_cave.png){ width="400px" }
/// caption
_Within his lair, the wizard ever strives for the perfection of his art._
///
## About Merlin7
The Merlin7 cluster is moving toward **production** state since August 2024, this is expected latest by Q4 2025. Since January 2025 the system has been generally available,
but due to some remaining issues with the platform, the schedule of the migration of users and communities has been delayed. You will be notified well in advance
regarding the migration of data.
PSI's Merlin7 cluster is run on top of an IaaS (Infrastructure as a Service) *vCluster* on the [CSCS Alps infrastructure](https://www.cscs.ch/computers/alps). It is fully integrated with the PSI service landscape was designed to provide the same end user experience as its PSI-local predecessor clusters.
Merlin7 has been in **production** since beginning of June 2025.
All PSI users can request access to Merlin7, please go to the [Requesting Merlin Accounts](requesting-accounts.md) page and complete the steps given there.
@@ -26,8 +31,7 @@ The Merlin7 cluster contains the following node specification:
### Network
The Merlin7 cluster builds on top of HPE/Cray technologies, including a high-performance network fabric called Slingshot. This network fabric is able
to provide up to 200 Gbit/s throughput between nodes. Further information on Slignshot can be found on at [HPE](https://www.hpe.com/psnow/doc/PSN1012904596HREN) and
at <https://www.glennklockwood.com/garden/slingshot>.
to provide up to 200 Gbit/s throughput between nodes. Further information on Slignshot can be found on at [HPE](https://www.hpe.com/psnow/doc/PSN1012904596HREN).
Through software interfaces like [libFabric](https://ofiwg.github.io/libfabric/) (which available on Merlin7), application can leverage the network seamlessly.

View File

@@ -93,7 +93,10 @@ be tracked. In theory any (or all available projects) can be tracked, but due to
UNIX and Lustre permissions, accessing quotas information for a project you're not
a member of **is not possible**.
If you are added/removed from a project, you can update this config file by
calling `merlin_quotas genconf --force` (notice the `--force`, which will overwrite
your existing config file) or by editing the file by hand (*not recommended*).
!!! tip "Updating the project config"
If you are added/removed from a project, you can update this config file by
calling `merlin_quotas genconf --all-projects --force`. The
`--all-projects` will fully check your possible membership to all projects,
and the `--force` will overwrite your existing config file. You can also
edit the file by hand (*not recommended*).

View File

@@ -134,7 +134,7 @@ The service is designed to **send large files for temporary availability**, not
From August 2024, Merlin is connected to the **[PSI Data Transfer](https://www.psi.ch/en/photon-science-data-services/data-transfer)** service,
`datatransfer.psi.ch`. This is a central service managed by the **[Linux team](https://linux.psi.ch/index.html)**. However, any problems or questions related to it can be directly
[reported](../99-support/contact.md) to the Merlin administrators, which will forward the request if necessary.
[reported](../../support/index.md) to the Merlin administrators, which will forward the request if necessary.
The PSI Data Transfer servers supports the following protocols:

View File

@@ -11,6 +11,7 @@ It is primarily designed for biochemical molecules like proteins, lipids and nuc
GROMACS is a joint effort, with contributions from developers around the world: users agree to acknowledge use of GROMACS in any reports or publications of results obtained with the Software (see GROMACS Homepage for details).
## How to run on Merlin7
## 2025.2
### CPU nodes
```bash
module use Spack unstable
@@ -26,6 +27,22 @@ module load gcc/12.3 openmpi/5.0.7-3vzj-A100-gpu gromacs/2025.2-vbj4-A100-gpu-om
module use Spack unstable
module load gcc/12.3 openmpi/5.0.7-blxc-GH200-gpu gromacs/2025.2-cjnq-GH200-gpu-omp
```
## 2025.3
### CPU nodes
```bash
module use Spack unstable
module load gcc/12.3 openmpi/5.0.9-n4yf-A100-gpu gromacs/2025.3-6ken-omp
```
### A100 nodes
```bash
module use Spack unstable
module load gcc/12.3 openmpi/5.0.9-xqhy-A100-gpu gromacs/2025.3-ohlj-A100-gpu-omp
```
### GH nodes
```bash
module use Spack unstable
module load gcc/12.3 openmpi/5.0.9-inxi-GH200-gpu gromacs/2025.3-yqlu-GH200-gpu-omp
```
### SBATCH CPU, 4 MPI ranks, 16 OMP threads
```bash

View File

@@ -13,8 +13,7 @@ GNU GPLv3
[![Pipeline](https://gitea.psi.ch/HPCE/spack-psi/actions/workflows/ippl_gpu_merlin7.yml/badge.svg?branch=main)](https://gitea.psi.ch/HPCE/spack-psi)
```bash
module use Spack unstable
module load gcc/13.2.0 openmpi/4.1.6-57rc-A100-gpu
module load boost/1.82.0-e7gp fftw/3.3.10 gnutls/3.8.3 googletest/1.14.0 gsl/2.8 h5hut/2.0.0rc7 openblas/0.3.26-omp cmake/3.31.6-oe7u
module load gcc/13.2.0 openmpi/5.0.7-dnpr-A100-gpu boost/1.82.0-lgrt fftw/3.3.10.6-zv2b-omp googletest/1.14.0-msmu h5hut/2.0.0rc7-zy7s openblas/0.3.29-zkwb cmake/3.31.6-ufy7
cd <path to IPPL source directory>
mkdir build_gpu

View File

@@ -33,7 +33,7 @@ module purge
module use Spack unstable
module load gcc/13.2.0 openmpi/5.0.7-dnpr-A100-gpu
module load boost/1.82.0-lgrt fftw/3.3.10.6-zv2b-omp gnutls/3.8.9-mcdr googletest/1.14.0-msmu gsl/2.7.1-hxwy h5hut/2.0.0rc7-zy7s openblas/0.3.29-zkwb cmake/3.31.6-oe7u
git clone https://gitlab.psi.ch/OPAL/opal-x/src.git opal-x
git clone https://github.com/OPALX-project/OPALX.git opal-x
cd opal-x
./gen_OPALrevision
@@ -56,7 +56,7 @@ module use Spack unstable
module load gcc/13.2.0 openmpi/5.0.7-z3y6-GH200-gpu
module load boost/1.82.0-znbt fftw/3.3.10-jctz gnutls/3.8.9-rtrg googletest/1.15.2-odox gsl/2.7.1-j2dk h5hut/2.0.0rc7-k63k openblas/0.3.29-d3m2 cmake/3.31.4-u2nm
git clone https://gitlab.psi.ch/OPAL/opal-x/src.git opal-x
git clone https://github.com/OPALX-project/OPALX.git opal-x
cd opal-x
./gen_OPALrevision
mkdir build_gh

View File

@@ -11,27 +11,30 @@ If you miss any package/versions or a software with a specific missing feature,
### Module Release Stages
To ensure proper software lifecycle management, PModules uses three release stages: unstable, stable, and deprecated.
To ensure proper software lifecycle management, PModules uses three release stages: unstable, stable, and deprecated.
1. **Unstable Release Stage:**
1. **Unstable Release Stage:**
* Contains experimental or under-development software versions.
* Not visible to users by default. Use explicitly:
```bash
module use unstable
```
* Software is promoted to **stable** after validation.
2. **Stable Release Stage:**
2. **Stable Release Stage:**
* Default stage, containing fully tested and supported software versions.
* Recommended for all production workloads.
3. **Deprecated Release Stage:**
3. **Deprecated Release Stage:**
* Contains software versions that are outdated or discontinued.
* These versions are hidden by default but can be explicitly accessed:
```bash
module use deprecated
```
* Deprecated software can still be loaded directly without additional configuration to ensure user transparency.
## PModules commands
@@ -113,7 +116,7 @@ module load gcc/14.2.0
module load openmpi/5.0.5
```
#### module purge
### module purge
This command is an alternative to `module unload`, which can be used to unload **all** loaded module files.
@@ -128,18 +131,22 @@ The PModules system is designed to accommodate the diverse software needs of Mer
### Requesting Missing Software
If a specific software package is not available in PModules and there is interest from multiple users:
* **[Contact Support](../99-support/contact.md):** Let us know about the software, and we will assess its feasibility for deployment.
* **[Contact Support](../../support/index.md):** Let us know about the software, and we will assess its feasibility for deployment.
* **Deployment Timeline:** Adding new software to PModules typically takes a few days, depending on complexity and compatibility.
* **User Involvement:** If you are interested in maintaining the software package, please inform us. Collaborative maintenance helps
ensure timely updates and support.
ensure timely updates and support.
### Requesting a Missing Version
If the currently available versions of a package do not meet your requirements:
* **New Versions:** Requests for newer versions are generally supported, especially if there is interest from multiple users.
* **Intermediate Versions:** Installation of intermediate versions (e.g., versions between the current stable and deprecated versions)
can be considered if there is a strong justification, such as specific features or compatibility requirements.
### General Notes
* New packages or versions are prioritized based on their relevance and usage.
* For any request, providing detailed information about the required software or version (e.g., name, version, features) will help
expedite the process.

View File

@@ -13,6 +13,20 @@ Quantum ESPRESSO is an integrated suite of Open-Source computer codes for electr
Quantum ESPRESSO is an open initiative, in collaboration with many groups world-wide, coordinated by the Quantum ESPRESSO Foundation. Scientific work done using Quantum ESPRESSO should contain an explicit acknowledgment and reference to the main papers (see Quantum Espresso Homepage for the details).
## How to run on Merlin7
### 7.5
### CPU nodes
```bash
module purge
module use Spack unstable
module load gcc/12.3 openmpi/5.0.9-xqhy-A100-gpu quantum-espresso/7.5-zfwh-omp
```
### GH nodes
```bash
module purge
module use Spack unstable
module load nvhpc/25.7 openmpi/4.1.8-l3jj-GH200-gpu quantum-espresso/7.5-2ysd-gpu-omp
```
### 7.4.1
### A100 nodes
```bash
module purge

View File

@@ -1,42 +0,0 @@
# Contact
## Support
Support can be asked through:
* [PSI Service Now](https://psi.service-now.com/psisp)
* E-Mail: <merlin-admins@lists.psi.ch>
Basic contact information is also displayed on every shell login to the system using the *Message of the Day* mechanism.
### PSI Service Now
**[PSI Service Now](https://psi.service-now.com/psisp)**: is the official tool for opening incident requests.
* PSI HelpDesk will redirect the incident to the corresponding department, or
* you can always assign it directly by checking the box `I know which service is affected` and providing the service name `Local HPC Resources (e.g. Merlin) [CF]` (just type in `Local` and you should get the valid completions).
### Contact Merlin Administrators
**E-Mail <merlin-admins@lists.psi.ch>**
* This is the official way to contact Merlin Administrators for discussions which do not fit well into the incident category.
Do not hesitate to contact us for such cases.
---
## Get updated through the Merlin User list!
Is strongly recommended that users subscribe to the Merlin Users mailing list: **<merlin-users@lists.psi.ch>**
This mailing list is the official channel used by Merlin administrators to inform users about downtimes,
interventions or problems. Users can be subscribed in two ways:
* *(Preferred way)* Self-registration through **[Sympa](https://psilists.ethz.ch/sympa/info/merlin-users)**
* If you need to subscribe many people (e.g. your whole group) by sending a request to the admin list **<merlin-admins@lists.psi.ch>**
and providing a list of email addresses.
---
## The Merlin Cluster Team
The PSI Merlin clusters are managed by the **[High Performance Computing and Emerging technologies Group](https://www.psi.ch/de/lsm/hpce-group)**, which
is part of the [Science IT Infrastructure, and Services department (AWI)](https://www.psi.ch/en/awi) in PSI's [Center for Scientific Computing, Theory and Data (SCD)](https://www.psi.ch/en/csd).

2
docs/news/index.md Normal file
View File

@@ -0,0 +1,2 @@
# News

View File

@@ -1,9 +1,12 @@
---
title: "Merlin 6 documentation available"
date: "12 June 2019"
template: "news.html"
date:
created: 2019-06-12
tags:
- getting_started
---
Merlin 6 docs are now available at [Merlin6 docs](../../merlin6/index.md)!
# Merlin 6 documentation available
Merlin 6 docs are now available at [Merlin6 docs](../../merlin6/introduction.md)!
More complete documentation will be coming shortly.

View File

@@ -1,9 +1,12 @@
---
title: "Merlin7 in preproduction"
date: "7 August 2024"
template: "news.html"
date:
created: 2024-08-07
tags:
- getting_started
---
# Merlin7 in preproduction
The Merlin7 cluster is officially in preproduction. This phase will be tested by a few users
and slowly we will contact other users to be part of it. Keep in mind that access is restricted.

View File

@@ -0,0 +1,27 @@
---
date:
created: 2026-01-12
tags:
- getting_started
---
# New User Documentation Site
Starting in 2026, we are changing the design of the user documentation website.
Previously we had used the theme [Documentation for
Jekyll](https://github.com/tomjoht/documentation-theme-jekyll) together with
the [Jykell SSG](https://jekyllrb.com/), but have now switch to the more modern
[Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) theme and
SSG engine. This comes with a few improvements:
* searching is more complete and provides better results
* theme related improvements (day-night coloring, page layout, content formatting)
* edits for pages can be submitted via the *Edit* button (taking you to the
Gitea editor and letting you submit a pull request)
With the latter new feature, we encourage our users to point out any issues they
find with the documentation. Contributation are very welcome and will help in
ensuring that the documentation is kept up-to-date.
Notice also that we now have a dedicated [Support](../../support/index.md) page,
making it easier to find and use our different contact options.

65
docs/support/faq.md Normal file
View File

@@ -0,0 +1,65 @@
---
title: "FAQ"
---
# Frequently Asked Questions
## How do I register for Merlin?
See [Requesting Merlin Access](../merlin7/01-Quick-Start-Guide/requesting-accounts.md).
## How do I get information about downtimes and updates?
See [Get updated through the Merlin User list!](index.md#merlin-user-mailing-list)
## How can I request access to a Merlin project directory?
Merlin projects are placed in the `/data/project` directory. Access to each
project is controlled by Unix group membership. If you require access to an
existing project, please request group membership as described in
[Requesting Unix Group Membership](../merlin7/01-Quick-Start-Guide/requesting-projects.md#requesting-unix-group-membership).
Your project leader or project colleagues will know what Unix group you should
belong to. Otherwise, you can check what Unix group is allowed to access that
project directory (simply run `ls -ltrhd` for the project directory).
## Can I install software myself?
Most software can be installed in user directories without any special
permissions. We recommend using `/data/user/$USER/bin` for software since home
directories are fairly small. For software that will be used by multiple
groups/users you can also [request the admins](index.md) install it as a
[module](../merlin7/05-Software-Support/pmodules.md).
How to install depends a bit on the software itself. There are three common
installation procedures:
* *binary distributions*. These are easy; just put them in a directory (eg
`/data/user/$USER/bin`) and add that to your PATH.
* *source compilation* using make/cmake/autoconfig/etc. Usually the
compilation scripts accept a `--prefix=/data/user/$USER` directory for where
to install it. Then they place files under `<prefix>/bin`, `<prefix>/lib`,
etc. The exact syntax should be documented in the installation instructions.
!!! note inline end
The following is based on `merlin6`, but should still be valid for `merlin7`.
* *conda environment*. This is now becoming standard for python-based
software, including lots of the AI tools. First follow the [initial setup
instructions](../merlin6/software-support/python.md#anaconda) to configure conda to
use /data/user instead of your home directory. Then you can create
environments like:
```bash
module load anaconda/2019.07
# if they provide environment.yml
conda env create -f environment.yml
# or to create manually
conda create --name myenv python==3.9 ...
conda activate myenv
```
## Something doesn't work
Check the list of [known problems](known-problems.md) to see if a solution is known.
If not, please [contact the admins](index.md).

56
docs/support/index.md Normal file
View File

@@ -0,0 +1,56 @@
# Getting Support
!!! tip
It is strongly recommended that users subscribe to the [user mailing
list](#merlin-user-mailing-list), that way you will receive the newest
announcements concerning the status of the clusters, information regarding
maintenance actions, and other tasks that might affect your work.
There are several channels you can use to get support:
* the **preferred** choice is to submit a ticket with [PSI Service Now](https://psi.service-now.com/psisp), alternatively
* you can also us our [user mailing list](#merlin-user-mailing-list), or
* you can email the Admins directly <merlin-admins@lists.psi.ch>
??? info
Basic contact information is also displayed on every shell login to the
system using the *Message of the Day* mechanism.
## PSI Service Now
[PSI Service Now](https://psi.service-now.com/psisp) is the official tool for
opening tickets and requests.
* PSI HelpDesk will redirect the incident to the corresponding department, or
* you can always assign it directly by checking the box `I know which service
is affected` and providing the service name `Local HPC Resources (e.g.
Merlin) [CF]` (just type in `Local` and you should get the valid
completions).
## Merlin User mailing list
This mailing list is the official channel used by Merlin administrators to inform users about downtimes,
interventions or problems. Users can be subscribed in two ways:
* *Preferred way*: Self-registration through [Sympa](https://psilists.ethz.ch/sympa/info/merlin-users)
* If you need to subscribe many people (e.g. your whole group) by sending a
request to the admin list <merlin-admins@lists.psi.ch>
and providing a list of email addresses.
## Email the Admins
This is the official way to contact Merlin Administrators for discussions which
do not fit well into the incident category. Do not hesitate to contact us for
such cases.
**E-Mail**: <merlin-admins@lists.psi.ch>
---
## Who are we?
The PSI Merlin clusters are managed by the **[High Performance Computing and
Emerging technologies Group](https://www.psi.ch/de/lsm/hpce-group)**, which is
part of the [Science IT Infrastructure, and Services department
(AWI)](https://www.psi.ch/en/awi) in PSI's [Center for Scientific Computing,
Theory and Data (SCD)](https://www.psi.ch/en/csd).

View File

@@ -25,6 +25,7 @@ This means you will implicitly have to specify `-c\--cpus-per-task` also on your
Therefore, unless this is implicitly specified, `srun` will use only one Core per task (resulting in 2 CPUs per task when multithreading is enabled)
An example for setting up `srun` with `-c\--cpus-per-task`:
```bash
(base) ❄ [caubet_m@merlin-l-001:/data/user/caubet_m]# cat mysbatch_method1
#!/bin/bash
@@ -50,6 +51,7 @@ In this example, by setting -c/--cpus-per-task in srun
```
An example to accomplish the same thing with the `SRUN_CPUS_PER_TASK` environment variable:
```bash
(base) ❄ [caubet_m@merlin-l-001:/data/user/caubet_m]# cat mysbatch_method2
#!/bin/bash
@@ -90,10 +92,11 @@ getent passwd $USER | awk -F: '{print $NF}'
```
If SHELL does not correspond to the one you need to use, you should request a central change for it.
This is because Merlin accounts are central PSI accounts. Hence, **change must be requested via [PSI Service Now](contact.md#psi-service-now)**.
This is because Merlin accounts are central PSI accounts. Hence, **change must be requested** via [PSI Service Now](index.md#psi-service-now).
Alternatively, if you work on other PSI Linux systems but for Merlin you need a different SHELL type, a temporary change can be performed during login startup.
You can update one of the following files:
* `~/.login`
* `~/.profile`
* Any `rc` or `profile` file in your home directory (i.e. `.cshrc`, `.bashrc`, `.bash_profile`, etc.)
@@ -130,9 +133,9 @@ module load paraview
vglrun paraview
```
Officially, the supported method for running `vglrun` is by using the [NoMachine remote desktop](../how-to-use-merlin/nomachine.md).
Officially, the supported method for running `vglrun` is by using the [NoMachine remote desktop](../merlin7/02-How-To-Use-Merlin/nomachine.md).
Running `vglrun` it's also possible using SSH with X11 Forwarding. However, it's very slow and it's only recommended when running
in Slurm (from [NoMachine](../how-to-use-merlin/nomachine.md)). Please, avoid running `vglrun` over SSH from a desktop or laptop.
in Slurm (from [NoMachine](../merlin7/02-How-To-Use-Merlin/nomachine.md)). Please, avoid running `vglrun` over SSH from a desktop or laptop.
## Software
@@ -167,4 +170,3 @@ fi
```
It can also be fixed temporarily in an existing terminal by running `. /etc/bashrc` manually.

View File

@@ -0,0 +1,42 @@
# Troubleshooting
For troubleshooting, please contact us through the official channels. See
[here](index.md) for more information.
## Known Problems
Before contacting us for support, please check the [Known
Problems](known-problems.md) page to see if there is an existing workaround for
your specific problem.
## Troubleshooting Slurm Jobs
If you want to report a problem or request for help when running jobs, please
**always provide** the following information:
1. Provide your batch script or, alternatively, the path to your batch script.
2. Add **always** the following commands to your batch script
```bash
echo "User information:"; who am i
echo "Running hostname:"; hostname
echo "Current location:"; pwd
echo "User environment:"; env
echo "List of PModules:"; module list
```
3. Whenever possible, provide the Slurm JobID.
Providing this information is **extremely important** in order to ease
debugging, otherwise only with the description of the issue or just the error
message is completely insufficient in most cases.
## Troubleshooting SSH
Use the ssh command with the "-vvv" option and copy and paste the text
(**please don't send us screenshots**) the output to your request in
Service-Now. Example:
```bash
ssh -Y -vvv $username@<hostname>
```

View File

@@ -3,8 +3,10 @@ site_name: HPCE User Documentation
site_url: https://hpce.pages.psi.ch
# Repository
repo_name: hpce/gitea-pages
repo_name: "User Documentation Repository"
repo_url: https://gitea.psi.ch/hpce/gitea-pages
# TODO unsure if this works, branch needs to be changed from `mkdocs` to `main`
edit_uri: _edit/master/docs/
# Copyright
copyright: Copyright &copy; 2025 HPC and Emerging Technologies Group/CSD @ Paul Scherrer Institut
@@ -14,10 +16,18 @@ theme:
name: material
favicon: images/favicon.ico
logo: images/hpce_logo.png
custom_dir: overrides
features:
- navigation.instant
- navigation.tabs
- navigation.tabs.sticky
- navigation.sections
- navigation.indexes
- toc.follow
- content.action.edit
# doesn't work with Gitea as the URL is based upon `edit_uri` which has an
# explcit '_' underline prefixed for edit but not raw?!
#- content.action.view
palette:
- media: "(prefers-color-scheme)"
toggle:
@@ -115,9 +125,8 @@ nav:
- merlin7/05-Software-Support/cray-module.env.md
- Support:
- merlin7/99-support/migration-from-merlin6.md
- merlin7/99-support/contact.md
- Merlin 6:
- merlin6/index.md
- merlin6/introduction.md
- merlin6/hardware-and-software-description.md
- merlin6/slurm-configuration.md
- Quick Start Guide:
@@ -176,11 +185,7 @@ nav:
- merlin6/98-announcements/downtimes.md
- merlin6/98-announcements/past-downtimes.md
- Support:
- merlin6/99-support/contact.md
- merlin6/99-support/faq.md
- merlin6/99-support/known-problems.md
- merlin6/99-support/migration-from-merlin5.md
- merlin6/99-support/troubleshooting.md
- MeG:
- meg/index.md
- meg/contact.md
@@ -188,3 +193,8 @@ nav:
- PSI@CSCS:
- cscs-userlab/index.md
- cscs-userlab/transfer-data.md
- Support:
- support/index.md
- support/faq.md
- support/known-problems.md
- support/troubleshooting.md

18
overrides/frontpage.html Normal file
View File

@@ -0,0 +1,18 @@
{% extends "base.html" %}
{% block content %}
{{ super() }}
<!-- latest news requires that we have the blog plugin configured! -->
{% if pages %}
<h2 id="latest-news">Latest News</h2>
<ul class="frontpage_style">
{# we only capture the two newest entries #}
{% for file in (pages | selectattr('page.meta.date') | sort(attribute='page.meta.date.created', reverse=true))[:2] %}
<li><a href="{{ file.dest_uri }}">{{ file.page.title }}</a> &ndash; <time datetime="{{ file.page.meta.date.created }}"> {{- file.page.meta.date.created | date -}}</time></li>
{% endfor %}
</ul>
{# TODO we should try using the pages object to always get the correct relative uri #}
<p>&rarr; Check out <a href="/news/index.html">News</a> for more...</p>
{% endif %}
{% endblock %}

View File

@@ -1,24 +0,0 @@
{% extends "base.html" %}
{# this document is based on the offical template as given in
https://github.com/zensical/ui/blob/master/src/base.html. #}
{% block container %}
<div class="md-content" data-md-component="content">
<!-- Navigation path (breadcrumbs) -->
{% if "navigation.path" in features %}
{% include "partials/path.html" %}
{% endif %}
<!-- Page content -->
<article class="md-content__inner md-typeset">
{% if page.meta and page.meta.date %}
<div class="md-post__meta md-meta">{{ page.meta.date }}</div>
{% endif %}
{% block content %}
{% include "partials/content.html" %}
{% endblock %}
</article>
</div>
{% endblock %}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -1,290 +0,0 @@
[project]
site_name = "HPCE User Documentation"
site_description = "Documentation of the computing resources managed by the HPCE group"
site_author = "HPCE Group"
site_url = "https://hpce.pages.psi.ch"
copyright = """
Copyright &copy; 2025 HPC and Emerging Technologies Group/CSD @ Paul Scherrer Institut
"""
# Repository
repo_url = "https://gitea.psi.ch/hpce/gitea-pages"
repo_name = "userdocs"
# TODO unsure if this works, branch needs to be changed from `mkdocs` to `main`
edit_uri = "_edit/mkdocs/docs/"
# Zensical supports both implicit navigation and explicitly defined navigation.
# If you decide not to define a navigation here then Zensical will simply
# derive the navigation structure from the directory structure of your
# "docs_dir". The definition below demonstrates how a navigation structure
# can be defined using TOML syntax.
#
# Read more: https://zensical.org/docs/setup/navigation/
# nav = [
# { "Get started" = "index.md" },
# { "Markdown in 5min" = "markdown.md" },
# ]
# With the "extra_css" option you can add your own CSS styling to customize
# your Zensical project according to your needs. You can add any number of
# CSS files.
#
# The path provided should be relative to the "docs_dir".
#
# Read more: https://zensical.org/docs/customization/#additional-css
#
#extra_css = ["stylesheets/extra.css"]
# With the `extra_javascript` option you can add your own JavaScript to your
# project to customize the behavior according to your needs.
#
# The path provided should be relative to the "docs_dir".
#
# Read more: https://zensical.org/docs/customization/#additional-javascript
#extra_javascript = ["javascripts/extra.js"]
# ----------------------------------------------------------------------------
# Section for configuring theme options
# ----------------------------------------------------------------------------
[project.theme]
variant = "modern"
# Zensical allows you to override specific blocks, partials, or whole
# templates as well as to define your own templates. To do this, uncomment
# the custom_dir setting below and set it to a directory in which you
# keep your template overrides.
#
# Read more:
# - https://zensical.org/docs/customization/#extending-the-theme
#
custom_dir = "overrides"
favicon = "images/favicon.ico"
logo = "images/hpce_logo.png"
# Zensical supports more than 60 different languages. This means that the
# labels and tooltips that Zensical's templates produce are translated.
# The "language" option allows you to set the language used. This language
# is also indicated in the HTML head element to help with accessibility
# and guide search engines and translation tools.
#
# The default language is "en" (English). It is possible to create
# sites with multiple languages and configure a language selector. See
# the documentation for details.
#
# Read more:
# - https://zensical.org/docs/setup/language/
#
language = "en"
# Zensical provides a number of feature toggles that change the behavior
# of the documentation site.
features = [
# Zensical includes an announcement bar. This feature allows users to
# dismiss it then they have read the announcement.
# https://zensical.org/docs/setup/header/#announcement-bar
"announce.dismiss",
# If you have a repository configured and turn on this feature, Zensical
# will generate an edit button for the page. This works for common
# repository hosting services.
# https://zensical.org/docs/setup/repository/#code-actions
"content.action.edit",
# If you have a repository configured and turn on this feature, Zensical
# will generate a button that allows the user to view the Markdown
# code for the current page.
# https://zensical.org/docs/setup/repository/#code-actions
"content.action.view",
# Code annotations allow you to add an icon with a tooltip to your
# code blocks to provide explanations at crucial points.
# https://zensical.org/docs/authoring/code-blocks/#code-annotations
"content.code.annotate",
# This feature turns on a button in code blocks that allow users to
# copy the content to their clipboard without first selecting it.
# https://zensical.org/docs/authoring/code-blocks/#code-copy-button
"content.code.copy",
# Code blocks can include a button to allow for the selection of line
# ranges by the user.
# https://zensical.org/docs/authoring/code-blocks/#code-selection-button
"content.code.select",
# Zensical can render footnotes as inline tooltips, so the user can read
# the footnote without leaving the context of the document.
# https://zensical.org/docs/authoring/footnotes/#footnote-tooltips
"content.footnote.tooltips",
# If you have many content tabs that have the same titles (e.g., "Python",
# "JavaScript", "Cobol"), this feature causes all of them to switch to
# at the same time when the user chooses their language in one.
# https://zensical.org/docs/authoring/content-tabs/#linked-content-tabs
"content.tabs.link",
# TODO: not sure I understand this one? Is there a demo of this in the docs?
# https://zensical.org/docs/authoring/tooltips/#improved-tooltips
"content.tooltips",
# With this feature enabled, Zensical will automatically hide parts
# of the header when the user scrolls past a certain point.
# https://zensical.org/docs/setup/header/#automatic-hiding
# "header.autohide",
# Turn on this feature to expand all collapsible sections in the
# navigation sidebar by default.
# https://zensical.org/docs/setup/navigation/#navigation-expansion
# "navigation.expand",
# This feature turns on navigation elements in the footer that allow the
# user to navigate to a next or previous page.
# https://zensical.org/docs/setup/footer/#navigation
"navigation.footer",
# When section index pages are enabled, documents can be directly attached
# to sections, which is particularly useful for providing overview pages.
# https://zensical.org/docs/setup/navigation/#section-index-pages
"navigation.indexes",
# When instant navigation is enabled, clicks on all internal links will be
# intercepted and dispatched via XHR without fully reloading the page.
# https://zensical.org/docs/setup/navigation/#instant-navigation
"navigation.instant",
# With instant prefetching, your site will start to fetch a page once the
# user hovers over a link. This will reduce the perceived loading time
# for the user.
# https://zensical.org/docs/setup/navigation/#instant-prefetching
"navigation.instant.prefetch",
# In order to provide a better user experience on slow connections when
# using instant navigation, a progress indicator can be enabled.
# https://zensical.org/docs/setup/navigation/#progress-indicator
#"navigation.instant.progress",
# When navigation paths are activated, a breadcrumb navigation is rendered
# above the title of each page
# https://zensical.org/docs/setup/navigation/#navigation-path
"navigation.path",
# When pruning is enabled, only the visible navigation items are included
# in the rendered HTML, reducing the size of the built site by 33% or more.
# https://zensical.org/docs/setup/navigation/#navigation-pruning
#"navigation.prune",
# When sections are enabled, top-level sections are rendered as groups in
# the sidebar for viewports above 1220px, but remain as-is on mobile.
# https://zensical.org/docs/setup/navigation/#navigation-sections
"navigation.sections",
# When tabs are enabled, top-level sections are rendered in a menu layer
# below the header for viewports above 1220px, but remain as-is on mobile.
# https://zensical.org/docs/setup/navigation/#navigation-tabs
"navigation.tabs",
# When sticky tabs are enabled, navigation tabs will lock below the header
# and always remain visible when scrolling down.
# https://zensical.org/docs/setup/navigation/#sticky-navigation-tabs
"navigation.tabs.sticky",
# A back-to-top button can be shown when the user, after scrolling down,
# starts to scroll up again.
# https://zensical.org/docs/setup/navigation/#back-to-top-button
"navigation.top",
# When anchor tracking is enabled, the URL in the address bar is
# automatically updated with the active anchor as highlighted in the table
# of contents.
# https://zensical.org/docs/setup/navigation/#anchor-tracking
"navigation.tracking",
# When search highlighting is enabled and a user clicks on a search result,
# Zensical will highlight all occurrences after following the link.
# https://zensical.org/docs/setup/search/#search-highlighting
"search.highlight",
# When anchor following for the table of contents is enabled, the sidebar
# is automatically scrolled so that the active anchor is always visible.
# https://zensical.org/docs/setup/navigation/#anchor-following
"toc.follow",
# When navigation integration for the table of contents is enabled, it is
# always rendered as part of the navigation sidebar on the left.
# https://zensical.org/docs/setup/navigation/#navigation-integration
#"toc.integrate",
]
# ----------------------------------------------------------------------------
# In the "palette" subsection you can configure options for the color scheme.
# You can configure different color # schemes, e.g., to turn on dark mode,
# that the user can switch between. Each color scheme can be further
# customized.
#
# Read more:
# - https://zensical.org/docs/setup/colors/
# ----------------------------------------------------------------------------
[[project.theme.palette]]
scheme = "default"
toggle.icon = "lucide/sun"
toggle.name = "Switch to dark mode"
[[project.theme.palette]]
scheme = "slate"
toggle.icon = "lucide/moon"
toggle.name = "Switch to light mode"
# ----------------------------------------------------------------------------
# In the "font" subsection you can configure the fonts used. By default, fonts
# are loaded from Google Fonts, giving you a wide range of choices from a set
# of suitably licensed fonts. There are options for a normal text font and for
# a monospaced font used in code blocks.
# ----------------------------------------------------------------------------
#[project.theme.font]
#text = "Inter"
#code = "Jetbrains Mono"
# ----------------------------------------------------------------------------
# You can configure your own logo to be shown in the header using the "logo"
# option in the "icons" subsection. The logo can be a path to a file in your
# "docs_dir" or it can be a path to an icon.
#
# Likewise, you can customize the logo used for the repository section of the
# header. Zensical derives the default logo for this from the repository URL.
# See below...
#
# There are other icons you can customize. See the documentation for details.
#
# Read more:
# - https://zensical.org/docs/setup/logo-and-icons
# - https://zensical.org/docs/authoring/icons-emojis/#search
# ----------------------------------------------------------------------------
[project.theme.icon]
#logo = "lucide/smile"
#repo = "lucide/smile"
# ----------------------------------------------------------------------------
# The "extra" section contains miscellaneous settings.
# ----------------------------------------------------------------------------
#[[project.extra.social]]
#icon = "fontawesome/brands/github"
#link = "https://github.com/user/repo"
[project.markdown_extensions.admonition]
[project.markdown_extensions.attr_list]
[project.markdown_extensions.footnotes]
[project.markdown_extensions.tables]
[project.markdown_extensions.pymdownx.blocks.caption]
[project.markdown_extensions.pymdownx.caret]
[project.markdown_extensions.pymdownx.mark]
[project.markdown_extensions.pymdownx.tilde]
[project.markdown_extensions.pymdownx.details]
[project.markdown_extensions.pymdownx.emoji]
emoji_index = "zensical.extensions.emoji.twemoji"
emoji_generator = "zensical.extensions.emoji.to_svg"
[project.markdown_extensions.pymdownx.highlight]
anchor_linenums = true
[project.markdown_extensions.pymdownx.inlinehilite]
[project.markdown_extensions.pymdownx.snippets]
[project.markdown_extensions.pymdownx.superfences]