Commit 0b323e57 authored by Christian Hilker's avatar Christian Hilker
Browse files

Merge branch 'hugo-pages' into 'main'

Hugo pages

See merge request !1
parents 6db65a27 23b2f795
Pipeline #14766 passed with stages
in 15 seconds
\ No newline at end of file
# All available Hugo versions are listed here:
- hugo -s docs -d ../public
- hugo -s docs -d ../public
- public
......@@ -2,7 +2,7 @@
## Wiki
For detailed documentation see the projects [Wiki]( page
For detailed documentation see the Documentation [Pages](
## Support Channel
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
baseURL = ""
languageCode = 'en-us'
title = 'gpu-cluster'
theme = "hugo-theme-learn"
canonifyurls = true
home = [ "HTML", "RSS", "JSON"]
themeVariant = "green"
\ No newline at end of file
title: "Home Page"
date: 2021-10-28T12:46:07+02:00
# CIT-EC GPU Cluster
The GPU compute cluster currently offers several hybrid nodes with balanced cpu/ram and gpu ratio. Access maybe granted upon request by additional user permissions. The cluster utilizes the workload manager Slurm. You may start your jobs via the login node **. For Compute tasks it is mandatory to use the slurm scheduler.
Although the cluster nodes running the TechFak netboot installation, the locations `/homes` and `/vol` are not available. Therefore an exclusive homes and vol is located at `/media/compute/` On initial login your compute home directory will be provisioned under `/media/compute/homes/user`. It is separated from your regular TechFak home location `/homes/user`. The compute home is accessible via []( and a regular TechFak netboot system like **.
## Support
On the [Universities Matrix Service]( join the Channel `` or send a support request to [GPU Support](
title = "Getting Started"
date = 2021-10-28T13:03:06+02:00
weight = 5
chapter = true
pre = "<b>1. </b>"
# Getting Started
title = "Environment Modules"
date = 2021-10-28T13:06:22+02:00
weight = 11
chapter = true
pre = "<b>2. </b>"
# Modules
Environment Modules benefits of the runtime extension and reduction of modules controlled by the user.
\ No newline at end of file
title = "Basics"
date = 2021-10-28T13:07:12+02:00
weight = 5
## Environment Modules Basics
Environment modules supports you in managing multiple tool flow versions like compilers or libraries. Therefore it manages user environment variables and keeps control of e.g. `PATH`, `LD_LIBRARY_PATH`, `INCLUDE` and other environment variables. Environment Modules benefits of the runtime extension and reduction of modules controlled by the user.
## currently available modules
* cuda/6.5
* cuda/7.5
* cuda/8.0
* cuda/9.0
* license
* matlab/R2017b
* matlab/R2018b
## Examples
show available modules
module avail
show loaded modules
module list
load a module
module load cuda/9.0
unload a module
module remove cuda/9.0
see `/media/compute/vol/tutorial`
\ No newline at end of file
title: "Cluster Nodes"
weight: 50
date: 2021-10-28T13:41:58+02:00
## Cluster Nodes
|Hostname |CPU-Cores|RAM |GPU |
|papaschlumpf|20 |256 GB|2 x Tesla P-100|
|schlumpfine |20 |256 GB|2 x Tesla P-100|
|schlaubi |20 |128 GB|2 x GTX 1080 TI|
|hefty |20 |128 GB|2 x GTX 1080 TI|
|clumsy |20 |128 GB|2 x GTX 1080 TI|
|handy |20 |128 GB|2 x GTX 1080 TI|
\ No newline at end of file
title = "Slurm"
date = 2021-10-28T13:06:22+02:00
weight = 10
chapter = true
pre = "<b>1. </b>"
# Slurm
Learn to use the Slurm Workload Manager
\ No newline at end of file
title = "Basics"
date = 2021-10-28T13:07:12+02:00
weight = 5
# Slurm Basics
Slurm jobs may be scheduled by slurm client tools. For a brief introduction checkout [Slurm Quickstart](
There are some possibilities to schedule a task in a slurm controlled system.
The main paradigm for job scheduling in a slurm cluster is using `sbatch`. It schedules a Job and requests the user claimed resources.
The cluster provides two types of resources: CPUs and GPUs which can be requested for jobs in variable amounts.
The GPUs in the cluster come in two flavours: The GPU objects tesla and gtx.
You may request a single gpu object via the option `--gres=gpu:1`. The Slurm scheduler reserves one gpu object exclusive for your job and therefore schedules the jobs by free resources.
CPUs are requested with `-c` or `--cpus-per-task= options`. For further information have a look at the man-pages of srun and sbatch. Reading the [Slurm documentation]( is also highly recommended
The commands sinfo and squeue provide detailed information about the clusters state and jobs running.
## CPU management and CPU-only jobs
Though the facility is called GPU-cluster, it also appropriate for CPU-only computing as it not only provides 12 GPUs but also 240 CPU-cores. Effective utilization of the CPU-resources can be tricky so you should make yourself familiar with [CPU-management](
## Choosing the appropriate partition
The cluster offers two partitions. Partitions can be considered as separate queues with slightly different features.
Partition selection is done with the parameter `-p` or `--partition=` in your *srun-commands* and *sbatch-scripts*. The default partition is *cpu*. Jobs which aren't mapped on a partition will be started there.
We have the *cpu* and *gpu* partition. If you have a cpu-only job (not requesting any GPU-resources with `--gres=gpu:n` ), you should start it on the *cpu* partition.
A job using GPU should be started on the *gpu* partition, with one exception. Jobs which request one GPU (with `--gres=gpu:1`) and more than 2 CPUs (with the `-c` or `--cpus-per-task` option) should use the *cpu* partition.
The reason for this policy is not obvious and will be explained under *GPU Blocking*
The example `example.job.sbatch` request one GTX 1080 Ti for the job and calls the payload via srun.
File: `example.job.sbatch`
``` bash
#SBATCH --gres=gpu:gtx:1
#SBATCH --partition=gpu
#SBATCH --time=4:00:00
File: `​​​​`
``` bash
module load cuda/9.0
CUDA_DEVICE=$(echo "$CUDA_VISIBLE_DEVICES," | cut -d',' -f $((SLURM_LOCALID + 1)) );
if ! [[ "$CUDA_DEVICE" =~ $T_REGEX ]]; then
echo "error no reserved gpu provided"
exit 1;
echo "Process $SLURM_PROCID of Job $SLURM_JOBID withe the local id $SLURM_LOCALID using gpu id $CUDA_DEVICE (we may use gpu: $CUDA_VISIBLE_DEVICES on $(hostname))"
echo "computing on $(nvidia-smi --query-gpu=gpu_name --format=csv -i $CUDA_DEVICE | tail -n 1)"
sleep 15
echo "done"
In the payload script the cluster specific environment variable CUDA_DEVICE tells your job which gpu device to use.
If you want to get informed on job completion you may add the following sbatch parameter to your sbatch file.
``` bash
#SBATCH --mail-type=END
Please only use your eMail address `` because others will be dropped. You may setup a mail forward within the [TechFak webmailer]( For a tutorial see `/media/compute/vol/tutorial`
## GPU-blocking
The Slurm resource manager provides an abstraction layer for resource allocation. So the user just throws jobs including resource requests on the cluster. Slurm will distribute the jobs to the hardware resources automatically. An appropriate node will be chosen for the job(s) and if the requested resources are not available, the job will be queued for being started later when the requested resources become available again.
Even though the resource abstraction layer exists, it's a good idea to keep the real hardware structure of the cluster in mind. It consists of 6 nodes (real machines), each providing 2 GPUs and 40 CPUs (2 sockets with 10 real cores + 10 virtual cores each).
Starting with the simple default configuration we had nodes in a state where GPUs were unuseable because CPU-intensive jobs were able to consume all CPU-resources on a single node. If all 40 CPUs on a node are in use, no further jobs can be startet on such a node. The node is then in the allocate state. If there are unused GPUs on an allocated node, they can not be utilized, because every job needs at least one CPU to run.
To prevent this GPU-lock, we established a second partition (this is the Slurm terminus for a job queue) called 'cpu'. The key feature of this partition is the fact that on a single node a maximum of 36 CPUs will be allocated for jobs from the 'cpu'-partition.
So, jobs started via the 'cpu'-partition can't eat up all CPUs of a node, there are always 4 CPUs left.
On the other hand jobs using GPU-resources should be started on our second partition called 'gpu'. These jobs are able to utilize the 4 'spare' CPUs on a node.
But even with this configuration, it's still possible to generate a GPU-lock: Imagine a node where 36 CPUs are allocated to CPU-only jobs. No GPU is yet in use on this node. Then a job from the 'gpu'-partition which requests 1 GPU and 4 CPUs is started on this node. The node is then allocated (36+4 CPUs are in use) but only 1 GPU is used. The second GPU is blocked because there's no CPU left to start another job on the node.
To avoid this, just follow the simple rule: If a job utilizes *one GPU* and *more than two CPUs*, start it on the 'cpu'-partition. Jobs requesting 2 GPUs don't fall under this category as they already utilize both GPUs on a node and no blocking condition can occure.
\ No newline at end of file
root = true
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
trim_trailing_whitespace = true
insert_final_newline = true
trim_trailing_whitespace = false
dataSource: "prs"
prefix: "v"
onlyMilestones: false
changelogFilename: ""
includeMessages: "all"
- "support"
- "duplicate"
- "invalid"
- "wontfix"
New features:
- "feature"
Bug Fixes:
- "bug"
- "enhancement"
- "i18n"
Theme Meta:
- "meta"
- "closed"
# Changelog
## v2.5.0 (01/06/2020)
#### New features
- [**feature**] Allow custom css files to be loaded by configuration [#376](
- [**feature**] Added flag to turn off image featherlight [#333](
#### Bug Fixes
- [**bug**] fix null pointer when no params on image url [#383](
- [**bug**] can't give argument to non-function not .Params.hidden [#403](
- [**bug**] Fix .File.UniqueID on zero object warning [#372](
- [**bug**] fix select option color in Chrome [#345](
- [**bug**] remove unneeded spaces from HTML [#320](
- [**bug**] Avoid displaying hidden sections in menu [#354](
#### Enhancements
- [**enhancement**] Updated theme installation documentation link. [#390](
- [**enhancement**] [ImgBot] Optimize images [#366](
- [**enhancement**] fix extra spaces in the description [#339](
- [**enhancement**] change to minified 'autocomplete.js' for improved performance [#321](
#### Internationalisation
- [**i18n**] Fix: typos [#343](
- [**i18n**] Fix: typo [#342](
- [**i18n**] Incorrect english in notice documentation [#336](
- [**i18n**] Add Chinese language for this theme [#349](
- [**i18n**] Add jp and zh cn [#335](
- [**i18n**] Added Russian translation [#332](
#### Theme Meta
- [**meta**] Fix various linting warnings [#405](
- [**meta**] Netlify build on 0.66.0 [#377](
- [**meta**] add inteliver documentation showcase [#331](
## v2.4.0 (04/09/2019)
#### Bug Fixes
- [**bug**] correct GitHub capitalization [#293](
- [**bug**] fix 'locate' typo [#285](
- [**bug**] Remove reference to the unused horsey CSS [#284](
- [**bug**] Fix invalid HTML in 404 template. [#271](
#### Enhancements
- [**enhancement**] Delete html5shiv-printshiv.min.js [#319](
- [**enhancement**] remove html5shiv [#315](
- [**enhancement**] Fix deprecated .Hugo, .UniqueID and .URL references [#303](
- [**enhancement**] Fix type lines 364 and 369 [#304](
- [**enhancement**] remove unneeded type="text/css" [#298](
- [**enhancement**] remove unneeded type="text/css" [#297](
- [**enhancement**] HTTPS links in footer [#295](
- [**enhancement**] remove unneeded type="text/css" [#292](
- [**enhancement**] Make shortcodes & example site compatible with Hugo v0.55 [#281](
#### Internationalisation
- [**i18n**] Added German and Arabic translation [#312](
#### Theme Meta
- [**meta**] Added as example site [#318](
## v2.3.0 (16/04/2019)
#### New features
- [**feature**] Added support for tags [#196](
#### Bug Fixes
- [**bug**] Fix issue where "children" shortcode only shows top level. [#252](
- [**bug**] Fix translation when using a custom baseURL [#234](
- [**bug**] Preventing left/right arrow key navigation in textareas [#241](
- [**bug**] Update menu.html to include the check icon [#229](
#### Enhancements
- [**enhancement**] Render the ```mermaid blocks into graphs [#226](
- [**enhancement**] Remove oudated versions of jquery & modernizr libraries [#259](
- [**enhancement**] Various Updates [#237](
- [**enhancement**] Use style instead of width and height in logo [#250](
- [**enhancement**] [ImgBot] Optimize images [#222](
- [**enhancement**] remove duplicate icon and fix incorrect favicon type [#227](
- [**enhancement**] HTTPS links in exampleSite menu-footer [#223](
#### Internationalisation
- [**i18n**] Dutch i18n [#239](
#### Theme Meta
- [**meta**] Add .editorconfig [#224](
## v2.2.0 (28/01/2019)
#### New features
- [**feature**] Sitewide param to enable or disable next/previous page buttons and breadcrumbs [#184](
#### Bug Fixes
- [**bug**] Fix baseurl used by search to load json data [#177](
- [**bug**] Updated CSS link to fontawesome library [#186](
- [**bug**] Close / Cancel search icon not showing in input box [#215](
- [**bug**] Prevent left and right keydown events while in input fields [#219](
- [**bug**] xss fix [#182](
- [**bug**] Fix error in blockquote documentation fixes #165 [#190](
#### Enhancements
- [**enhancement**] Update mermaid.js to a499296 [#199](
- [**enhancement**] Update Font Awesome to 5.0.6 [#129](
- [**enhancement**] Update 404.html alttext [#161](
- [**enhancement**] Remove CSS source map metadata [#167](
- [**enhancement**] Load github images in examplesite via https instead of http [#180](
- [**enhancement**] Load main site logo via BaseUrl [#185](
- [**enhancement**] HTTPS links in examplesite sidebar [#200](
- [**enhancement**] Use correct input type for search [#205](
- [**enhancement**] HTTPS link to [#207](
- [**enhancement**] Update html5shiv-printshiv.min.js [#208](
- [**enhancement**] Remove whitespace from clippy.svg [#211](
- [**enhancement**] Upgrade fontawesome to 5.6.3 [#218](
- [**enhancement**] fix clickable nodes style in mermaid [#169](
#### Internationalisation
- [**i18n**] French language correction [#157](
- [**i18n**] French language correction [#158](
- [**i18n**] Add indonesian translation [#159](
- [**i18n**] Add Turkish i18n config file [#175](
#### Theme Meta
- [**meta**] Fix wercker builds [#178](
- [**meta**] Declare netlify buildsteps in repo file rather than in webui [#217](
## v2.1.0 (10/08/2018)
#### Internationalisation
- [**i18n**] Clean up the English language phrasing [#146](
- [**i18n**] Updated for typo "names" [#150](
#### Theme Meta
- [**meta**] Add license scan report and status [#151](
#### Uncategorised
- [**closed**] Different viewport [#122](
- [**closed**] TranslationBaseName replaced for Name on archetypes template [#145](
- [**closed**] Improved variant of #119, as per request [#124](
- [**closed**] role="" is invalid [#121](
- [**closed**] Related to previous PR [#120](
- [**closed**] Issue #111 for [#117](
- [**closed**] Issue #111 for [#116](
- [**closed**] Issue #111 for theme-green.css [#114](
- [**closed**] Issue #111 for theme-red.css [#113](
- [**closed**] Issue #111 for theme-blue.css [#112](
- [**closed**] Issue #111 for theme-mine.css [#115](
- [**closed**] fix #77 : no wrap images that already wrapped [#118](
- [**closed**] doc: Keep icons aligned [#110](
- [**closed**] Add Portuguese translation [#109](
- [**closed**] Use `relURL` where possible [#102](
- [**closed**] Bug fix in sidebar menu and children description generation [#105](
- [**closed**] fix some typo [#104](
- [**closed**] Added a `menuTitle` attribute to partials/menu.html [#90](
- [**closed**] allowing comments system [#86](
- [**closed**] Add spanish translation [#85](
- [**closed**] Replace horsey with Pixabay's autocomplete [#75](
- [**closed**] Added info about 'draft:true' [#74](
- [**closed**] Remove white space from `align` parameter [#63](
## v2.0.0 (20/08/2017)
#### Uncategorised
- [**closed**] V2 [#56](
## v1.1.0 (22/07/2017)
#### Bug Fixes
- [**bug**] Fix sticky header jumpiness [#45](
#### Uncategorised
- [**closed**] Fix anchor scrolling that hides behind top nav bar [#46](
- [**closed**] feat: Change the default code color [#43](
- [**closed**] Use index pages + automatic navigation arrows [#36](
## v1.0.0 (25/03/2017)
#### Uncategorised
- [**closed**] Search [#18](
- [**closed**] Extracted menu footer content to separate partial file [#35](
- [**closed**] feat: style Hugo figure shortcode [#33](
- [**closed**] Fix URL for 'Edit this page' on Windows [#27](
- [**closed**] Revert "Menu generation using Content file instead directories" [#10](
- [**closed**] (#25) use .Site.BaseURL to lcoate static assets [#26](
- [**closed**] Menu ordering and definition in config.toml [#8](
- [**closed**] Menu generation using Content file instead directories [#5](
- [**closed**] Add Checkmark On visited Links [#4](
- [**closed**] doc: Add theme installation instructions [#1](
The MIT License (MIT)
Copyright (c) 2014 Grav
Copyright (c) 2016 MATHIEU CORNIC
Copyright (c) 2017 Valere JEANTET
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
# Hugo Learn Theme
This repository contains a theme for [Hugo](, based on great [Grav Learn Theme](
Visit the [theme documentation]( to see what is going on. It is actually built with this theme.
[![wercker status]( "wercker status")](
[![FOSSA Status](](
## Main features
- Automatic Search
- Multilingual mode
- Unlimited menu levels
- Automatic next/prev buttons to navigate through menu entries
- Image resizing, shadow…
- Attachments files
- List child pages
- Mermaid diagram (flowchart, sequence, gantt)
- Customizable look and feel and themes variants
- Buttons, Tip/Note/Info/Warning boxes, Expand
## Installation
Navigate to your themes folder in your Hugo site and use the following commands:
cd themes/
git clone
Check that your Hugo version is minimum `0.25` with `hugo version`.