<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.bwhpc.de/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=H+Schumacher</id>
	<title>bwHPC Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bwhpc.de/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=H+Schumacher"/>
	<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/e/Special:Contributions/H_Schumacher"/>
	<updated>2026-08-11T12:39:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Main_Page&amp;diff=16245</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Main_Page&amp;diff=16245"/>
		<updated>2026-08-11T09:50:47Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: added link to news and success stories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:140%;&amp;gt;&#039;&#039;&#039;Welcome to the bwHPC Wiki.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bwHPC represents services and resources in the State of &#039;&#039;&#039;B&#039;&#039;&#039;aden-&#039;&#039;&#039;W&#039;&#039;&#039;ürttemberg, Germany, for High Performance Computing (&#039;&#039;&#039;HPC&#039;&#039;&#039;), Data Intensive Computing (&#039;&#039;&#039;DIC&#039;&#039;&#039;) and Large Scale Scientific Data Management (&#039;&#039;&#039;LS2DM&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
The main bwHPC web page is at &#039;&#039;&#039;[https://www.bwhpc.de/ https://www.bwhpc.de/]&#039;&#039;&#039; including the latest [https://www.bwhpc.de/news.html News] and [https://www.bwhpc.de/projects.php Success Stories].&lt;br /&gt;
&lt;br /&gt;
Many topics depend on the cluster system you use. &lt;br /&gt;
First choose the cluster you use,  then select the correct topic.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- bwHPC STATUS START --&amp;gt;&lt;br /&gt;
{{Template:Status|ok|Status: Ok}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
Template usage examples: color ok(green),warn(yellow),alert(red). Enter custom text in 3rd field&lt;br /&gt;
{{Template:Status|warn|Status: JUSTUS2 disrupted }}&lt;br /&gt;
{{Template:Status|warn|Status: maintenance upcoming}}&lt;br /&gt;
{{Template:Status|alert|Status: bwUniCluster down}}&lt;br /&gt;
{{Template:Status|warn|Status: Jobs suspended on Justus 2}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- bwHPC STATUS END --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot; background:#eeeefe; width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:8px; background:#dedefe; font-size:120%; font-weight:bold; text-align:left&amp;quot; | Courses / eLearning&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* [https://training.bwhpc.de/ eLearning and Online Courses]&lt;br /&gt;
* [https://hpc-wiki.info/hpc/Introduction_to_Linux_in_HPC Introduction to Linux in HPC (external resource)]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;  background:#deffee; width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:8px; background:#cef2e0; font-size:120%; font-weight:bold; text-align:left&amp;quot; | [[File:Clusternodes.svg|x20px]]  Need Access to a Cluster?&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[When to use an HPC Cluster]]&lt;br /&gt;
* [[Running Calculations]]&lt;br /&gt;
* [[Registration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;  background:#deffee; width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:8px; background:#cef2e0; font-size:120%; font-weight:bold;  text-align:left&amp;quot; | [[File:Clusternodes.svg|x20px]]  HPC System Specific Documentation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
bwHPC encompasses several HPC compute clusters at different universities in Baden-Württemberg. Each cluster is dedicated to [https://www.bwhpc.de/bwhpc-domains.php specific research domains]. &lt;br /&gt;
 &lt;br /&gt;
Documentation differs between compute clusters, please see cluster specific overview pages:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px; width:30%&amp;quot;  | [[BwUniCluster3.0|bwUniCluster 3.0]] &lt;br /&gt;
| style=&amp;quot;padding-left:20px;&amp;quot;  | General Purpose, Teaching&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px; width:30%&amp;quot;  | [[BinAC2|bwForCluster BinAC 2]] &lt;br /&gt;
| style=&amp;quot;padding-left:20px;&amp;quot;  | Bioinformatics, Astrophysics, Geosciences, Pharmacy, and Medical Informatics&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px; width:30%&amp;quot; | [[Helix|bwForCluster Helix]]&lt;br /&gt;
| style=&amp;quot;padding-left:20px;&amp;quot;  |   Structural and Systems Biology, Medical Science, Soft Matter, Computational Humanities, and Mathematics and Computer Science&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px; width:30%&amp;quot;  | [[:JUSTUS2| bwForCluster JUSTUS 2]] &lt;br /&gt;
| style=&amp;quot;padding-left:20px;&amp;quot;  | Theoretical Chemistry, Condensed Matter Physics, and Quantum Sciences&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px; width:30%&amp;quot;  | [[NEMO2|bwForCluster NEMO 2]] &lt;br /&gt;
| style=&amp;quot;padding-left:20px;&amp;quot;  | Neurosciences, Particle Physics, Materials Science, and Microsystems Engineering&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
|bwHPC Clusters: [https://www.bwhpc.de/cluster.php operational status] &lt;br /&gt;
Further Compute Clusters in Baden-Württemberg (separate access policies):&lt;br /&gt;
* [[DACHS | Datenanalyse Cluster der Hochschulen (DACHS)]]&lt;br /&gt;
* bwHPC tier 1: [https://kb.hlrs.de/platforms/index.php/Hunter_(HPE) Hunter] ([https://www.hlrs.de/apply-for-computing-time getting access])&lt;br /&gt;
* bwHPC tier 2: [https://www.nhr.kit.edu/userdocs/horeka HoreKa] ([https://www.nhr.kit.edu/userdocs/horeka/projects/ getting access])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:#deffee; width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:8px; background:#cef2e0; font-size:120%; font-weight:bold; text-align:left&amp;quot; | [[File:Clusternodes.svg|x20px]]  Documentation valid for all Clusters&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[Environment Modules| Software Environment Modules]]: usage of preexisting software&lt;br /&gt;
* [https://www.bwhpc.de/software.html List of Software] on all clusters&lt;br /&gt;
* [[Data Transfer|Data Transfer]]: working with files [[File:Notebook.svg|x15px]] &amp;lt;---&amp;gt; [[File:Clusternodes.svg|x15px]]&lt;br /&gt;
* [[Development| Development]]: software, programming languages, parallel pogramming&lt;br /&gt;
* [[Energy Efficient Cluster Usage | (Energy) Efficient Cluster Usage]] for low waiting times and fast running jobs&lt;br /&gt;
* [[HPC Glossary]]&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;height:100%; background:#ffeaef; width:100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:8px; background:#f5dfdf; font-size:120%; font-weight:bold;  text-align:left&amp;quot;   | [[File:Storage_small.svg|x15px]]  Scientific Data Storage&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
User guides of available scientific data storage services:&lt;br /&gt;
* [[SDS@hd]]: Everyone can join existing storage projects, entitlement needed for creating your own, [https://sds-hd.urz.uni-heidelberg.de/management/shib/sds_costs.php cost sheet]&lt;br /&gt;
* [https://uni-tuebingen.de/einrichtungen/zentrum-fuer-datenverarbeitung/projekte/laufende-projekte/bwsfs bwSFS]&lt;br /&gt;
Associated, but local scientific storage services are:&lt;br /&gt;
* [https://wiki.scc.kit.edu/lsdf/index.php/Category:LSDF_Online_Storage LSDF Online Storage] (only for KIT and KIT partners)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;height:100%; background:#ffeaef; width:100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:8px; background:#f5dfdf; font-size:120%; font-weight:bold;  text-align:left&amp;quot;   | [[File:Storage_small.svg|x15px]]  Scientific Data Archiving&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
For user guides of the scientific data archiving services:&lt;br /&gt;
* [https://www.rda.kit.edu/english bwDataArchive]: Open to all scientists at KIT and institutions in Baden-Württemberg that have signed a service agreement with KIT&lt;br /&gt;
Associated, but local archiving services for scientific data are:&lt;br /&gt;
* [https://www.urz.uni-heidelberg.de/de/service-katalog/speicher/heiarchive heiARCHIVE] (only for members of Heidelberg University)&lt;br /&gt;
For instructions on how to move the data, depending on the offered connections, can be found under [[Data Transfer | Data Transfer]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;height:100%; background:#ffeaef; width:100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:8px; background:#f5dfdf; font-size:120%; font-weight:bold;  text-align:left&amp;quot;   | Research Data Management&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [https://www.forschungsdaten.org/index.php/FDM-Kontakte#Deutschland Research Data Management (RDM)] contact persons&lt;br /&gt;
* [https://www.forschungsdaten.info Portal for Research Data Management] (Forschungsdaten.info)&lt;br /&gt;
|}&lt;br /&gt;
{| style=&amp;quot;  background:#eeeefe; width:100%;&amp;quot; &lt;br /&gt;
| style=&amp;quot;padding:8px; background:#dedefe; font-size:120%; font-weight:bold;  text-align:left&amp;quot; | Support&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* [[BwSupportPortal|Submit a Ticket in our Support Portal]]&lt;br /&gt;
Support is provided by the [https://www.bwhpc.de/teams.php bwHPC Competence Centers]:&lt;br /&gt;
|}&lt;br /&gt;
{| style=&amp;quot;  background:#e6e9eb; width:100%;&amp;quot; &lt;br /&gt;
| style=&amp;quot;padding:8px; background:#d1dadf; font-size:120%; font-weight:bold;  text-align:left&amp;quot; | Acknowledgement&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* Please [[Acknowledgement|acknowledge]] our resources in your publications.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=16243</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=16243"/>
		<updated>2026-08-11T08:18:07Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: removed &amp;quot;cluster&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* SEARCH&lt;br /&gt;
* bwHPC Wiki&lt;br /&gt;
** mainpage|Wiki Home&lt;br /&gt;
** https://www.bwhpc.de|bwHPC Web Page&lt;br /&gt;
* bwHPC Systems&lt;br /&gt;
** BwUniCluster3.0|bwUniCluster 3.0&lt;br /&gt;
** BinAC2|BinAC2&lt;br /&gt;
** Helix|Helix&lt;br /&gt;
** JUSTUS2|JUSTUS 2&lt;br /&gt;
** NEMO2|NEMO2&lt;br /&gt;
* Documentation&lt;br /&gt;
** Registration | Registration&lt;br /&gt;
** Running_Calculations|Running Calculations&lt;br /&gt;
** Software_Modules|Software Modules&lt;br /&gt;
** Data_Transfer|Data Transfer&lt;br /&gt;
** Development|Development&lt;br /&gt;
** Energy_Efficient_Cluster_Usage | Efficient Usage&lt;br /&gt;
** HPC Glossary | HPC Glossary&lt;br /&gt;
* Support&lt;br /&gt;
** https://training.bwhpc.de|eLearning&lt;br /&gt;
** bwSupportPortal|Ticketing System&lt;br /&gt;
** Feedback|Feedback&lt;br /&gt;
* Data Storage&lt;br /&gt;
** SDS@hd|SDS@hd&lt;br /&gt;
** https://www.rda.kit.edu/english|bwDataArchive&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=16242</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=16242"/>
		<updated>2026-08-11T08:16:58Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: added engergy efficient cluster usage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* SEARCH&lt;br /&gt;
* bwHPC Wiki&lt;br /&gt;
** mainpage|Wiki Home&lt;br /&gt;
** https://www.bwhpc.de|bwHPC Web Page&lt;br /&gt;
* bwHPC Systems&lt;br /&gt;
** BwUniCluster3.0|bwUniCluster 3.0&lt;br /&gt;
** BinAC2|BinAC2&lt;br /&gt;
** Helix|Helix&lt;br /&gt;
** JUSTUS2|JUSTUS 2&lt;br /&gt;
** NEMO2|NEMO2&lt;br /&gt;
* Documentation&lt;br /&gt;
** Registration | Registration&lt;br /&gt;
** Running_Calculations|Running Calculations&lt;br /&gt;
** Software_Modules|Software Modules&lt;br /&gt;
** Data_Transfer|Data Transfer&lt;br /&gt;
** Development|Development&lt;br /&gt;
** Energy_Efficient_Cluster_Usage | Efficient Cluster Usage&lt;br /&gt;
** HPC Glossary | HPC Glossary&lt;br /&gt;
* Support&lt;br /&gt;
** https://training.bwhpc.de|eLearning&lt;br /&gt;
** bwSupportPortal|Ticketing System&lt;br /&gt;
** Feedback|Feedback&lt;br /&gt;
* Data Storage&lt;br /&gt;
** SDS@hd|SDS@hd&lt;br /&gt;
** https://www.rda.kit.edu/english|bwDataArchive&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=BwForCluster_JUSTUS_2_Slurm_HOWTO&amp;diff=16239</id>
		<title>BwForCluster JUSTUS 2 Slurm HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=BwForCluster_JUSTUS_2_Slurm_HOWTO&amp;diff=16239"/>
		<updated>2026-07-30T17:06:49Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: added interactive job cancelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Justus2}}&lt;br /&gt;
&lt;br /&gt;
This is a collection of howtos and convenient Slurm commands for JUSTUS 2.&lt;br /&gt;
&lt;br /&gt;
Some commands behave slightly different depending on whether they are executed &lt;br /&gt;
by a system administrator or by a regular user, as Slurm prevents regular users from accessing critical system information and viewing job and usage information of other users.  &lt;br /&gt;
&lt;br /&gt;
= GENERAL INFORMATION =&lt;br /&gt;
&lt;br /&gt;
== How to find a general quick start user guide? ==&lt;br /&gt;
&lt;br /&gt;
https://slurm.schedmd.com/quickstart.html&lt;br /&gt;
&lt;br /&gt;
== How to find Slurm FAQ? ==&lt;br /&gt;
&lt;br /&gt;
https://slurm.schedmd.com/faq.html&lt;br /&gt;
&lt;br /&gt;
== How to find a Slurm cheat sheet? ==&lt;br /&gt;
&lt;br /&gt;
https://slurm.schedmd.com/pdfs/summary.pdf&lt;br /&gt;
&lt;br /&gt;
== How to find Slurm tutorials? ==&lt;br /&gt;
&lt;br /&gt;
https://slurm.schedmd.com/tutorials.html&lt;br /&gt;
&lt;br /&gt;
== How to get more information on Slurm? ==&lt;br /&gt;
&lt;br /&gt;
(Almost) every Slurm command has a man page. Use it.&lt;br /&gt;
&lt;br /&gt;
Online versions: https://slurm.schedmd.com/man_index.html&lt;br /&gt;
&lt;br /&gt;
== How to find hardware specific details about JUSTUS 2? ==&lt;br /&gt;
&lt;br /&gt;
See our Wiki page: [[Hardware and Architecture (bwForCluster JUSTUS 2)|Hardware and Architecture]]&lt;br /&gt;
&lt;br /&gt;
= JOB SUBMISSION =&lt;br /&gt;
&lt;br /&gt;
== How to submit a serial batch job? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/sbatch.html sbatch]  command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch &amp;lt;job-script&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample job script template for serial job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Allocate one node&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
# Number of program instances to be executed&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
# 8 GB memory required per node&lt;br /&gt;
#SBATCH --mem=8G&lt;br /&gt;
# Maximum run time of job&lt;br /&gt;
#SBATCH --time=1:00:00&lt;br /&gt;
# Give job a reasonable name&lt;br /&gt;
#SBATCH --job-name=serial_job&lt;br /&gt;
# File name for standard output (%j will be replaced by job id)&lt;br /&gt;
#SBATCH --output=serial_job-%j.out&lt;br /&gt;
# File name for error output&lt;br /&gt;
#SBATCH --error=serial_job-%j.err&lt;br /&gt;
&lt;br /&gt;
# Load software modules as needed, e.g.&lt;br /&gt;
# module load foo/bar&lt;br /&gt;
&lt;br /&gt;
# Run serial program&lt;br /&gt;
./my_serial_program&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample code for serial program: [[Media:Hello_serial.c | Hello_serial.c]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* --nodes=1 and --ntasks-per-node=1 may be replaced by --ntasks=1.&lt;br /&gt;
* If not specified, stdout and stderr are both written to slurm-%j.out.&lt;br /&gt;
&lt;br /&gt;
== How to find working sample scripts for my program? ==&lt;br /&gt;
&lt;br /&gt;
Most software modules for applications provide working sample batch scripts.&lt;br /&gt;
Check with [[Software_Modules_Lmod#Module_specific_help | module help]] command, e.g. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module help chem/vasp     # display module help for VASP&lt;br /&gt;
$ module help math/matlab   # display module help for Matlab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to harden job scripts against common errors? ==&lt;br /&gt;
&lt;br /&gt;
The bash shell provides several options that support users in disclosing hidden bugs and writing safer job scripts.&lt;br /&gt;
In order to activate these safeguard settings users can insert the following lines in their scripts (after all #SBATCH directives):    &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
set -o errexit   # (or set -e) cause batch script to exit immediately when a command fails.&lt;br /&gt;
set -o pipefail  # cause batch script to exit immediately also when the command that failed is embedded in a pipeline&lt;br /&gt;
set -o nounset   # (or set -u) causes the script to treat unset variables as an error and exit immediately &lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to submit an interactive job? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/salloc.html salloc] command, e.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ salloc --nodes=1 --ntasks-per-node=8&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
In previous Slurm versions &amp;lt; 20.11 the use of [https://slurm.schedmd.com/srun.html srun] has been the recommended way for launching interactive jobs, e.g.:   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ srun --nodes=1 --ntasks-per-node=8 --pty bash &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although this still works with current Slurm versions this is considered &#039;&#039;&#039;deprecated &#039;&#039;&#039; for current Slurm versions as it may cause issues when launching additional jobs steps from within the interactive job environment. Use [https://slurm.schedmd.com/salloc.html salloc] command.&lt;br /&gt;
&lt;br /&gt;
== How to enable X11 forwarding for an interactive job? ==&lt;br /&gt;
&lt;br /&gt;
Use &#039;--x11&#039; flag, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ salloc --nodes=1 --ntasks-per-node=8 --x11     # run shell with X11 forwarding enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
* For X11 forwarding to work, you must also enable X11 forwarding for your ssh login from your local computer to the cluster, i.e.:&lt;br /&gt;
 &amp;lt;pre&amp;gt;local&amp;gt; ssh -X &amp;lt;username&amp;gt;@justus2.uni-ulm.de&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to convert Moab batch job scripts to Slurm? ==&lt;br /&gt;
&lt;br /&gt;
Replace Moab/Torque job specification flags and environment variables in your job&lt;br /&gt;
scripts by their corresponding Slurm counterparts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Commonly used Moab job specification flags and their Slurm equivalents&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| width=750px class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Option !! Moab (msub) !! Slurm (sbatch)&lt;br /&gt;
|-&lt;br /&gt;
| Script directive                            || #MSUB                                  || #SBATCH&lt;br /&gt;
|-&lt;br /&gt;
| Job name                                    || -N &amp;lt;name&amp;gt;                              || --job-name=&amp;lt;name&amp;gt;  (-J &amp;lt;name&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| Account                                     || -A &amp;lt;account&amp;gt;                           || --account=&amp;lt;account&amp;gt; (-A &amp;lt;account&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| Queue                                       || -q &amp;lt;queue&amp;gt;                             || --partition=&amp;lt;partition&amp;gt; (-p &amp;lt;partition&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| Wall time limit                             || -l walltime=&amp;lt;hh:mm:ss&amp;gt;                 || --time=&amp;lt;hh:mm:ss&amp;gt; (-t &amp;lt;hh:mm:ss&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| Node count                                  || -l nodes=&amp;lt;count&amp;gt;                       || --nodes=&amp;lt;count&amp;gt; (-N &amp;lt;count&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| Core count                                  || -l procs=&amp;lt;count&amp;gt;                       || --ntasks=&amp;lt;count&amp;gt; (-n &amp;lt;count&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| Process count per node                      || -l ppn=&amp;lt;count&amp;gt;                         || --ntasks-per-node=&amp;lt;count&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Core count per process                      ||                                        || --cpus-per-task=&amp;lt;count&amp;gt; (-c &amp;lt;count&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| Memory limit per node                       || -l mem=&amp;lt;limit&amp;gt;                         || --mem=&amp;lt;limit&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Memory limit per process                    || -l pmem=&amp;lt;limit&amp;gt;                        || --mem-per-cpu=&amp;lt;limit&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Job array                                   || -t &amp;lt;array indices&amp;gt;                     || --array=&amp;lt;indices&amp;gt; (-a &amp;lt;indices&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| Node exclusive job                          || -l naccesspolicy=singlejob             || --exclusive&lt;br /&gt;
|-&lt;br /&gt;
| Initial working directory                   || -d &amp;lt;directory&amp;gt; (default: $HOME)        || --chdir=&amp;lt;directory&amp;gt; (-D &amp;lt;directory&amp;gt;) (default: submission directory)&lt;br /&gt;
|-&lt;br /&gt;
| Standard output file                        || -o &amp;lt;file path&amp;gt;                         || --output=&amp;lt;file&amp;gt; (-o &amp;lt;file&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| Standard error file                         || -e &amp;lt;file path&amp;gt;                         || --error=&amp;lt;file&amp;gt;  (-e &amp;lt;file&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| Combine stdout/stderr to stdout             || -j oe                                  || --output=&amp;lt;combined stdout/stderr file&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Mail notification events                    || -m &amp;lt;event&amp;gt;                             || --mail-type=&amp;lt;events&amp;gt; (valid types include: NONE, BEGIN, END, FAIL, ALL)&lt;br /&gt;
|-&lt;br /&gt;
| Export environment to job                   || -V                                     || --export=ALL (default)&lt;br /&gt;
|-&lt;br /&gt;
| Don&#039;t export environment to job             || (default)                              || --export=NONE&lt;br /&gt;
|-&lt;br /&gt;
| Export environment variables to job         || -v &amp;lt;var[=value][,var2=value2[, ...]]&amp;gt;  || --export=&amp;lt;var[=value][,var2=value2[,...]]&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* Default initial job working directory is $HOME for Moab. For Slurm the default working directory is where you submit your job from.&lt;br /&gt;
* By default Moab does not export any environment variables to the job&#039;s runtime environment. With Slurm most of the login environment variables are exported to your job&#039;s runtime environment. This includes environment variables from software modules that were loaded at job submission time (and also $HOSTNAME variable).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Commonly used Moab/Torque script environment variables and their Slurm equivalents&lt;br /&gt;
&lt;br /&gt;
{| width=750px class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Information                 !! Moab                !! Torque               !! Slurm                                     &lt;br /&gt;
|-&lt;br /&gt;
| Job name                     || $MOAB_JOBNAME        || $PBS_JOBNAME        || $SLURM_JOB_NAME                           &lt;br /&gt;
|-&lt;br /&gt;
| Job ID                       || $MOAB_JOBID          || $PBS_JOBID          || $SLURM_JOB_ID                             &lt;br /&gt;
|-&lt;br /&gt;
| Submit directory             || $MOAB_SUBMITDIR      || $PBS_O_WORKDIR      || $SLURM_SUBMIT_DIR                         &lt;br /&gt;
|-&lt;br /&gt;
| Number of nodes allocated    || $MOAB_NODECOUNT      || $PBS_NUM_NODES      || $SLURM_JOB_NUM_NODES (and: $SLURM_NNODES) &lt;br /&gt;
|-&lt;br /&gt;
| Node list                    || $MOAB_NODELIST       || cat $PBS_NODEFILE   || $SLURM_JOB_NODELIST                       &lt;br /&gt;
|-&lt;br /&gt;
| Number of processes          || $MOAB_PROCCOUNT      || $PBS_TASKNUM        || $SLURM_NTASKS                             &lt;br /&gt;
|-&lt;br /&gt;
| Requested tasks per node     || ---                    || $PBS_NUM_PPN        || $SLURM_NTASKS_PER_NODE                    &lt;br /&gt;
|-&lt;br /&gt;
| Requested CPUs per task      || ---                  || ---                 || $SLURM_CPUS_PER_TASK                      &lt;br /&gt;
|-&lt;br /&gt;
| Job array index              || $MOAB_JOBARRAYINDEX  || $PBS_ARRAY_INDEX    || $SLURM_ARRAY_TASK_ID                      &lt;br /&gt;
|-&lt;br /&gt;
| Job array range              || $MOAB_JOBARRAYRANGE  || -                   || $SLURM_ARRAY_TASK_COUNT                   &lt;br /&gt;
|-&lt;br /&gt;
| Queue name                   || $MOAB_CLASS          || $PBS_QUEUE          || $SLURM_JOB_PARTITION                      &lt;br /&gt;
|-&lt;br /&gt;
| QOS name                     || $MOAB_QOS            || ---                 || $SLURM_JOB_QOS                            &lt;br /&gt;
|-&lt;br /&gt;
| Number of processes per node | ---                   || $PBS_NUM_PPN        || $SLURM_TASKS_PER_NODE                     &lt;br /&gt;
|-&lt;br /&gt;
| Job user                     || $MOAB_USER           || $PBS_O_LOGNAME      || $SLURM_JOB_USER                           &lt;br /&gt;
|-&lt;br /&gt;
| Hostname                     || $MOAB_MACHINE        || $PBS_O_HOST         || $SLURMD_NODENAME                          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* See [https://slurm.schedmd.com/sbatch.html sbatch] man page for a complete list of flags and environment variables.&lt;br /&gt;
&lt;br /&gt;
== How to emulate Moab output file names? ==&lt;br /&gt;
&lt;br /&gt;
Use the following directives:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --output=&amp;quot;%x.o%j&amp;quot;&lt;br /&gt;
#SBATCH --error=&amp;quot;%x.e%j&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to pass command line arguments to the job script? ==&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;pre&amp;gt;$ sbatch &amp;lt;job-script&amp;gt; arg1 arg2 ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside the job script the arguments can be accessed as $1, $2, ...&lt;br /&gt;
&lt;br /&gt;
E.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
infile=&amp;quot;$1&amp;quot;&lt;br /&gt;
outfile=&amp;quot;$2&amp;quot;&lt;br /&gt;
./my_serial_program &amp;lt; &amp;quot;$infile&amp;quot; &amp;gt; &amp;quot;$outfile&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Do &#039;&#039;&#039;not&#039;&#039;&#039; use $1, $2, ... in &amp;quot;#SBATCH&amp;quot; lines. These parameters can be used only within the regular shell script.&lt;br /&gt;
&lt;br /&gt;
== How to request local scratch (SSD/NVMe) at job submission? ==&lt;br /&gt;
&lt;br /&gt;
Use &#039;--gres=scratch:nnn&#039; option to allocate nnn GB of local (i.e. node-local) scratch space for the entire job.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;--gres=scratch:100&#039; will allocate 100 GB scratch space on a locally attached NVMe device.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Do &#039;&#039;&#039;not&#039;&#039;&#039; add any unit (such as --gres=scratch:100G). This would be treated as requesting an amount of 10^9 * 100GB of scratch space.&lt;br /&gt;
&lt;br /&gt;
* Multinode jobs get nnn GB of local scratch space on every node of the job.&lt;br /&gt;
&lt;br /&gt;
* Environment variable &#039;&#039;&#039;$SCRATCH&#039;&#039;&#039; will point to &lt;br /&gt;
** /scratch/&amp;lt;user&amp;gt;.&amp;lt;jobid&amp;gt; when local scratch has been requested. This will be on locally attached SSD/NVMe devices.&lt;br /&gt;
** /tmp/&amp;lt;user&amp;gt;.&amp;lt;jobid&amp;gt; when no local scratch has been requested. This will be in memory and, thus, be limited in size.&lt;br /&gt;
&lt;br /&gt;
* Environment variable &#039;&#039;&#039;$TMPDIR&#039;&#039;&#039; always points to /tmp/&amp;lt;user&amp;gt;.&amp;lt;jobid&amp;gt;. This will always be in memory and, thus, limited in size.&lt;br /&gt;
&lt;br /&gt;
* For backward compatibility environment variable $RAMDISK always points to /tmp/&amp;lt;user&amp;gt;.&amp;lt;jobid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Scratch space allocation in /scratch will be enforced by quota limits&lt;br /&gt;
&lt;br /&gt;
* Data written to $TMPDIR will always count against allocated memory.&lt;br /&gt;
&lt;br /&gt;
* Data written to local scratch space will automatically be removed at the end of the job.&lt;br /&gt;
&lt;br /&gt;
== How to request GPGPU nodes at job submission? ==&lt;br /&gt;
&lt;br /&gt;
Use &#039;--gres=gpu:&amp;lt;count&amp;gt;&#039; option to allocate 1 or 2 GPUs per node for the entire job.&lt;br /&gt;
&lt;br /&gt;
Example: &#039;--gres=gpu:1&#039; will allocate one GPU per node for this job.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* GPGPU nodes are equipped with two Nvidia V100S cards &lt;br /&gt;
&lt;br /&gt;
* Environment variables $CUDA_VISIBLE_DEVICES, $SLURM_JOB_GPUS and $GPU_DEVICE_ORDINAL will denote card(s) allocated for the job.&lt;br /&gt;
&lt;br /&gt;
* CUDA Toolkit is available as software module devel/cuda.&lt;br /&gt;
&lt;br /&gt;
== How to clean-up or save files before a job times out? ==&lt;br /&gt;
&lt;br /&gt;
Possibly you would like to clean up the work directory or save intermediate result files in case a job times out.&lt;br /&gt;
&lt;br /&gt;
The following sample script may serve as a blueprint for implementing a pre-termination function to perform clean-up or file recovery actions. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Allocate one node&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
# Number of program instances to be executed&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
# 2 GB memory required per node&lt;br /&gt;
#SBATCH --mem=2G&lt;br /&gt;
# Request 10 GB local scratch space&lt;br /&gt;
#SBATCH --gres=scratch:10&lt;br /&gt;
# Maximum run time of job&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
# Send the USR1 signal 120 seconds before end of time limit&lt;br /&gt;
#SBATCH --signal=B:USR1@120&lt;br /&gt;
# Give job a reasonable name&lt;br /&gt;
#SBATCH --job-name=signal_job&lt;br /&gt;
# File name for standard output (%j will be replaced by job id)&lt;br /&gt;
#SBATCH --output=signal_job-%j.out&lt;br /&gt;
# File name for error output&lt;br /&gt;
#SBATCH --error=signal_job-%j.err&lt;br /&gt;
&lt;br /&gt;
# Define the signal handler function&lt;br /&gt;
# Note: This is not executed here, but rather when the associated &lt;br /&gt;
# signal is received by the shell.&lt;br /&gt;
finalize_job()&lt;br /&gt;
{&lt;br /&gt;
    # Do whatever cleanup you want here. In this example we copy&lt;br /&gt;
    # output file(s) back to $SLURM_SUBMIT_DIR, but you may implement &lt;br /&gt;
    # your own job finalization code here.&lt;br /&gt;
    echo &amp;quot;function finalize_job called at `date`&amp;quot;&lt;br /&gt;
    cd $SCRATCH&lt;br /&gt;
    mkdir -vp &amp;quot;$SLURM_SUBMIT_DIR&amp;quot;/results&lt;br /&gt;
    tar czvf &amp;quot;$SLURM_SUBMIT_DIR&amp;quot;/results/${SLURM_JOB_ID}.tgz output*.txt&lt;br /&gt;
    exit&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Call finalize_job function as soon as we receive USR1 signal&lt;br /&gt;
trap &#039;finalize_job&#039; USR1&lt;br /&gt;
&lt;br /&gt;
# Copy input files for this job to the scratch directory (if needed).&lt;br /&gt;
# Note: Environment variable $SCRATCH always points to a scratch directory &lt;br /&gt;
# automatically created for this job. Environment variable $SLURM_SUBMIT_DIR &lt;br /&gt;
# points to the path where this script was submitted from.&lt;br /&gt;
# Example:&lt;br /&gt;
# cp -v &amp;quot;$SLURM_SUBMIT_DIR&amp;quot;/input*.txt &amp;quot;$SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Change working directory to local scratch directory&lt;br /&gt;
cd &amp;quot;$SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Load software modules as needed, e.g.&lt;br /&gt;
# module load foo/bar&lt;br /&gt;
&lt;br /&gt;
# This is where the actual work is done. In this case we just create &lt;br /&gt;
# a sample output file for 900 (=15*60) seconds, but since we asked &lt;br /&gt;
# Slurm for 600 seconds only it will not be able finish within this &lt;br /&gt;
# wall time.&lt;br /&gt;
# Note: It is important to run this task in the background &lt;br /&gt;
# by placing the &amp;amp; symbol at the end. Otherwise the signal handler &lt;br /&gt;
# would not be executed until that process has finished, which is not &lt;br /&gt;
# what we want.&lt;br /&gt;
(for i in `seq 15`; do echo &amp;quot;Hello World at `date +%H:%M:%S`.&amp;quot;; sleep 60; done) &amp;gt;output.txt 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# Note: The command above is just for illustration. Normally you would just run&lt;br /&gt;
# my_program &amp;gt;output.txt 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# Tell the shell to wait for background task(s) to finish. &lt;br /&gt;
# Note: This is important because otherwise the parent shell &lt;br /&gt;
# (this script) would proceed (and terminate) without waiting for &lt;br /&gt;
# background task(s) to finish.&lt;br /&gt;
wait&lt;br /&gt;
&lt;br /&gt;
# If we get here, the job did not time out but finished in time.&lt;br /&gt;
&lt;br /&gt;
# Release user defined signal handler for USR1&lt;br /&gt;
trap - USR1&lt;br /&gt;
&lt;br /&gt;
# Do regular cleanup and save files. In this example we simply call &lt;br /&gt;
# the same function that we defined as a signal handler above, but you &lt;br /&gt;
# may implement your own code here. &lt;br /&gt;
finalize_job&lt;br /&gt;
&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The number of seconds specified in --signal option must match the runtime of the pre-termination function and must not exceed 65535 seconds.&lt;br /&gt;
&lt;br /&gt;
* Due to the resolution of event handling by Slurm, the signal may be sent a little earlier than specified.&lt;br /&gt;
&lt;br /&gt;
== How to submit a multithreaded batch job? ==&lt;br /&gt;
&lt;br /&gt;
Sample job script template for a job running one multithreaded program instance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Allocate one node&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
# Number of program instances to be executed&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
# Number of cores per program instance&lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
# 8 GB memory required per node&lt;br /&gt;
#SBATCH --mem=8G&lt;br /&gt;
# Maximum run time of job&lt;br /&gt;
#SBATCH --time=1:00:00&lt;br /&gt;
# Give job a reasonable name&lt;br /&gt;
#SBATCH --job-name=multithreaded_job&lt;br /&gt;
# File name for standard output (%j will be replaced by job id)&lt;br /&gt;
#SBATCH --output=multithreaded_job-%j.out&lt;br /&gt;
# File name for error output&lt;br /&gt;
#SBATCH --error=multithreaded_job-%j.err&lt;br /&gt;
&lt;br /&gt;
# Load software modules as needed, e.g.&lt;br /&gt;
# module load foo/bar&lt;br /&gt;
&lt;br /&gt;
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}&lt;br /&gt;
export MKL_NUM_THREADS=${SLURM_CPUS_PER_TASK}&lt;br /&gt;
&lt;br /&gt;
# Run multithreaded program&lt;br /&gt;
./my_multithreaded_program&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample code for multithreaded program: [[Media:Hello_openmp.c | Hello_openmp.c]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* In our configuration each physical core is considered a &amp;quot;CPU&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* On JUSTUS 2 it is recommended to specify a number of cores per task (&#039;--cpus-per-task&#039;) that is either an integer divisor of 24 or (at most) 48.&lt;br /&gt;
&lt;br /&gt;
* Required memory can also by specified per allocated CPU with &#039;--mem-per-cpu&#039; option. &lt;br /&gt;
&lt;br /&gt;
* The &#039;--mem&#039; and &#039;--mem-per-cpu&#039; options are mutually exclusive.&lt;br /&gt;
&lt;br /&gt;
==  How to submit an array job? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/sbatch.html#OPT_array -a] (or [https://slurm.schedmd.com/sbatch.html#OPT_array --array]) option, e.g. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch -a 1-16%8 ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will submit 16 tasks to be executed, each one indexed by SLURM_ARRAY_TASK_ID ranging from 1 to 16, but will limit the number of simultaneously running tasks from this job array to 8.&lt;br /&gt;
&lt;br /&gt;
Sample job script template for an array job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Number of cores per individual array task&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --array=1-16%8&lt;br /&gt;
#SBATCH --mem=4G&lt;br /&gt;
#SBATCH --time=01:00:00&lt;br /&gt;
#SBATCH --job-name=array_job&lt;br /&gt;
#SBATCH --output=array_job-%A_%a.out&lt;br /&gt;
#SBATCH --error=array_job-%A_%a.err&lt;br /&gt;
&lt;br /&gt;
# Load software modules as needed, e.g.&lt;br /&gt;
# module load foo/bar&lt;br /&gt;
&lt;br /&gt;
# Print the task id.&lt;br /&gt;
echo &amp;quot;My SLURM_ARRAY_TASK_ID: &amp;quot; $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Add lines here to run your computations, e.g.&lt;br /&gt;
# ./my_program &amp;lt;input.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Placeholder %A will be replaced by the master job id, %a will be replaced by the array task id.&lt;br /&gt;
&lt;br /&gt;
* Every sub job in an array job will have its own unique environment variable $SLURM_JOB_ID. Environment variable $SLURM_ARRAY_JOB_ID  will be set to the first job array index value for all tasks.&lt;br /&gt;
&lt;br /&gt;
* The remaining options in the sample job script are the same as the options used in other, non-array jobs. In the example above, we are requesting that each array task be allocated 1 CPU (--ntasks=1) and 4 GB of memory (--mem=4G) for up to one hour (--time=01:00:00).&lt;br /&gt;
&lt;br /&gt;
* More information: https://slurm.schedmd.com/job_array.html&lt;br /&gt;
&lt;br /&gt;
== How to delay the start of a job? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/sbatch.html#OPT_begin -b] (or [https://slurm.schedmd.com/sbatch.html#OPT_begin --begin]) option in order to defer the allocation of the job until the specified time.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch --begin=20:00 ...               # job can start after 8 p.m. &lt;br /&gt;
sbatch --begin=now+1hour ...           # job can start 1 hour after submission&lt;br /&gt;
sbatch --begin=teatime ...             # job can start at teatime (4 p.m.)&lt;br /&gt;
sbatch --begin=2023-12-24T20:00:00 ... # job can start after specified date/time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to submit dependency (chain) jobs? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/sbatch.html#OPT_dependency -d] (or [https://slurm.schedmd.com/sbatch.html#OPT_dependency --dependency]) option, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch -d afterany:123456 ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will defer the submitted job until the specified job 123456 has terminated.&lt;br /&gt;
&lt;br /&gt;
Slurm supports a number of different dependency types, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-d after:123456      # job can begin execution after the specified job has begun execution&lt;br /&gt;
-d afterany:123456   # job can begin execution after the specified job has finished&lt;br /&gt;
-d afternotok:123456 # job can begin execution after the specified job has failed (exit code not equal zero)&lt;br /&gt;
-d afterok:123456    # job can begin execution after the specified job has successfully finished (exit code zero)&lt;br /&gt;
-d singleton         # job can begin execution after any previously job with the same job name and user have finished&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Multiple jobs can be specified by separating their job ids by colon characters (:), e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; $ sbatch -d afterany:123456:123457 ... &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will defer the submitted job until the specified jobs 123456 and 123457 have both finished.&lt;br /&gt;
&lt;br /&gt;
== How to deal with invalid job dependencies? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/sbatch.html#OPT_kill-on-invalid-dep --kill-on-invalid-dep=yes] option in order to automatically terminate jobs which can never run due to invalid dependencies. By default the job stays pending with reason &#039;DependencyNeverSatisfied&#039; to allow review and appropriate action by the user.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; A job dependency may also become invalid if a job has been submitted with &#039;-d afterok:&amp;lt;jobid&amp;gt;&#039; but the specified dependency job has failed, e.g. because it timed out (i.e. exceeded its wall time limit).&lt;br /&gt;
&lt;br /&gt;
== How to submit an MPI batch job? ==&lt;br /&gt;
&lt;br /&gt;
Suggested reading: https://slurm.schedmd.com/mpi_guide.html&lt;br /&gt;
&lt;br /&gt;
Sample job script template for an MPI job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Allocate two nodes&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
# Number of program instances to be executed&lt;br /&gt;
#SBATCH --ntasks-per-node=48&lt;br /&gt;
# Allocate 32 GB memory per node&lt;br /&gt;
#SBATCH --mem=32gb&lt;br /&gt;
# Maximum run time of job&lt;br /&gt;
#SBATCH --time=1:00:00&lt;br /&gt;
# Give job a reasonable name&lt;br /&gt;
#SBATCH --job-name=mpi_job&lt;br /&gt;
# File name for standard output (%j will be replaced by job id)&lt;br /&gt;
#SBATCH --output=mpi_job-%j.out&lt;br /&gt;
# File name for error output&lt;br /&gt;
#SBATCH --error=mpi_job-%j.err&lt;br /&gt;
&lt;br /&gt;
# Add lines here to run your computations, e.g.&lt;br /&gt;
#&lt;br /&gt;
# Option 1: Lauch MPI tasks by using mpirun&lt;br /&gt;
#&lt;br /&gt;
# for OpenMPI and GNU compiler:&lt;br /&gt;
#&lt;br /&gt;
# module load compiler/gnu&lt;br /&gt;
# module load mpi/openmpi&lt;br /&gt;
# mpirun ./my_mpi_program&lt;br /&gt;
#&lt;br /&gt;
# for Intel MPI and Intel complier:&lt;br /&gt;
#&lt;br /&gt;
# module load compiler/intel&lt;br /&gt;
# module load mpi/impi&lt;br /&gt;
# mpirun ./my_mpi_program&lt;br /&gt;
#&lt;br /&gt;
# Option 2: Launch MPI tasks by using srun&lt;br /&gt;
#&lt;br /&gt;
# for OpenMPI and GNU compiler:&lt;br /&gt;
#&lt;br /&gt;
# module load compiler/gnu&lt;br /&gt;
# module load mpi/openmpi&lt;br /&gt;
# srun ./my_mpi_program&lt;br /&gt;
#&lt;br /&gt;
# for Intel MPI and Intel compiler:&lt;br /&gt;
#&lt;br /&gt;
module load compiler/intel&lt;br /&gt;
module load mpi/impi&lt;br /&gt;
srun  ./my_mpi_program&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample code for MPI program: [[Media:Hello_mpi.c | Hello_mpi.c]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* SchedMD recommends to use srun and many (most?) sites do so as well. The rationale is that srun is more tightly integrated with the scheduler and provides more consistent and reliable resource tracking and accounting for individual jobs and job steps. mpirun may behave differently for different MPI implementations and versions. There are reports that claim &amp;quot;strange behavior&amp;quot; of mpirun especially when using task affinity and core binding. Using srun is supposed to resolve these issues and is therefore highly recommended.&lt;br /&gt;
* Do not run batch jobs that launch a large number (hundreds or thousands) short running (few minutes or less) MPI programs, e.g. from a shell loop. Every single MPI invocation does generate its own job step and sends remote procedure calls to the Slurm controller server. This can result in degradation of performance for both, Slurm and the application, especially if many of that jobs happen to run at the same time. Jobs of that kind can even get stuck without showing any further activity until hitting the wall time limit. For high throughput computing (e.g. processing a large number of files with every single task running independently from each other and very shortly), consider a more appropriate parallelization paradigm that invokes independent serial (non-MPI) processes in parallel at the same time. This approach is sometimes referred to as &amp;quot;[https://en.wikipedia.org/wiki/Embarrassingly_parallel pleasingly parallel]&amp;quot; workload. GNU Parallel is a shell tool that facilitates executing serial tasks in parallel. On JUSTUS 2 this tool is available as a software module &amp;quot;system/parallel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== How to submit a hybrid MPI/OpenMP job? ==&lt;br /&gt;
&lt;br /&gt;
Sample job script template for an hybrid job:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Number of nodes to allocate&lt;br /&gt;
#SBATCH --nodes=4&lt;br /&gt;
# Number of MPI instances (ranks) to be executed per node&lt;br /&gt;
#SBATCH --ntasks-per-node=2&lt;br /&gt;
# Number of threads per MPI instance&lt;br /&gt;
#SBATCH --cpus-per-task=24&lt;br /&gt;
# Allocate 8 GB memory per node&lt;br /&gt;
#SBATCH --mem=8gb&lt;br /&gt;
# Maximum run time of job&lt;br /&gt;
#SBATCH --time=1:00:00&lt;br /&gt;
# Give job a reasonable name&lt;br /&gt;
#SBATCH --job-name=hybrid_job&lt;br /&gt;
# File name for standard output (%j will be replaced by job id)&lt;br /&gt;
#SBATCH --output=hybrid_job-%j.out&lt;br /&gt;
# File name for error output&lt;br /&gt;
#SBATCH --error=hybrid_job-%j.err&lt;br /&gt;
&lt;br /&gt;
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}&lt;br /&gt;
export MKL_NUM_THREADS=${SLURM_CPUS_PER_TASK}&lt;br /&gt;
&lt;br /&gt;
module load compiler/intel&lt;br /&gt;
module load mpi/impi&lt;br /&gt;
srun ./my_hybrid_program&lt;br /&gt;
&lt;br /&gt;
# or:&lt;br /&gt;
# mpirun ./my_hybrid_program&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample code for hybrid program: [[Media:Hello_hybrid.c | Hello_hybrid.c]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* $SLURM_CPUS_PER_TASK is only set if the &#039;--cpus-per-task&#039; option is specified.&lt;br /&gt;
&lt;br /&gt;
== How to request specific node(s) at job submission? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/sbatch.html#OPT_nodelist -w] (or [https://slurm.schedmd.com/sbatch.html#OPT_nodelist --nodelist]) option, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch -w &amp;lt;node1&amp;gt;,&amp;lt;node2&amp;gt; ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also see [https://slurm.schedmd.com/sbatch.html#OPT_nodefile -F] (or [https://slurm.schedmd.com/sbatch.html#OPT_nodefile --nodefile]) option.&lt;br /&gt;
&lt;br /&gt;
== How to exclude specific nodes from job? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/sbatch.html#OPT_exclude -x] (or [https://slurm.schedmd.com/sbatch.html#OPT_exclude --exclude]) option, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch -x &amp;lt;node1&amp;gt;,&amp;lt;node2&amp;gt; ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to get exclusive jobs? ==&lt;br /&gt;
&lt;br /&gt;
Use &#039;--exclusive&#039; option on job submission. This makes sure that there will be no other jobs running on your nodes. Very useful for benchmarking!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* --exclusive option does &#039;&#039;&#039;not&#039;&#039;&#039; mean that you automatically get full access to all the resources which the node might provide without explicitly requesting them.&lt;br /&gt;
&lt;br /&gt;
== How to avoid sharing nodes with other users? ==&lt;br /&gt;
&lt;br /&gt;
Use &#039;--exclusive=user&#039; option on job submission. This will still allow multiple jobs of one and the same user on the nodes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Note:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Depending on configuration, exclusive=user may (and probably will) be the default node access policy on JUSTUS 2.&lt;br /&gt;
&lt;br /&gt;
==  How to submit batch job without job script? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/sbatch.html#OPT_wrap --wrap] option.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sbatch --nodes=2 --ntasks-per-node=16 --wrap &amp;quot;sleep 600&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; May be useful for testing purposes.&lt;br /&gt;
&lt;br /&gt;
= JOB MONITORING AND CONTROL =&lt;br /&gt;
&lt;br /&gt;
== How to prevent Slurm performance degradation? ==&lt;br /&gt;
&lt;br /&gt;
Almost every invocation of a Slurm client command (e.g. squeue, sacct, sprio or sshare) sends a remote procedure call (RPC) to the Slurm control daemon and/or database. &lt;br /&gt;
If enough remote procedure calls come in at once, this can result in a degradation of performance of the Slurm services for all users, possibly resulting in a denial of service. &lt;br /&gt;
&lt;br /&gt;
Therefore, &#039;&#039;&#039;do not run Slurm client commands that send remote procedure calls from loops in shell scripts or other programs&#039;&#039;&#039; (such as &#039;watch squeue&#039;). Always ensure to limit calls to squeue, sstat, sacct etc. to the minimum necessary for the information you are trying to gather. &lt;br /&gt;
&lt;br /&gt;
Slurm does collect RPC counts and timing statistics by message type and user for diagnostic purposes.&lt;br /&gt;
&lt;br /&gt;
== How to view information about submitted jobs? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/squeue.html squeue] command, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue                  # all jobs owned by user (all jobs owned by all users for admins)&lt;br /&gt;
$ squeue --me             # all jobs owned by user (same as squeue for regular users)&lt;br /&gt;
$ squeue -u &amp;lt;username&amp;gt;    # jobs of specific user&lt;br /&gt;
$ squeue -t PENDING       # pending jobs only&lt;br /&gt;
$ squeue -t RUNNING       # running jobs only&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The output format of [https://slurm.schedmd.com/squeue.html squeue] (and most other Slurm commands) is highly configurable to your needs. Look for the --format or --Format options.&lt;br /&gt;
&lt;br /&gt;
* Every invocation of squeue sends a remote procedure call to the Slurm database server. &#039;&#039;&#039;Do not run squeue or other Slurm client commands from loops in shell scripts or other programs&#039;&#039;&#039; as this can result in a degradation of performance. Ensure that programs limit calls to squeue to the minimum necessary for the information you are trying to gather.&lt;br /&gt;
&lt;br /&gt;
== How to cancel jobs? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/scancel.html scancel] command, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scancel &amp;lt;jobid&amp;gt;          # cancel specific job&lt;br /&gt;
$ scancel &amp;lt;jobid&amp;gt;_&amp;lt;index&amp;gt;  # cancel indexed job in a job array&lt;br /&gt;
$ scancel -u &amp;lt;username&amp;gt;    # cancel all jobs of specific user&lt;br /&gt;
$ scancel -u &amp;lt;username&amp;gt; -i # cancel all jobs of specific user interactively&lt;br /&gt;
$ scancel -t PENDING       # cancel pending jobs&lt;br /&gt;
$ scancel -t RUNNING       # cancel running jobs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to show job script of a running job? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/scontrol.html scontrol] command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol write batch_script &amp;lt;job_id&amp;gt; &amp;lt;file&amp;gt;&lt;br /&gt;
$ scontrol write batch_script &amp;lt;job_id&amp;gt; -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If file name is omitted default file name will be slurm-&amp;lt;job_id&amp;gt;.sh&lt;br /&gt;
* If file name is - (i.e. dash) job script will be written to stdout.&lt;br /&gt;
&lt;br /&gt;
== How to get estimated start time of a job? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ squeue --start&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039; &lt;br /&gt;
* Estimated start times are dynamic and can change at any moment. Exact start times of individual jobs are usually unpredictable.&lt;br /&gt;
* Slurm will report N/A for the start time estimate if nodes are not currently being reserved by the scheduler for the job to run on.&lt;br /&gt;
&lt;br /&gt;
== How to show remaining walltime of running jobs? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/squeue.html squeue] with format option &amp;quot;%L&amp;quot;, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; $ squeue -t r -o &amp;quot;%u %i %L&amp;quot; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to check priority of jobs? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/squeue.html squeue] with format options &amp;quot;%Q&amp;quot; and/or &amp;quot;%p&amp;quot;, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue -o &amp;quot;%8i %8u %15a %.10r %.10L %.5D %.10Q&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/sprio.html sprio] command to display the priority components (age/fairshare/...) for each job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sprio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use &amp;quot;[https://slurm.schedmd.com/sshare.html sshare] command for listing the shares of associations, e.g. accounts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sshare&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to prevent (hold) jobs from being scheduled for execution? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol hold &amp;lt;job_id&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to unhold job? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol release &amp;lt;job_id&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to suspend a running job? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol suspend &amp;lt;job_id&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to resume a suspended job? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol resume &amp;lt;job_id&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to requeue (cancel and resubmit) a particular job? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol requeue &amp;lt;job_id&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to monitor resource usage of running job(s)? ==&lt;br /&gt;
&lt;br /&gt;
Use &amp;quot;[https://slurm.schedmd.com/sstat.html sstat] command.&lt;br /&gt;
&lt;br /&gt;
&#039;sstat -e&#039; command shows a list of fields that can be specified with the &#039;--format&#039; option.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sstat --format=JobId,AveCPU,AveRSS,MaxRSS -j &amp;lt;jobid&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will show average CPU time, average and maximum memory consumption of all tasks in the running job.&lt;br /&gt;
Ideally, average CPU time equals the number of cores allocated for the job multiplied by the current run time of the job. &lt;br /&gt;
The maximum memory consumption gives an estimate of the peak amount of memory actually needed so far. This can be compared with the amount of memory requested for the job. Over-requesting memory can result in significant waste of compute resources.       &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Users can also ssh into compute nodes that they have one or more running jobs on. Once logged in, they can use standard Linux process monitoring tools like ps, (h)top, free, vmstat, iostat, du, ...&lt;br /&gt;
&lt;br /&gt;
* Users can also attach an interactive shell under an already allocated job by running the following command: &amp;lt;pre&amp;gt;srun --jobid &amp;lt;job&amp;gt; --overlap --pty /bin/bash&amp;lt;/pre&amp;gt; Once logged in, they can again use standard Linux process monitoring tools like ps, (h)top, free, vmstat, iostat, du, ... For a single node job the user does not even need to know the node that the job is running on. For a multinode job, the user can still use &#039;-w &amp;lt;node&amp;gt;&#039; option to specify a specific node.&lt;br /&gt;
&lt;br /&gt;
== How to get detailed job information ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show job 1234  # For job id 1234&lt;br /&gt;
$ scontrol show jobs      # For all jobs&lt;br /&gt;
$ scontrol -o show jobs   # One line per job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to modify a pending/running job? ==&lt;br /&gt;
&lt;br /&gt;
Use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scontrol update JobId=&amp;lt;jobid&amp;gt; ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g.: &amp;lt;pre&amp;gt;$ scontrol update JobId=42 TimeLimit=7-0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will modify the time limit of the job to 7 days.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Update requests for &#039;&#039;&#039;running&#039;&#039;&#039; jobs are mostly restricted to Slurm administrators. In particular, only an administrator can increase the TimeLimit of a job.&lt;br /&gt;
&lt;br /&gt;
== How to show accounting data of completed job(s)? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/sacct.html sacct] command.&lt;br /&gt;
&lt;br /&gt;
&#039;sacct -e&#039; command shows a list of fields that can be&lt;br /&gt;
specified with the &#039;--format&#039; option.&lt;br /&gt;
&lt;br /&gt;
== How to retrieve job history and accounting? ==&lt;br /&gt;
&lt;br /&gt;
For a specific job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacct -j &amp;lt;jobid&amp;gt; --format=User,JobID,Jobname,partition,state,time,start,end,elapsed,MaxRss,MaxVMSize,nnodes,ncpus,nodelist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a specific user:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacct -u &amp;lt;user&amp;gt; --format=User,JobID,Jobname,partition,state,time,start,end,elapsed,MaxRss,MaxVMSize,nnodes,ncpus,nodelist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Default time window is the current day.&lt;br /&gt;
&lt;br /&gt;
Starting from a specific date:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacct -u &amp;lt;user&amp;gt; -S 2020-01-15 --format=User,JobID,Jobname,partition,state,time,start,end,elapsed,MaxRss,MaxVMSize,nnodes,ncpus,nodelist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Within a time window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacct -u &amp;lt;user&amp;gt; -S 2020-01-15 -E 2020-01-31 --format=User,JobID,Jobname,partition,state,time,start,end,elapsed,MaxRss,MaxVMSize,nnodes,ncpus,nodelist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
You can also set the environment variable $SACCT_FORMAT to specify the default format. To get a general idea of how efficiently a job utilized its resources, the following format can be used:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export SACCT_FORMAT=&amp;quot;JobID,JobName,Elapsed,NCPUs,TotalCPU,CPUTime,ReqMem,MaxRSS,MaxDiskRead,MaxDiskWrite,State,ExitCode&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To find how efficiently the CPUs were used, divide TotalCPU by CPUTime. To find how efficiently memory were used, devide MaxRSS by ReqMem. But be aware that sacct memory usage measurement doesn&#039;t catch very rapid memory spikes. If your job got killed for running out of memory, it &#039;&#039;&#039;did run out of memory&#039;&#039;&#039; even if sacct reports a lower memory usage than would trigger an out-of-memory-kill. A job that reads or writes excessively to disk might be bogged down significantly by I/O operations.&lt;br /&gt;
&lt;br /&gt;
== How to get efficiency information of completed job(s)? ==&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;pre&amp;gt;$ seff &amp;lt;jobid&amp;gt; &amp;lt;/pre&amp;gt; command for some brief information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; It is good practice to have a look at the efficiency of your job(s) on completion &#039;&#039;&#039;and we expect you to do so&#039;&#039;&#039;. This way you can improve your job specifications in the future.&lt;br /&gt;
&lt;br /&gt;
== How to get complete field values from sstat and sacct commands? ==&lt;br /&gt;
&lt;br /&gt;
When using the [https://slurm.schedmd.com/sacct.html#OPT_format --format] option for listing various fields you can put a %NUMBER afterwards to specify how many characters should be printed.&lt;br /&gt;
&lt;br /&gt;
E.g. &#039;--format=User%30&#039; will print 30 characters for the user name (right justified).  A %-30 will print 30 characters left justified.&lt;br /&gt;
&lt;br /&gt;
sstat and sacct also provide the &#039;--parsable&#039; and &#039;--parsable2&#039; option to always print full field values delimited with a pipe &#039;|&#039; character by default.&lt;br /&gt;
The delimiting character can be specified by using the &#039;--delimiter&#039; option, e.g. &#039;--delimiter=&amp;quot;,&amp;quot;&#039; for comma separated values.&lt;br /&gt;
&lt;br /&gt;
== How to retrieve job records for all jobs running/pending at a certain point in time? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/sacct.html sacct] with [https://slurm.schedmd.com/sacct.html#OPT_state -s &amp;lt;state&amp;gt;] and [https://slurm.schedmd.com/sacct.html#OPT_starttime -S &amp;lt;start time&amp;gt;] options, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$  sacct -n -a -X -S 2021-04-01T00:00:00 -s R -o JobID,User%15,Account%10,NCPUS,NNodes,NodeList%1500&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; When specifying the state &amp;quot;-s &amp;lt;state&amp;gt;&amp;quot; &#039;&#039;&#039;and&#039;&#039;&#039; the start time &amp;quot;-S &amp;lt;start time&amp;gt;&amp;quot;, the default &lt;br /&gt;
time window will be set to end time &amp;quot;-E&amp;quot; equal to start time. Thus, you will get a snapshot of all running/pending &lt;br /&gt;
jobs at the instance given by &amp;quot;-S &amp;lt;start time&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== How to get a parsable list of hostnames from $SLURM_JOB_NODELIST? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show hostnames $SLURM_JOB_NODELIST&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ADMINISTRATION =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Most commands in this section are restricted to system administrators.&lt;br /&gt;
&lt;br /&gt;
== How to stop Slurm from scheduling jobs? ==&lt;br /&gt;
&lt;br /&gt;
You can stop Slurm from scheduling jobs on a per partition basis by&lt;br /&gt;
setting that partition&#039;s state to DOWN. Set its state UP to resume&lt;br /&gt;
scheduling. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol update PartitionName=foo State=DOWN&lt;br /&gt;
$ scontrol update PartitionName=foo State=UP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to print actual hardware configuration of a node? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ slurmd -C   # print hardware configuration plus uptime&lt;br /&gt;
$ slurmd -G   # print generic resource configuration&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to reboot (all) nodes as soon as they become idle? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol reboot ASAP nextstate=RESUME &amp;lt;node1&amp;gt;,&amp;lt;node2&amp;gt;  # specific nodes&lt;br /&gt;
$ scontrol reboot ASAP nextstate=RESUME ALL              # all nodes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to cancel pending reboot of nodes? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol cancel_reboot &amp;lt;node1&amp;gt;,&amp;lt;node2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to check current node status? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show node &amp;lt;node&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to instruct all Slurm daemons to re-read the configuration file ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol reconfigure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to prevent a user from submitting new jobs? ==&lt;br /&gt;
&lt;br /&gt;
Use the following [https://slurm.schedmd.com/sacctmgr.html sacctmgr] command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr update user &amp;lt;username&amp;gt; set maxsubmitjobs=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Job submission is then rejected with the following message:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch job.slurm&lt;br /&gt;
sbatch: error: AssocMaxSubmitJobLimit&lt;br /&gt;
sbatch: error: Batch job submission failed: Job violates accounting/QOS policy (job submit limit, user&#039;s size and/or time limits)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Use the following command to release the limit:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr update user &amp;lt;username&amp;gt; set maxsubmitjobs=-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to drain node(s)? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol update NodeName=&amp;lt;node1&amp;gt;,&amp;lt;node2&amp;gt; State=DRAIN Reason=&amp;quot;Some Reason&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Reason is mandatory.&lt;br /&gt;
&lt;br /&gt;
* Do &#039;&#039;&#039;not&#039;&#039;&#039; just set state DOWN to drain nodes. This will kill any active jobs that may run on that nodes.&lt;br /&gt;
&lt;br /&gt;
== How to list reason for nodes being drained or down? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sinfo -R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to resume node state? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol update NodeName=&amp;lt;node1&amp;gt;,&amp;lt;node2&amp;gt; State=RESUME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to create a reservation on nodes? ==&lt;br /&gt;
&lt;br /&gt;
Suggested reading: https://slurm.schedmd.com/reservations.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol create reservation user=root starttime=now duration=UNLIMITED flags=maint,ignore_jobs nodes=ALL&lt;br /&gt;
$ scontrol create reservation user=root starttime=2020-12-24T17:00 duration=12:00:00 flags=maint,ignore_jobs nodes=&amp;lt;node1&amp;gt;,&amp;lt;node2&amp;gt;&lt;br /&gt;
$ scontrol show reservation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Add &amp;quot;FLEX&amp;quot; flag to allow jobs that qualify for the reservation to start before the reservation begins (and continue after it starts). &lt;br /&gt;
Add &amp;quot;MAGNETIC&amp;quot; flag to attract jobs that qualify for the reservation to run in that reservation without having requested it at submit time.&lt;br /&gt;
&lt;br /&gt;
== How to create a floating reservation on nodes? ==&lt;br /&gt;
&lt;br /&gt;
Use the flag &amp;quot;TIME_FLOAT&amp;quot; and a start time that is relative to the current time (use the keyword &amp;quot;now&amp;quot;).&lt;br /&gt;
In the example below, the nodes are prevented from starting any jobs exceeding a walltime of 2 days.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol create reservation user=root starttime=now+2days duration=UNLIMITED flags=maint,ignore_jobs,time_float nodes=&amp;lt;node1&amp;gt;,&amp;lt;node2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Floating reservation are not intended to run jobs, but to prevent long running jobs from being initiated on specific nodes. Attempts by users to make use of a floating reservation will be rejected. When ready to perform the maintenance, place the nodes in DRAIN state and delete the reservation.&lt;br /&gt;
&lt;br /&gt;
== How to use a reservation? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch --reservation=foo_6 ... script.slurm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to delete a reservation? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol delete ReservationName=foo_6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to get node oriented information similar to &#039;mdiag -n&#039;? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sinfo -N -l&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fields can be individually customized. See [https://slurm.schedmd.com/sinfo.html sinfo] man page. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sinfo -N --format=&amp;quot;%8N %12P %.4C %.8O %.6m %.6e %.8T %.20E&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NODELIST PARTITION    CPUS CPU_LOAD MEMORY FREE_M    STATE               REASON&lt;br /&gt;
n0001    standard*    0/16     0.01 128000 120445     idle                 none&lt;br /&gt;
n0002    standard*    0/16     0.01 128000 120438     idle                 none&lt;br /&gt;
n0003    standard*    0/0/      N/A 128000    N/A    down*       Not responding&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to get node oriented information similar to &#039;pbsnodes&#039;? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show nodes                     # One paragraph per node (all nodes)&lt;br /&gt;
$ scontrol show nodes &amp;lt;node1&amp;gt;,&amp;lt;node2&amp;gt;     # One paragraph per node (specified nodes) &lt;br /&gt;
$ scontrol -o show nodes                  # One line per node (all nodes)&lt;br /&gt;
$ scontrol -o show nodes &amp;lt;node1&amp;gt;,&amp;lt;node2&amp;gt;  # One line per node (specified nodes)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to update multiple jobs of a user with a single scontrol command? ==&lt;br /&gt;
&lt;br /&gt;
Not possible. But you can e.g. use squeue to build the script taking&lt;br /&gt;
advantage of its filtering and formatting options.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue -tpd -h -o &amp;quot;scontrol update jobid=%i priority=1000&amp;quot; &amp;gt;my.script&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also identify the list of jobs and add them to the JobID all at once, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol update JobID=123 qos=reallylargeqos&lt;br /&gt;
$ scontrol update JobID=123,456,789 qos=reallylargeqos&lt;br /&gt;
$ scontrol update JobID=[123-400],[500-600] qos=reallylargeqos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to use the JobName, if all the jobs have the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol update JobName=&amp;quot;foobar&amp;quot; UserID=johndoe qos=reallylargeqos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, Slurm does not allow the UserID filter alone.&lt;br /&gt;
&lt;br /&gt;
== How to create a new account? ==&lt;br /&gt;
&lt;br /&gt;
Add account at top level in association tree:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr add account &amp;lt;accountname&amp;gt; Cluster=justus Description=&amp;quot;Account description&amp;quot; Organization=&amp;quot;none&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add account as child of some parent account in association tree:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr add account &amp;lt;accountname&amp;gt; parent=&amp;lt;parent_accountname&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to move account to another parent? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr modify account name=&amp;lt;accountname&amp;gt; set parent=&amp;lt;new_parent_accountname&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to delete an account? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr delete account name=&amp;lt;accountname&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to add a new user? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr add user &amp;lt;username&amp;gt; DefaultAccount=&amp;lt;accountname&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to add/remove users from an account? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr add user &amp;lt;username&amp;gt; account=&amp;lt;accountname&amp;gt;                  # Add user to account&lt;br /&gt;
$ sacctmgr add user &amp;lt;username&amp;gt; account=&amp;lt;accountname2&amp;gt;                 # Add user to a second account&lt;br /&gt;
$ sacctmgr remove user &amp;lt;username&amp;gt; where account=&amp;lt;accountname&amp;gt;         # Remove user from this account&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to change default account of a user? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &lt;br /&gt;
$ sacctmgr modify user where user=&amp;lt;username&amp;gt; set DefaultAccount=&amp;lt;default_account&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The user must already be associated with the account you want to set as default.&lt;br /&gt;
&lt;br /&gt;
== How to show account information? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr show assoc&lt;br /&gt;
$ sacctmgr show assoc tree&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to implement user resource throttling policies? ==&lt;br /&gt;
&lt;br /&gt;
Quoting from https://bugs.schedmd.com/show_bug.cgi?id=3600#c4&lt;br /&gt;
&lt;br /&gt;
 With Slurm, the associations are meant to establish base limits on the&lt;br /&gt;
 defined partitions, accounts and users. Because limits propagate down&lt;br /&gt;
 through the association tree, you only need to define limits at a high&lt;br /&gt;
 level and those limits will be applied to all partitions, accounts and&lt;br /&gt;
 users that are below it (parent to child). You can also override those&lt;br /&gt;
 high level (parent) limits by explicitly setting different limits at&lt;br /&gt;
 any lower level (on the child). So using the association tree is the&lt;br /&gt;
 best way to get some base limits applied that you want for most cases. &lt;br /&gt;
 QOS&#039;s are meant to override any of those base limits for exceptional&lt;br /&gt;
 cases. Like Maui, you can use QOS&#039;s to set a different priority.&lt;br /&gt;
 Again, the QOS would be overriding the base priority that could be set&lt;br /&gt;
 in the associations.&lt;br /&gt;
&lt;br /&gt;
== How to set a resource limit for an individual user? ==&lt;br /&gt;
&lt;br /&gt;
Suggested reading: https://slurm.schedmd.com/resource_limits.html&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr modify user &amp;lt;username&amp;gt; set maxjobs=1            # Limit maximum number of running jobs for user&lt;br /&gt;
$ sacctmgr list assoc user=&amp;lt;username&amp;gt; format=user,maxjobs  # Show that limit&lt;br /&gt;
$ sacctmgr modify user &amp;lt;username&amp;gt; set maxjobs=-1           # Remove that limit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to retrieve historical resource usage for a specific user or account? ==&lt;br /&gt;
&lt;br /&gt;
Use [https://slurm.schedmd.com/sreport.html sreport] command.&lt;br /&gt;
&lt;br /&gt;
Examples: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sreport cluster UserUtilizationByAccount Start=2021-01-01 End=2021-12-31 -t Hours user=&amp;lt;username&amp;gt;    # Report cluster utilization of given user broken down by accounts&lt;br /&gt;
$ sreport cluster AccountUtilizationByUser Start=2021-01-01 End=2021-12-31 -t Hours account=&amp;lt;account&amp;gt;  # Report cluster utilization of given account broken down by users    &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039; &lt;br /&gt;
* By default CPU resources will be reported. Use &#039;-T&#039; option for other trackable resources, e.g. &#039;-T cpu,mem,gres/gpu,gres/scratch&#039;.&lt;br /&gt;
* On JUSTUS 2 registered compute projects (&amp;quot;Rechenvorhaben&amp;quot;) are uniquely mapped to Slurm accounts of the same name. Thus, &#039;AccountUtilizationByUser&#039; can also be used to report the aggregated cluster utilization of compute projects.&lt;br /&gt;
* Can be executed by regular users as well in which case Slurm will only report their own usage records (but along with the total usage of the associated account in the case of &#039;AccountUtilizationByUser&#039;).&lt;br /&gt;
&lt;br /&gt;
== How to fix/reset a user&#039;s RawUsage value? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr modify user &amp;lt;username&amp;gt; where Account=&amp;lt;account&amp;gt; set RawUsage=&amp;lt;number&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to create/modify/delete QOSes? ==&lt;br /&gt;
&lt;br /&gt;
Suggested reading: https://slurm.schedmd.com/qos.html&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr show qos                                      # Show existing QOSes&lt;br /&gt;
$ sacctmgr add qos verylong                              # Create new QOS verylong&lt;br /&gt;
$ sacctmgr modify qos verylong set MaxWall=28-00:00:00   # Set maximum walltime limit&lt;br /&gt;
$ sacctmgr modify qos verylong set MaxTRESPerUser=cpu=4  # Set maximum maximum number of CPUS a user can allocate at a given time&lt;br /&gt;
$ sacctmgr modify qos verylong set flags=denyonlimit     # Prevent submission if job requests exceed any limits of QOS&lt;br /&gt;
$ sacctmgr modify user &amp;lt;username&amp;gt; set qos+=verylong      # Add a QOS to a user account&lt;br /&gt;
$ sacctmgr modify user &amp;lt;username&amp;gt; set qos-=verylong      # Remove a QOS from a user account&lt;br /&gt;
$ sacctmgr delete qos verylong                           # Delete that QOS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to find (and fix) runaway jobs? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sacctmgr show runaway&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039; &lt;br /&gt;
* Runaway jobs are orphaned jobs that don&#039;t exist in the Slurm controller but have a start and no end time in the Slurm data base. Runaway jobs mess with accounting and affects new jobs of users who have too many runaway jobs. &lt;br /&gt;
* If there are jobs in this state this command will also provide an option to fix them. This will set the end time for each job to the latest out of the start, eligible, or submit times, and set the state to completed.&lt;br /&gt;
&lt;br /&gt;
== How to show a history of database transactions? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sacctmgr list transactions&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Useful to get timestamps for when a user/account/qos has been created/modified/removed etc.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Development/VS_Code&amp;diff=16237</id>
		<title>Development/VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Development/VS_Code&amp;diff=16237"/>
		<updated>2026-07-27T17:05:26Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: added kill command for VS Code Server&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:vscode.png|thumb|Visual Studio Code, Source: https://code.visualstudio.com/|450px]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Microsoft/vscode Visual Studio Code] (VS Code) is an open source source-code editor from Microsoft. It has become one of the most popular IDEs according to a [https://survey.stackoverflow.co/2024/technology#1-integrated-development-environment stackoverflow survey]. The functionality of VS Code can easily be extended by installing extensions. These extensions allow for almost arbitrary &#039;&#039;&#039;language support&#039;&#039;&#039;, &#039;&#039;&#039;debugging&#039;&#039;&#039; or &#039;&#039;&#039;remote development&#039;&#039;&#039;. You can install VS Code locally and use it for remote development.&lt;br /&gt;
&lt;br /&gt;
== Visual Studio Code  ==&lt;br /&gt;
Visual Studio Code (VS Code) is a lightweight, extensible code editor from Microsoft that supports many programming languages and features like debugging, and integrated Git. It offers a rich extension marketplace to add language support, themes, and tools tailored to your workflow. VS Code runs on Windows, macOS, and Linux and is popular for its speed, customizability, and strong community ecosystem.&lt;br /&gt;
&lt;br /&gt;
=== Using AI agents ===&lt;br /&gt;
When deploying AI agents on the bwHPC clusters, users must exercise extreme caution and maintain full oversight of the agent&#039;s activities. You are fully responsible for all actions initiated by an agent, including any security breaches or system disruptions it may cause. It is mandatory to strictly monitor resource usage on login nodes, as these are shared resources intended only for lightweight tasks. Any agent found consuming excessive CPU or memory on a login node will be terminated immediately to ensure stability for other users. To comply with usage policies, all AI-driven workloads which generate heavy load must be submitted to the Slurm batch queues rather than running directly on the login nodes.&lt;br /&gt;
&lt;br /&gt;
=== Extension: Remote-SSH ===&lt;br /&gt;
&lt;br /&gt;
In order to remotely develop and debug code at HPC facilities, you can use the [https://code.visualstudio.com/docs/remote/ssh &#039;&#039;&#039;Remote - SSH&#039;&#039;&#039; extension]. The extension allows you to connect your locally installed VS Code with the remote servers. So in contrast to using graphical IDEs within a remote desktop session (RDP, VNC), there are no negative effects like e.g. laggy reactions to your input or blurred display of fonts.&lt;br /&gt;
&lt;br /&gt;
==== Installation and Configuration ====&lt;br /&gt;
&lt;br /&gt;
[[File:vscode-extensions-button.png|vscode-extensions-button.png|30px]]&amp;lt;br&amp;gt;&lt;br /&gt;
In order to install the Remote - SSH extension, just click on the Extensions (Erweiterungen) button in the left side bar and enter “remote ssh” in the search field. Choose &#039;&#039;&#039;Remote - SSH&#039;&#039;&#039; from the occurring list and click on &#039;&#039;&#039;Install&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:vscode-remoteexplorer-button.png|vscode-remoteexplorer-button.png|30px]]&amp;lt;br&amp;gt;&lt;br /&gt;
In order to configure remote connections, open the Remote-Explorer extension. On Linux Systems, the file &amp;lt;code&amp;gt;~/.ssh/config&amp;lt;/code&amp;gt; is automatically evaluated. The targets within this file already appear in the left side bar.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:vscode-remoteexplorer-add.png|vscode-remoteexplorer-add.png|350px]]&amp;lt;br&amp;gt;&lt;br /&gt;
If there are no remote ssh targets defined within this file, you can easily add one by clicking on the + symbol. Make sure that “SSH Targets” is active in the drop down menu of the Remote-Explorer. Enter the connection details &amp;lt;code&amp;gt;&amp;amp;lt;user&amp;amp;gt;@&amp;amp;lt;server&amp;amp;gt;&amp;lt;/code&amp;gt;. You will be asked, whether the file &amp;lt;code&amp;gt;~/.ssh/config&amp;lt;/code&amp;gt; should be modified or if another config file should be used or created.&lt;br /&gt;
&lt;br /&gt;
A minimal entry within &amp;lt;code&amp;gt;~/.ssh/config&amp;lt;/code&amp;gt; in order to have a remote target to be listed there could look like this:&lt;br /&gt;
&lt;br /&gt;
 $ cat ~/.ssh/config&lt;br /&gt;
 Host uc3.scc.kit.edu&lt;br /&gt;
   HostName uc3.scc.kit.edu&lt;br /&gt;
   User xy_ab1234&lt;br /&gt;
&lt;br /&gt;
==== Connect to Login Nodes ====&lt;br /&gt;
&lt;br /&gt;
[[File:vscode-remoteexplorer-button.png|vscode-remoteexplorer-button.png|30px]]&amp;lt;br&amp;gt;&lt;br /&gt;
In order to connect to a remote SSH target, open the Remote-Explorer. Right-click a target and connect in the current or a new window. TOTP and password can be entered in the corresponding input fields that open.&lt;br /&gt;
&lt;br /&gt;
You are now logged in on the remote server. As usual, you can open a project directory with the standard key binding Ctrl+k Ctrl+o. You can now edit and debug code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attention&#039;&#039;&#039;: Please remember that you are running and debugging the code on a login node. Do not perform resource-intensive tasks. Furthermore, no GPU resources are available to you.&lt;br /&gt;
&lt;br /&gt;
Extensions, which are installed locally, are only usable on your local machine and are not automatically installed remotely. However, as soon as you open the Extensions-Explorer during a remote session, VS Code proposes to install the locally installed extensions remotely.&lt;br /&gt;
&lt;br /&gt;
==== Disconnect from Login Nodes ====&lt;br /&gt;
&lt;br /&gt;
[[File:vscode-remoteexplorer-indicator.png|images/vscode-remoteexplorer-indicator.png|200px]]&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to end your remote session, click the green box in the lower left corner. In the input box that opens, select the “Close Remote Connection” option. If you simply close your VS Code window, some server-side components of VS Code will continue to run remotely.&lt;br /&gt;
&lt;br /&gt;
If you encounter any issues with the remote connection or if you didn&#039;t end the sessions correctly, it can help to kill the VS Code Server on the host. This is done by going to the Command Palette (via the &#039;Manage&#039; wheel in the lower left corner) and executing the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; Remote-SSH: Kill VS Code Server on Host &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Access to Compute Nodes ===&lt;br /&gt;
&lt;br /&gt;
The workflow described above does not allow debugging on compute nodes that have been requested via an interactive Slurm job, for example. Debugging GPU codes is therefore also not possible, since this kind of resource is only accessible within Slurm jobs.&lt;br /&gt;
We strongly discourage using the Code Tunnel application, as it violates our access policies. In this scenario, an application running on the compute node connects to a Microsoft or GitHub server. The locally running VS Code then connects to the compute nodes via these external servers, thereby bypassing the login nodes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Access the compute nodes via VS Code and the Remote-SSH plugin is only possible, if you start a temporarily running SSH service on the compute node which listens to an unprivileged port. By tunneling this port to your local computer, you can connect VS code to it.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code-Server ==&lt;br /&gt;
&lt;br /&gt;
The application [https://github.com/cdr/code-server code-server] allows to run the server part of VS Code on any machine, it can be accessed in the web browser running on your local computer. This enables, for example, development and debugging on compute nodes.&lt;br /&gt;
Code-server runs a web server which serves on an unprivileged port. In order to connect your web browser to the remotely running code server, you have to forward this port via a SSH tunnel.&lt;br /&gt;
&lt;br /&gt;
[[File:code-server.png|thumb|code-server.png|VS Code in web browser: code-server, Source: https://github.com/cdr/code-server&amp;quot;&amp;gt;https://github.com/cdr/code-server|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Install Code-Server ===&lt;br /&gt;
&lt;br /&gt;
Code-server is pre-installed on bwUniCluster and accessible via an Lmod module:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;module load devel/code-server&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On clusters with no code-server module, the application can easily be installed with the description available on the official [https://github.com/coder/code-server GitHub page].&lt;br /&gt;
&lt;br /&gt;
=== Start Code-Server ===&lt;br /&gt;
&lt;br /&gt;
Code-server can be run on either login nodes or compute nodes. In the example shown, an interactive job is started on a GPU partition to run code-server there.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;$ salloc -p accelerated --gres=gpu:4 --time=30:00 # Start interactive job with 1 GPU&lt;br /&gt;
$ module load devel/code-server                   # Load code-server module&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
When code-server is started, it opens a web server listening on a certain port. The user has to &#039;&#039;&#039;specify the port&#039;&#039;&#039;. It can be chosen freely in the unprivileged range (above 1024). If a port is already assigned, e.g. because several users choose the same port, another port must be chosen.&lt;br /&gt;
&lt;br /&gt;
By starting code-server, you are running a web server that can be accessed by anyone logged in to the cluster. To prevent other people from gaining access to your account and data, this web server is &#039;&#039;&#039;password protected&#039;&#039;&#039;. If no variable &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; is defined, the password in the default config file &amp;lt;code&amp;gt;~/.config/code-server/config.yaml&amp;lt;/code&amp;gt; is used. If you want to define your own password, you can either change it in the config file or export the variable &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;$ PASSWORD=&amp;lt;mySecret&amp;gt; \&lt;br /&gt;
    code-server \&lt;br /&gt;
      --bind-addr 0.0.0.0:8081 \&lt;br /&gt;
      --auth password  # Start code-server on port 8081&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:#FFCCCC; width:100%;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Security implications&#039;&#039;&#039;&lt;br /&gt;
Please note that by starting &amp;lt;code&amp;gt;code-server&amp;lt;/code&amp;gt; you are running a web server that can be accessed by everyone logged in on the cluster.&amp;lt;br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;If password protection is disabled, anybody can access your account and your data.&#039;&#039;&#039;&lt;br /&gt;
* Choose a &#039;&#039;&#039;secure password&#039;&#039;&#039;!&lt;br /&gt;
* Do &#039;&#039;&#039;NOT&#039;&#039;&#039; use &amp;lt;code&amp;gt;code-server --link&amp;lt;/code&amp;gt;!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Connect to code-server ===&lt;br /&gt;
[[File:code-server-hk.png|thumb|Code-server running on GPU node.|400px]]&lt;br /&gt;
&lt;br /&gt;
As soon as code-server is running, it can be accessed in the web browser. In order to establish the connection, a SSH tunnel from your local computer to the remote server has to be created via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;$ ssh -L 8081:&amp;lt;computeNodeID&amp;gt;:8081 &amp;lt;userID&amp;gt;@&amp;lt;hostname&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
You need to enter the &amp;lt;code&amp;gt;computeNodeID&amp;lt;/code&amp;gt; of the node on which the interactive Slurm job is running. If you have started code server on a login node, just enter &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;. Now you can open http://127.0.0.1:8081 in your web browser. Possibly, you have to allow your browser to open an insecure (non-https) site. The login site looks as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:code-server-login.png|Code-server login page.|300px]]&lt;br /&gt;
&lt;br /&gt;
Enter the password from &amp;lt;code&amp;gt;~/.config/code-server/config.yaml&amp;lt;/code&amp;gt; or from the &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; variable. After clicking the “Submit” button, the familiar VS Code interface will open in your browser.&lt;br /&gt;
&lt;br /&gt;
=== End code-server session ===&lt;br /&gt;
&lt;br /&gt;
If you want to temporarily log out from your code-server session you can open the “Application Menu” in the left side bar and click on “Log out”. To &#039;&#039;&#039;terminate&#039;&#039;&#039; the code-server session, you have to cancel it in the interactive Slurm job by pressing ++ctrl+c++.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Connect to Remote Jupyter Kernel ==&lt;br /&gt;
To work with your python scripts and notebooks within VSCode while using the resources of a compute node, you can create a batch job that launches JupyterLab and connect to it via VS Code. To do so, please follow the instructions below. Any parts of the scripts that might need adjustments are marked with the keyword &amp;quot;@params&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Simple Use Case ===&lt;br /&gt;
The most basic steps are to set a password for JupyterLab, start a job which runs JupyterLab, get the connection details from the output log and connect to it locally. The following instructions explain these steps and provide an additional script that replaces the manual step of looking into the output file.&lt;br /&gt;
&lt;br /&gt;
# Load a python module and set a password on the cluster for JupyterLab:&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    module load devel/miniforge&lt;br /&gt;
    jupyter notebook --generate-config&lt;br /&gt;
    jupyter notebook password&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Define a batch script to start a JupyterLab Job. Please adjust the first part according to your needs and your specific cluster.&lt;br /&gt;
#: &amp;lt;pre&amp;gt;~/jupyterlab.slurm&amp;lt;/pre&amp;gt;&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --partition=cpu-single&lt;br /&gt;
#SBATCH --job-name=jupyterlab&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task 1&lt;br /&gt;
#SBATCH --mail-user=my_email_address #my_email_address # to use this generic version, add &amp;quot;alias my_email_address=&amp;lt;yourEmailAddress&amp;gt;&amp;quot; to the ~/.bashrc file&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# @param: change this to your preferred python or conda module&lt;br /&gt;
module load devel/miniforge&lt;br /&gt;
&lt;br /&gt;
# @param: cluster address for ssh connection&lt;br /&gt;
hostAddress=helix.bwservices.uni-heidelberg.de&lt;br /&gt;
&lt;br /&gt;
PORT=$(( ( RANDOM % 9999 )  + 1024 ))&lt;br /&gt;
jupyter lab --no-browser --ip=0.0.0.0 --port=${PORT}&lt;br /&gt;
HOSTID=$(squeue -h -o &amp;quot;%A %N %j&amp;quot; | grep jupyterlab | awk &#039;{print $2}&#039;)&lt;br /&gt;
echo &amp;quot;Connect&amp;quot;&lt;br /&gt;
echo &amp;quot;ssh -N -L ${PORT}:${HOSTID}:${PORT} ${USER}@$hostAddress&amp;quot;&lt;br /&gt;
echo &amp;quot;Job {$SLURM_JOB_ID} running on node {$SLURM_NODEID} on host {$HOSTID}.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
returned_code=$?&lt;br /&gt;
echo &amp;quot;&amp;gt; Script completed with exit code ${returned_code}&amp;quot;&lt;br /&gt;
exit ${returned_code}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Run a wrapper script to execute the batch script and extract needed information from the slurm output file. You could save it together with other utility scripts in a &amp;quot;bin&amp;quot; directory in your home folder.&lt;br /&gt;
#: &amp;lt;pre&amp;gt;./bin/run_jupyterlab_simple.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Define parameters&lt;br /&gt;
jobscript=~/jupyterlab.slurm&lt;br /&gt;
hostAddress=helix.bwservices.uni-heidelberg.de&lt;br /&gt;
&lt;br /&gt;
# Run job&lt;br /&gt;
job_id=$(sbatch $jobscript | awk &#039;{print $4}&#039;)&lt;br /&gt;
echo &amp;quot;jobid: $job_id&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Outfile name&lt;br /&gt;
slurm_out=slurm-${job_id}.out&lt;br /&gt;
&lt;br /&gt;
# Wait for output file&lt;br /&gt;
while [ ! -f $slurm_out ]; do   &lt;br /&gt;
    sleep 2; &lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# Wait until url is written in output file&lt;br /&gt;
while [ -z ${url} ]; do   &lt;br /&gt;
    sleep 1; &lt;br /&gt;
    url=$(grep -o &#039;http[^ ]*&#039; $slurm_out | head -n 1); &lt;br /&gt;
    done&lt;br /&gt;
&lt;br /&gt;
# Extract hostID and port from output. The pattern assumes a node name with a length of 6 characters and a port with a length of 3, 4 or 5 numbers.&lt;br /&gt;
url_pattern=&amp;quot;http://([a-z0-9]{6}):([0-9]{3,5})/lab&amp;quot;&lt;br /&gt;
if [[ $url =~ $url_pattern ]]; then &lt;br /&gt;
    hostID=${BASH_REMATCH[1]}&lt;br /&gt;
    port=${BASH_REMATCH[2]}&lt;br /&gt;
    echo &amp;quot;To connect with the JupyterLab kernel, please enter the following into your local commandline: &amp;quot;&lt;br /&gt;
    echo &amp;quot;ssh -N -L $port:$hostID:$port ${USER}@$hostAddress&amp;quot;; &lt;br /&gt;
    echo &amp;quot;&amp;quot;&lt;br /&gt;
    echo &amp;quot;Note: It is normal that the ssh command doesn&#039;t end after providing the credentials. Ending the command would mean ending the local connection to the kernel.&amp;quot;&lt;br /&gt;
    echo &amp;quot;&amp;quot;&lt;br /&gt;
    echo &amp;quot;Afterwards, you can use the URL&amp;quot;&lt;br /&gt;
    echo &amp;quot;  http://127.0.0.1:${port}/lab &amp;quot;&lt;br /&gt;
    echo &amp;quot;&amp;quot;&lt;br /&gt;
    echo &amp;quot;to:&amp;quot;&lt;br /&gt;
    echo &amp;quot;- use the kernel in VSCode (&#039;Existing Jupyter Server...&#039;, enter URL, enter password, confirm &#039;127.0.0.1&#039;, choose kernel) or &amp;quot;&lt;br /&gt;
    echo &amp;quot;- open JupyterLab in your browser with the URL&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;The needed information couldn&#039;t be found in the slurm output. Please contact your support unit if you need help with fixing this problem.&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
# rm $slurm_out&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Follow the instructions on the commandline to connect to the Jupyter kernel from your local machine or the Helix login node. More detailed instructions can be found below. &lt;br /&gt;
&lt;br /&gt;
==== Connect to a running job ====&lt;br /&gt;
&lt;br /&gt;
The job runs on a specific compute node and port. With this information, you can create a ssh connection to it. But first, you need to decide, in which way you want to work with your python code. The options are: &lt;br /&gt;
&lt;br /&gt;
# The code is placed locally on your computer. &lt;br /&gt;
# The code is placed on the cluster and you&#039;ve mounted the folder locally. (= The files on the cluster are accessible from within your local VS Code)&lt;br /&gt;
# The code is placed on the cluster and you work on the cluster via a remote connection in VS Code. &lt;br /&gt;
&lt;br /&gt;
Depending on the use case, you need to execute the ssh command in a different place: &lt;br /&gt;
&lt;br /&gt;
# Open VS Code on your computer. &lt;br /&gt;
# Open VS Code on your computer. &lt;br /&gt;
# Open VS Code on your computer and connect to the cluster.&lt;br /&gt;
&lt;br /&gt;
Then open a terminal and execute the ssh command, which is given in the commandline output of the wrapper script. If the terminal isn&#039;t already open, go to menu item &amp;quot;Terminal&amp;quot; at the top of the window and choose &amp;quot;New Terminal&amp;quot; (or &amp;quot;new -&amp;gt; command prompt&amp;quot; on Windows). &lt;br /&gt;
It is normal that the command doesn&#039;t end after you&#039;ve put in your credentials. Leave the terminal open and go on with the next step. &lt;br /&gt;
&lt;br /&gt;
To use the jupyter kernel that is running on the cluster node, you need to connect this kernel. This is similar to connecting any other kernel: &lt;br /&gt;
&lt;br /&gt;
# Open your code file.&lt;br /&gt;
# Click &amp;quot;Select Kernel&amp;quot; in the upper right corner. &lt;br /&gt;
# Choose &amp;quot;Existing Jupyter Server...&amp;quot;.&lt;br /&gt;
# Enter the URL that was given by the wrapper script. &lt;br /&gt;
# Enter your JupyterLab password that you set in the first step of these instructions.&lt;br /&gt;
# Confirm the prefilled value &amp;quot;127.0.0.1&amp;quot; by pressing Enter.&lt;br /&gt;
# Choose one of the virtual environments that you&#039;ve created on the cluster. You should see all python environments. To see the conda environments as well, you need to [[Helix/bwVisu/JupyterLab#Python_version | register them as ipykernel]] first. &lt;br /&gt;
&lt;br /&gt;
=== Complex Use Case ===&lt;br /&gt;
If you have different use cases for juypterlab, you could use a more flexible wrapper script, for example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./bin/run_jupyterlab.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Starts a jupyter kernel on a node and provides information on how to connect to it locally.&lt;br /&gt;
# If you have only one use case and therefore need only one combination of slurm settings for your jupyter jobs, then you can use the simpler script.&lt;br /&gt;
# This script supports explorative analyses by allowing to overwrite parameters via commandline.&lt;br /&gt;
# Different job configurations can be defined in advance and then used with a given short name (cpu, gpu,...).&lt;br /&gt;
&lt;br /&gt;
programname=$0&lt;br /&gt;
function help {&lt;br /&gt;
    &#039;&#039;&#039;help text&#039;&#039;&#039;&lt;br /&gt;
    echo &amp;quot;&amp;quot;&lt;br /&gt;
    echo &amp;quot;Starts a jupyterlab kernel&amp;quot;&lt;br /&gt;
    echo &amp;quot;&amp;quot;&lt;br /&gt;
    echo &amp;quot;usage example: $programname --param_set cpu&amp;quot;&lt;br /&gt;
    echo &amp;quot;&amp;quot;&lt;br /&gt;
    echo &amp;quot;  --param_set string   name of the parameter set&amp;quot;&lt;br /&gt;
    echo &amp;quot;                          (examples: cpu, gpu)&amp;quot;&lt;br /&gt;
    echo &amp;quot;  --jobscript string   optional, path of batch script&amp;quot;&lt;br /&gt;
    echo &amp;quot;                          (default: ~/jupyterlab.slurm)&amp;quot;&lt;br /&gt;
    echo &amp;quot;  --slurm_out string   optional, name of slurm output file&amp;quot;&lt;br /&gt;
    echo &amp;quot;                          (default: slurm-${job_id}.out)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# These parameters are set later in the script. Providing them via commandline, overwrites their values set in the script.&lt;br /&gt;
jobscript=None&lt;br /&gt;
slurm_out=None&lt;br /&gt;
&lt;br /&gt;
# Process parameters&lt;br /&gt;
while [ $# -gt 0 ]; do&lt;br /&gt;
    if [[ $1 == &amp;quot;--help&amp;quot; ]]; then&lt;br /&gt;
        help&lt;br /&gt;
        exit 0&lt;br /&gt;
    # when given -p as parameter, use its value for the variable param_set&lt;br /&gt;
    elif [[ $1 == &amp;quot;-p&amp;quot; ]]; then&lt;br /&gt;
        param_set=&amp;quot;$2&amp;quot;&lt;br /&gt;
        shift&lt;br /&gt;
    elif [[ $1 == &amp;quot;--&amp;quot;* ]]; then&lt;br /&gt;
        v=&amp;quot;${1/--/}&amp;quot;&lt;br /&gt;
        declare &amp;quot;$v&amp;quot;=&amp;quot;$2&amp;quot;&lt;br /&gt;
        shift&lt;br /&gt;
    fi&lt;br /&gt;
    shift&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
function define_param_set(){&lt;br /&gt;
    &#039;&#039;&#039;Define parameter sets for sbatch&#039;&#039;&#039;&lt;br /&gt;
    # Define different sets&lt;br /&gt;
    cpu=(--partition=cpu-single --mem=2gb)&lt;br /&gt;
    gpu=(--partition=gpu-single --mem=3gb --gres=gpu:1)&lt;br /&gt;
&lt;br /&gt;
    param_set=${1}&lt;br /&gt;
    param_set=$param_set[@] &lt;br /&gt;
    param_set=(&amp;quot;${!param_set}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # Add params that are the same for all sets&lt;br /&gt;
    param_set+=(--ntasks=1)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# @param: jobscript, name of the slurm batch script to execute&lt;br /&gt;
if  [ &amp;quot;$jobscript&amp;quot; = &amp;quot;None&amp;quot; ]; then&lt;br /&gt;
    jobscript=~/jupyterlab.slurm&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# @param: cluster address for ssh connection&lt;br /&gt;
hostAddress=helix.bwservices.uni-heidelberg.de&lt;br /&gt;
&lt;br /&gt;
# Translate given param_set value to actual set of parameters &lt;br /&gt;
define_param_set $param_set&lt;br /&gt;
echo &amp;quot;param_set: ${param_set[*]}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Run job&lt;br /&gt;
job_id=$(sbatch ${param_set[@]} $jobscript | awk &#039;{print $4}&#039;)&lt;br /&gt;
echo &amp;quot;jobid: $job_id&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# @param: slurm_out, the filename for the slurm output file&lt;br /&gt;
if  [ &amp;quot;$slurm_out&amp;quot; = &amp;quot;None&amp;quot; ]; then&lt;br /&gt;
    slurm_out=slurm-${job_id}.out&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Wait for output file&lt;br /&gt;
while [ ! -f $slurm_out ]; do   &lt;br /&gt;
    sleep 1; &lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# Wait until url is written in output file&lt;br /&gt;
while [ -z ${url} ]; do   &lt;br /&gt;
    sleep 1; &lt;br /&gt;
    url=$(grep -o &#039;http[^ ]*&#039; $slurm_out | head -n 1); &lt;br /&gt;
    done&lt;br /&gt;
&lt;br /&gt;
# Extract hostID and port from output.&lt;br /&gt;
url_pattern=&amp;quot;http://([a-z0-9]{6}):([0-9]{3,5})/lab&amp;quot;&lt;br /&gt;
if [[ $url =~ $url_pattern ]]; then &lt;br /&gt;
    hostID=${BASH_REMATCH[1]}&lt;br /&gt;
    port=${BASH_REMATCH[2]}&lt;br /&gt;
    echo &amp;quot;To connect with the JupyterLab kernel, please enter the following into your local commandline: &amp;quot;&lt;br /&gt;
    echo &amp;quot;ssh -N -L $port:$hostID:$port ${USER}@$hostAddress&amp;quot;; &lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Afterwards, you can either&amp;quot;&lt;br /&gt;
echo &amp;quot;- use the kernel in VSCode or &amp;quot;&lt;br /&gt;
echo &amp;quot;- open JupyterLab with this URL: &amp;quot;&lt;br /&gt;
echo &amp;quot;  http://127.0.0.1:${port}/lab &amp;quot;&lt;br /&gt;
echo &amp;quot;Note: It is normal that the ssh command doesn&#039;t end after providing the credentials. Ending the command would mean ending the local connection to the kernel.&amp;quot;&lt;br /&gt;
#rm $slurm_out&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/SV_Management&amp;diff=16236</id>
		<title>SDS@hd/SV Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/SV_Management&amp;diff=16236"/>
		<updated>2026-07-24T12:52:53Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: added hint regarding ORCiD users&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Roles in a SV ==&lt;br /&gt;
There are four different roles in an SV. Depending on the role, different management activites can be executed at the [https://sds-hd.urz.uni-heidelberg.de/management SDS@hd Managementtool]. These are described below. They include top level management of user access.&lt;br /&gt;
&lt;br /&gt;
=== SV Member or Guest ===&lt;br /&gt;
At the [https://sds-hd.urz.uni-heidelberg.de/management SDS@hd Managementtool] members/guests can...&lt;br /&gt;
* ...view the status of your SV memberships (active/inactive)&lt;br /&gt;
* ...view the status of the SV (active/inactive, end date). (Removing people from the list completely is not possible, yet.)&lt;br /&gt;
&lt;br /&gt;
=== SV Manager ===&lt;br /&gt;
Additionally to the abilities of a coworker, a manager can...&lt;br /&gt;
* ...change the SV password&lt;br /&gt;
* ...enable others to join the SV&lt;br /&gt;
*# Provide them with the SV acronym. You can look it up at the [https://sds-hd.urz.uni-heidelberg.de/management/shib/info_sv.php SDS@hd Managementtool].&lt;br /&gt;
*# Provide them with the SV password. The SV responsible received the initial password via email. &amp;lt;u&amp;gt;Caution&amp;lt;/u&amp;gt;: Make sure to share the SV password. Do not share your personal service password which you set in registration step B at bwServices.&lt;br /&gt;
*# Afterwards, they can join by following the [[SDS@hd/Registration | registration steps]]. &lt;br /&gt;
* ...change the status of SV members (active/inactive). Make sure to especially manage the access of those members that joined with their ORCiD account. Otherwise, they&#039;ll have access forever.&lt;br /&gt;
&lt;br /&gt;
=== SV Responsible (SVV) ===&lt;br /&gt;
Additionally to the abilities of a manager, the responsible can...&lt;br /&gt;
* ...enable the guest folder&lt;br /&gt;
* ...change the role of SV members (guest/full member)&lt;br /&gt;
* ...hand over the SV responsibility&lt;br /&gt;
* ...cancel the SV when it is not needed anymore&lt;br /&gt;
&lt;br /&gt;
== Yearly storage project (SV) extension ==&lt;br /&gt;
&lt;br /&gt;
Once a year the SV responsible person needs to apply for a lifetime extension of the storage project. As part of the application, you will be asked to inform us of publications for which the storage project was used. As long as SDS@hd is used appropriately, an extension will be granted.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16231</id>
		<title>Data Transfer/Rclone</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16231"/>
		<updated>2026-07-20T16:21:13Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added Checksumming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[https://rclone.org/docs/ Rclone] is a command line tool to manage files on remote systems (e.g. high performance clusters, data and cloud storage systems, archiving services). &amp;lt;/br&amp;gt;&lt;br /&gt;
Rclone either synchronizes in one direction only or its mounting functionality is used with &amp;lt;code&amp;gt;rclone mount&amp;lt;/code&amp;gt;. &amp;lt;/br&amp;gt;&lt;br /&gt;
Data can be piped between two completely remote locations. When moving data within the same system and the data transfer protocol allows for server side copy, no local download is necessary. &amp;lt;/br&amp;gt;&lt;br /&gt;
One advantage is that the transfer is multithreaded and it operates on a file level basis.&amp;lt;/br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Caution:&#039;&#039;&#039; When using Rclone with 2FA it is necessary to connect via ssh key instead of a password. &lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Rclone is a Go program and comes as a single binary file.&lt;br /&gt;
&lt;br /&gt;
# Download the relevant binary.&lt;br /&gt;
# Extract the &amp;lt;code&amp;gt;rclone&amp;lt;/code&amp;gt; executable (&amp;lt;code&amp;gt;rclone.exe&amp;lt;/code&amp;gt;).&lt;br /&gt;
# You can use the executables without further installation. For easy use, it is recommended to add the binary to your PATH environment variable. Information on how to do this can be found below.&lt;br /&gt;
&lt;br /&gt;
Detailed information regarding different operating systems can be found here:&lt;br /&gt;
&lt;br /&gt;
* Installation on [https://rclone.org/install/#windows Windows]&lt;br /&gt;
*: To use rclone after the installation, you have to open a terminal (cmd or PowerShell) in the folder where the rclone.exe file is. This can be done with a right click in the empty space wihin the rclone folder and then choosing &amp;quot;open in terminal&amp;quot;. Then run all commands with a leading &#039;./&#039; (for example &amp;lt;code&amp;gt;./rclone config&amp;lt;/code&amp;gt;. To be able to simply use &amp;quot;rclone&amp;quot; anywhere, you can add it to your path. For instructions see the [[Data_Transfer/Rclone#Troubleshooting | Troubleshooting]] section. &lt;br /&gt;
* Installation on [https://rclone.org/install/#macos macOS]&lt;br /&gt;
** If Rclone shall be used together with sftp, the [[Data_Transfer/SSHFS#Installation | sshfs installation]] instructions must be followed after installing Rclone. &lt;br /&gt;
* Installation on [https://rclone.org/install/#script-installation Linux]&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone ==&lt;br /&gt;
&lt;br /&gt;
To use Rclone you have to define a config file. Afterwards you can connect by using the name of your configured connections. &lt;br /&gt;
&lt;br /&gt;
=== Configure Remote ===&lt;br /&gt;
&lt;br /&gt;
Before you can start using Rclone, you need to set up a remote. This means to configure a specific connection by providing authentication information, the network protocol that you want to use and a name for this configuration so that you can use it later on.&lt;br /&gt;
&lt;br /&gt;
To configure a remote for a specific service, you need the following information:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;remotehost&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;username&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;servicePassword&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you have to decide on: &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;network protocol&amp;lt;/code&amp;gt; (for example webDAV, smb, sftp)&lt;br /&gt;
* &amp;lt;code&amp;gt;remote-name&amp;lt;/code&amp;gt; (for example you can use the name of the service you want to connect to)&lt;br /&gt;
&lt;br /&gt;
You have three different options to set up a new remote as described in the following sections. It&#039;s enough to choose one of those. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Oneliner&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Open a terminal and define all parameters in one command. If a ssh key shall be used instead of a password, it might be easier to adjust the config file directly as described in the next section.  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# smb&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; smb host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; domain=&amp;lt;domain&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# sftp&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; sftp host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# webdav&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; webdav url=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Adjust Config File&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Make sure that a config file exists. Access rights for the config file are set to 600.  &lt;br /&gt;
rclone config touch&lt;br /&gt;
# Get the location of the file: &lt;br /&gt;
rclone config file &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Open the file and use one of the following snippets as template for your connection:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = smb&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
domain = &amp;lt;e.g. BWSERVICESAD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = webdav&lt;br /&gt;
url = &amp;lt;hostURL&amp;gt;&lt;br /&gt;
vendor = other&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_use_agent = false&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name-ssh-key-version&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_file = ~/.ssh/id_ed25519&lt;br /&gt;
pubkey_file = ~/.ssh/id_ed25519.pub&lt;br /&gt;
key_use_agent = true&lt;br /&gt;
shell_type = none&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To add the password, please use the following command. Make sure to keep the prepended space so that the command is not saved in your command history. &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt; rclone config update &amp;lt;remote-name&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Interactive Setup&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Execute:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;rclone config&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This will guide you through an interactive setup process. It&#039;s quite helpful for checking out which options there are and what the config file looks like after setting values that deviate from the default values. You can find detailed instructions at the website: &lt;br /&gt;
&lt;br /&gt;
* [https://rclone.org/webdav/ Connect via webdav]&lt;br /&gt;
* [https://rclone.org/smb/ Connect via smb]&lt;br /&gt;
* [https://rclone.org/sftp/ Connect via sftp]&lt;br /&gt;
&lt;br /&gt;
=== Use Remote ===&lt;br /&gt;
&lt;br /&gt;
To see all configured remotes: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone config&lt;br /&gt;
# Exit with &#039;q&#039;. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax to use Rclone is like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone [options] subcommand &amp;lt;parameters&amp;gt; &amp;amp;lt;parameters...&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
List all elements in the folder XX:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone lsf &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
# List elements from subfolders as well:&lt;br /&gt;
rclone lsf --max-depth 2 &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Copies /local/path to the remote path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;amp;lt;/local/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copies fom remote path to /local/path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt; &amp;amp;lt;/local/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Moves the contents of the source directory to the destination directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone move &amp;lt;remote-name&amp;gt;:&amp;amp;lt;source/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;destination/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
More subcommands can be found [https://rclone.org/docs/#subcommands here].&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone Mount ==&lt;br /&gt;
&lt;br /&gt;
Before you can follow the instructions in this chapter, you need to have set up a [[Data_Transfer/Rclone#Usage_Rclone | remote]].&amp;lt;/br&amp;gt;&lt;br /&gt;
More detailed information on how to use rclone mount can be found [https://rclone.org/commands/rclone_mount/ here].&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
To run rclone mount on Windows, you will need to [https://winfsp.dev/rel/ download and install WinFsp] first.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;# mount under drive letter X (or any other free letter)&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;:&amp;lt;path/to/remote/files&amp;gt; X:&lt;br /&gt;
# or provide the path to a nonexisting folder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;:&amp;lt;path/to/remote/files&amp;gt; &amp;lt;C:\path\parentDir\nonexistingFoldername&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To unmount, the command can be stopped in the terminal with the key combination CTRL+C. Alternatively, a mounted drive can be unmounted by making a right click on the drive name in the file explorer and choose &amp;quot;Eject&amp;quot;. &amp;lt;/br&amp;gt;&lt;br /&gt;
In contrast to Linux/Mac, there is no background mode.&lt;br /&gt;
&lt;br /&gt;
=== MacOS &amp;amp; Linux ===&lt;br /&gt;
&lt;br /&gt;
You can run mount in either foreground or background (aka daemon) mode. Mount runs in foreground mode by default. Use the &amp;lt;code&amp;gt;--daemon&amp;lt;/code&amp;gt; flag to force background mode. If this doesn&#039;t work, you can put an &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; at the end of the command instead. &lt;br /&gt;
&lt;br /&gt;
Create an empty directory on your local machine and then execute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# to mount the root folder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;: /path/to/empty/folder &lt;br /&gt;
# to mount a subfolder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;:folderX/folderY /path/to/empty/folder &lt;br /&gt;
# to unmount:&lt;br /&gt;
fusermount -uz /path/to/mounted/folder &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
Rclone has a lot of useful options. &lt;br /&gt;
&lt;br /&gt;
=== Checksumming ===&lt;br /&gt;
Data transfers can break when there is an interruption in the network or an interruption on the side of the remote destination. When doing the transfer on your local computer, make sure to prevent sleep mode while the transfer is ongoing. &lt;br /&gt;
While you can make rclone produce log output, you might still overlook that there were some transfer issues in between and at the destination you might see the correct folders but might overlook that they are actually empty. To prevent these cases, the source data can be compared with the destination data as follows:&lt;br /&gt;
&lt;br /&gt;
# A sum file needs to be generated that contains the hashes for the source data: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone hashsum SHA1 &amp;lt;path/to/source/data&amp;gt; -L --output-file &amp;lt;sumfile_name&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# After the transfer, the sum file gets compared to the destination data: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# --combined flag: It will write a file (or stdout) which contains all file paths with a symbol and then a space and then the path to tell you what happened to it. &lt;br /&gt;
# --one-way flag: the command only checks that files in the source match the files in the destination. Additional files in the destination that are not in the source will not be detected.&lt;br /&gt;
# --error &amp;lt;errorfile_name&amp;gt; flag: Report all files with errors (hashing or reading) to this file&lt;br /&gt;
rclone checksum SHA1 &amp;lt;sumfile_name&amp;gt; &amp;lt;remote-name&amp;gt;:&amp;lt;path/to/destination/data&amp;gt; --stats-log-level=DEBUG -vv --combined --one-way --error &amp;lt;errorfile_name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the Rclone documentation for details on the comparison and output options: [https://rclone.org/commands/rclone_hashsum/ rclone hashsum], [https://rclone.org/commands/rclone_checksum/ rclone checksum]&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
&lt;br /&gt;
To be able to utilize a larger bandwidth, it is helpful to add the following options for increased performance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--transfers &amp;lt;int&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of file transfers to run in parallel (default: 4). Depending on the local Network, read and write speeds on the file system, and current load, different values might be best. For large transfers, it is advised to test local performance with different values beforehand. &lt;br /&gt;
&lt;br /&gt;
* In our tests, we observed the best results between 8 and 32.&lt;br /&gt;
* For regular use cases, we recommend 16 as the default.&lt;br /&gt;
* Values above 64 are not recommended and degrade performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--multi-thread-streams &amp;lt;int&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of streams to use for multithreaded downloads (default: 4). Only important on very large files. This will cause multithreaded up/download on chunk-sized bits of the file.&lt;br /&gt;
&lt;br /&gt;
The optimal value is highly specific to the local network and used Hardware. For regular use cases, we recommend 4 as the default. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hint:&#039;&#039;&#039; Keep in mind that a broken file transfer has to start from the beginning. If there is no overall performance improvement when transferring files in parallel because the network is not capable enough, it is for example better to transfer four files in serial and therefore each with full speed, instead of transferring the four files in parallel with 1/4 of the speed each. If an interruption occurs in the middle, you have two files left to transfer in the first case but four files left in the second case. &lt;br /&gt;
&lt;br /&gt;
=== Debugging and Statistics ===&lt;br /&gt;
To get updates on current progress, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interval between printing stats, e.g. 500ms, 60s, 5m (0 to disable) (default 1m0s).  &lt;br /&gt;
&lt;br /&gt;
To get debug information, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--log-level=DEBUG &lt;br /&gt;
--stats-log-level=DEBUG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
# Windows: Adding rclone to the path&lt;br /&gt;
#: Needed information: path to the rclone.exe file. If you chose to install via &#039;winget&#039;, the path is &amp;quot;C:\Users\&amp;lt;user&amp;gt;\AppData\Local\Microsoft\WinGet\Packages\Rclone.Rclone_Microsoft.Winget.Source.... . Please look up the exact path. &lt;br /&gt;
#:* Option 1: Add the rclone.exe file to a folder that is already in the path. You can move it to &amp;quot;C:\Windows\System32\&amp;quot;. Then open a new terminal window and test if the command &amp;quot;rclone config&amp;quot; works.&lt;br /&gt;
#:* Option 2: Add the path of the rclone.exe file to your Windows Path variable:&lt;br /&gt;
#:*: Open the Start Search and type env. Choose &amp;quot;Edit environment variables&amp;quot;&lt;br /&gt;
#:*: Click the &amp;quot;Environment Variables&amp;quot; button. &lt;br /&gt;
#:*: Edit the user variables and add the path to your rclone.exe file.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Helix/Slurm&amp;diff=16230</id>
		<title>Helix/Slurm</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Helix/Slurm&amp;diff=16230"/>
		<updated>2026-07-20T15:47:26Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: fixed formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information about Slurm =&lt;br /&gt;
The bwForCluster Helix uses Slurm as batch system.&lt;br /&gt;
* Slurm documentation: https://slurm.schedmd.com/documentation.html&lt;br /&gt;
* Slurm cheat sheet: https://slurm.schedmd.com/pdfs/summary.pdf&lt;br /&gt;
* Slurm tutorials: https://slurm.schedmd.com/tutorials.html&lt;br /&gt;
&lt;br /&gt;
= Slurm Command Overview =&lt;br /&gt;
&lt;br /&gt;
{| width=750px class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Slurm commands !! Brief explanation&lt;br /&gt;
|-&lt;br /&gt;
| [https://slurm.schedmd.com/sbatch.html sbatch] || Submits a job and queues it in an input queue&lt;br /&gt;
|-&lt;br /&gt;
| [https://slurm.schedmd.com/salloc.html salloc] || Request resources for an interactive job&lt;br /&gt;
|-&lt;br /&gt;
| [https://slurm.schedmd.com/squeue.html squeue] || Displays information about active, eligible, blocked, and/or recently completed jobs &lt;br /&gt;
|-&lt;br /&gt;
| [https://slurm.schedmd.com/scontrol.html scontrol] || Displays detailed job state information&lt;br /&gt;
|-&lt;br /&gt;
| [https://slurm.schedmd.com/scontrol.html sstat] || Displays status information about a running job&lt;br /&gt;
|- &lt;br /&gt;
| [https://slurm.schedmd.com/scancel.html scancel] || Cancels a job&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Job Submission =&lt;br /&gt;
&lt;br /&gt;
Batch jobs are submitted with the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sbatch &amp;lt;job-script&amp;gt; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A job script contains options for Slurm in lines beginning with &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; as well as your commands which you want to execute on the compute nodes. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;slurm&amp;quot;&amp;gt;#!/bin/bash&lt;br /&gt;
#SBATCH --partition=cpu-single&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --time=00:20:00&lt;br /&gt;
#SBATCH --mem=1gb&lt;br /&gt;
#SBATCH --export=NONE&lt;br /&gt;
echo &#039;Hello world&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This jobs requests one core (--ntasks=1) and 1 GB memory (--mem=1gb) for 20 minutes (--time=00:20:00) on nodes provided by the partition &#039;&#039;cpu-single&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For the sake of a better reproducibility of jobs it is recommended to use the option --export=NONE to prevent the propagation of environment variables from the submit session into the job environment and to load required software modules in the job script.&lt;br /&gt;
&lt;br /&gt;
== Partitions ==&lt;br /&gt;
&lt;br /&gt;
On bwForCluster Helix it is necessary to request a partition with &amp;lt;code&amp;gt;--partition=&amp;lt;partition_name&amp;gt;&amp;lt;/code&amp;gt; on job submission. Within a partition, job allocations are routed automatically to the most suitable compute node(s) for the requested resources (e.g. amount of nodes and cores, memory, number of GPUs). The &#039;&#039;devel&#039;&#039; partition is the default partition, if no partition is requested. &lt;br /&gt;
&lt;br /&gt;
The partitions &#039;&#039;devel&#039;&#039;, &#039;&#039;cpu-single&#039;&#039; and &#039;&#039;gpu-single&#039;&#039; are operated in shared mode, i.e. jobs from different users can run on the same node. Jobs can get exclusive access to compute nodes in these partitions with the &amp;lt;code&amp;gt;--exclusive&amp;lt;/code&amp;gt; option. The partitions &#039;&#039;cpu-multi&#039;&#039; and &#039;&#039;gpu-multi&#039;&#039; are operated in exclusive mode. Jobs in these partitions automatically get exclusive access to the requested compute nodes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot;| Partition&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot;| Node Access Policy&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot;| [https://wiki.bwhpc.de/e/Helix/Hardware#Compute_Nodes Node Types]&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot;| Default&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot;| Limits&lt;br /&gt;
|-&lt;br /&gt;
| devel&lt;br /&gt;
| shared&lt;br /&gt;
| cpu, gpu4&lt;br /&gt;
| ntasks=1, time=00:10:00, mem-per-cpu=2gb&lt;br /&gt;
| nodes=2, time=00:30:00&lt;br /&gt;
|-&lt;br /&gt;
| cpu-single&lt;br /&gt;
| shared&lt;br /&gt;
| cpu, fat&lt;br /&gt;
| ntasks=1, time=00:30:00, mem-per-cpu=2gb&lt;br /&gt;
| nodes=1, time=120:00:00&lt;br /&gt;
|-&lt;br /&gt;
| gpu-single&lt;br /&gt;
| shared&lt;br /&gt;
| gpu4, gpu8&lt;br /&gt;
| ntasks=1, time=00:30:00, mem-per-cpu=2gb&lt;br /&gt;
| nodes=1, time=120:00:00&lt;br /&gt;
|- &lt;br /&gt;
| cpu-multi&lt;br /&gt;
| job exclusive&lt;br /&gt;
| cpu&lt;br /&gt;
| nodes=2, time=00:30:00&lt;br /&gt;
| nodes=32, time=48:00:00&lt;br /&gt;
|- &lt;br /&gt;
| gpu-multi&lt;br /&gt;
| job exclusive&lt;br /&gt;
| gpu4&lt;br /&gt;
| nodes=2, time=00:30:00&lt;br /&gt;
| nodes=8, time=48:00:00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== GPU requests ==&lt;br /&gt;
&lt;br /&gt;
For the partitions &#039;&#039;gpu-single&#039;&#039; and &#039;&#039;gpu-multi&#039;&#039; is it required to request GPU resources.&lt;br /&gt;
* The number of GPUs per node is requested with the option &amp;lt;code&amp;gt;--gres=gpu:&amp;lt;number-of-gpus&amp;gt;&amp;lt;/code&amp;gt;.   &lt;br /&gt;
* It is recommended to request a suitable GPU type for your application with the option &amp;lt;code&amp;gt;--gres=gpu:&amp;lt;gpu-type&amp;gt;:&amp;lt;number-of-gpus&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
** For &amp;lt;gpu-type&amp;gt; put the &#039;GPU Type&#039; listed in the [https://wiki.bwhpc.de/e/Helix/Hardware#Compute_Nodes Compute Nodes table].&lt;br /&gt;
*** Example for a request of two A40 GPUs: &amp;lt;code&amp;gt;--gres=gpu:A40:2&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Example for a request of one A100 GPU: &amp;lt;code&amp;gt;--gres=gpu:A100:1&amp;lt;/code&amp;gt;&lt;br /&gt;
** If you are unsure on which GPU type your code runs faster, please run a test case and compare the run times. In general the following applies:&lt;br /&gt;
*** A40 GPUs are optimized for single precision computations.&lt;br /&gt;
*** A100 and H200 GPUs offer better performance for double precision computations or if the code makes use of tensor cores.&lt;br /&gt;
** To only get A100 or H200 for double precision computations, a matching constraint can be added to the job parameters by using &amp;lt;code&amp;gt;--constraint=fp64&amp;lt;/code&amp;gt;. This way, only GPU types with FP64 capability (double precision) are allowed. &lt;br /&gt;
* GPUs that are suitable for a specific GPU memory requirement can be requested with option &amp;lt;code&amp;gt;--gres=gpu:&amp;lt;number-of-gpus&amp;gt;,gpumem_per_gpu:&amp;lt;required-gpumem&amp;gt;GB&amp;lt;/code&amp;gt;. &lt;br /&gt;
*: Hint: This only restricts the selection of possible GPU types. For the job the total GPU memory per GPU is available as listed in the line &#039;GPU memory per GPU&#039; of the [https://wiki.bwhpc.de/e/Helix/Hardware#Compute_Nodes Compute Nodes table].&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Here you can find some example scripts for batch jobs.&lt;br /&gt;
&lt;br /&gt;
=== Serial Programs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;slurm&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --partition=cpu-single&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --time=20:00:00&lt;br /&gt;
#SBATCH --mem=4gb&lt;br /&gt;
./my_serial_program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* Jobs with &amp;quot;--mem&amp;quot; up to 236gb can run on all node types associated with the cpu-single partition.&lt;br /&gt;
&lt;br /&gt;
=== Multi-threaded Programs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;slurm&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --partition=cpu-single&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=16&lt;br /&gt;
#SBATCH --time=01:30:00&lt;br /&gt;
#SBATCH --mem=50gb&lt;br /&gt;
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}&lt;br /&gt;
./my_multithreaded_program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* Jobs with &amp;quot;--ntasks-per-node&amp;quot; up to 64 and &amp;quot;--mem&amp;quot; up to 236gb can run on all node types associated with the cpu-single partition.&lt;br /&gt;
* With &amp;lt;code&amp;gt;export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}&amp;lt;/code&amp;gt; you can set the number of threads according to the number of resources requested.&lt;br /&gt;
&lt;br /&gt;
=== MPI Programs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;slurm&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --partition=cpu-multi&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=64&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
module load compiler/gnu&lt;br /&gt;
module load mpi/openmpi&lt;br /&gt;
srun ./my_mpi_program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* &amp;quot;--mem&amp;quot; requests the memory per node. The maximum is 236gb.&lt;br /&gt;
* The Compiler and MPI modules used for the compilation must be loaded before the start of the program.&lt;br /&gt;
* It is recommended to start MPI programs with &#039;srun&#039;.&lt;br /&gt;
&lt;br /&gt;
=== GPU Programs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;slurm&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --partition=gpu-single &lt;br /&gt;
#SBATCH --nodes=1 &lt;br /&gt;
#SBATCH --ntasks=1 &lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
#SBATCH --gres=gpu:A40:1 &lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH --mem=16gb&lt;br /&gt;
&lt;br /&gt;
module load devel/cuda &lt;br /&gt;
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}&lt;br /&gt;
 ./my_cuda_program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* The CUDA module used for compilation must be loaded before the start of the program.&lt;br /&gt;
&lt;br /&gt;
=== More Examples ===&lt;br /&gt;
&lt;br /&gt;
Further batch script examples are available on bwForCluster Helix in the directory: &amp;lt;code&amp;gt;/opt/bwhpc/common/system/slurm-examples&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Interactive Jobs =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hint:&#039;&#039;&#039; For convenient access to specific GUI applications (JupyterLab, RStudio, ...) on the cluster, we provide a web-based platform: &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;amp;rarr; &#039;&#039;&#039;[[Helix/bwVisu | bwVisu]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Interactive jobs must NOT run on the login nodes, however resources for interactive jobs can be requested using srun. The following example requests an interactive session on 1 core for 2 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;salloc --partition=cpu-single --ntasks=1 --time=2:00:00 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After execution of this command wait until the queueing system has granted you the requested resources. Once granted you will be automatically logged on the allocated compute node.&lt;br /&gt;
&lt;br /&gt;
If you use applications or tools which provide a GUI, enable X-forwarding for your interactive session with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;salloc --partition=cpu-single --ntasks=1 --time=2:00:00 --x11 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the walltime limit has been reached you will be automatically logged out from the compute node.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Delay the start of a job&#039;&#039;&#039; by using [https://slurm.schedmd.com/sbatch.html#OPT_begin -b] (or [https://slurm.schedmd.com/sbatch.html#OPT_begin --begin]) option in order to defer the allocation of the job until the specified time. Examples:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;salloc --begin=20:00 ...               # job can start after 8 p.m. &lt;br /&gt;
salloc --begin=now+1hour ...           # job can start 1 hour after submission&lt;br /&gt;
salloc --begin=teatime ...             # job can start at teatime (4 p.m.)&lt;br /&gt;
salloc --begin=2023-12-24T20:00:00 ... # job can start after specified date/time&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Job Monitoring =&lt;br /&gt;
&lt;br /&gt;
Jobs can be monitored via the job monitoring portal or via the commandline. &lt;br /&gt;
&lt;br /&gt;
== Job Monitoring Portal ==&lt;br /&gt;
For detailed information about your jobs and their efficiency (requested resources vs. used resources) visit the job monitoring portal: &lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; https://helix-monitoring.bwservices.uni-heidelberg.de&lt;br /&gt;
&lt;br /&gt;
== Commandline Commands ==&lt;br /&gt;
Depending on the job state and type you can use different commands to get information on the job. &lt;br /&gt;
&lt;br /&gt;
=== Information about Submitted Jobs ===&lt;br /&gt;
&lt;br /&gt;
For an overview of your submitted jobs use the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;squeue&lt;br /&gt;
# Show the estimated start time, additionally:&lt;br /&gt;
squeue --start&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get detailed information about a specific job use the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;scontrol show job &amp;lt;jobid&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
A job start may be delayed for various reasons:&lt;br /&gt;
* &amp;lt;code&amp;gt;QOSMaxCpuPerUserLimit&amp;lt;/code&amp;gt; - There is a limit to how many CPU cores a user can use at the same time. The job exceeds this limit.&lt;br /&gt;
* &amp;lt;code&amp;gt;QOSMaxGRESPerUser&amp;lt;/code&amp;gt; - There is a limit to how many GPUs a user can use at the same time. The job exceeds this limit.&lt;br /&gt;
* &amp;lt;code&amp;gt;QOSMinGRES&amp;lt;/code&amp;gt; - The job was submitted to a gpu partition without requesting a GPU.&lt;br /&gt;
* &amp;lt;code&amp;gt;Priority&amp;lt;/code&amp;gt; - There are currently other jobs with a higher priority but afterwards your job will run. &lt;br /&gt;
* &amp;lt;code&amp;gt;launch failed requeued held&amp;lt;/code&amp;gt; - The job has failed to start. You may be able to resume it using scontrol. Alternatively you can cancel it and submit it again.&lt;br /&gt;
For further reasons please refer to: https://slurm.schedmd.com/job_reason_codes.html&lt;br /&gt;
&lt;br /&gt;
=== Information about resource usage of running jobs ===&lt;br /&gt;
&lt;br /&gt;
You can monitor the resource usage of running jobs with the sstat command. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstat --format=JobId,AveCPU,AveRSS,MaxRSS -j &amp;lt;jobid&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will show average CPU time, average and maximum memory consumption of all tasks in the running job.&lt;br /&gt;
&lt;br /&gt;
&#039;sstat -e&#039; command shows a list of fields that can be specified with the &#039;--format&#039; option.&lt;br /&gt;
&lt;br /&gt;
=== Interactive access to running jobs ===&lt;br /&gt;
&lt;br /&gt;
It is also possible to attach an interactive shell to a running job with command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;srun --jobid=&amp;lt;jobid&amp;gt; --overlap --pty /bin/bash&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Commands like &#039;top&#039; show you the most busy processes on the node. To exit &#039;top&#039; type &#039;q&#039;.&lt;br /&gt;
&lt;br /&gt;
To monitor your GPU processes use the command &#039;nvidia-smi&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Job Feedback ===&lt;br /&gt;
You get feedback on resource usage and job efficiency for completed jobs with the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
seff &amp;lt;jobid&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example Output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
============================= JOB FEEDBACK =============================&lt;br /&gt;
Job ID: 12345678&lt;br /&gt;
Cluster: helix&lt;br /&gt;
User/Group: hd_ab123/hd_hd&lt;br /&gt;
State: COMPLETED (exit code 0)&lt;br /&gt;
Nodes: 2&lt;br /&gt;
Cores per node: 64&lt;br /&gt;
CPU Utilized: 3-04:11:46&lt;br /&gt;
CPU Efficiency: 97.90% of 3-05:49:52 core-walltime&lt;br /&gt;
Job Wall-clock time: 00:36:29&lt;br /&gt;
Memory Utilized: 432.74 GB (estimated maximum)&lt;br /&gt;
Memory Efficiency: 85.96% of 503.42 GB (251.71 GB/node)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* Nodes: Number of allocated nodes for the job.&lt;br /&gt;
* Cores per node: Number of physical cores per node allocated for the job.&lt;br /&gt;
* CPU Utilized: Sum of utilized core time.&lt;br /&gt;
* CPU Efficiency: &#039;CPU Utilized&#039; with respect to core-walltime (= &#039;Nodes&#039; x &#039;Cores per node&#039; x &#039;Job Wall-clock time&#039;) in percent. &lt;br /&gt;
* Job Wall-clock time: runtime of the job.&lt;br /&gt;
* Memory Utilized: Sum of memory used. For multi node MPI jobs the sum is only correct when srun is used instead of mpirun.&lt;br /&gt;
* Memory Efficiency: &#039;Memory Utilized&#039; with respect to total allocated memory for the job.&lt;br /&gt;
&lt;br /&gt;
= Accounting =&lt;br /&gt;
&lt;br /&gt;
Jobs are billed for allocated CPU cores, memory and GPUs.&lt;br /&gt;
&lt;br /&gt;
To see the accounting data of a specific job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sacct -j &amp;lt;jobid&amp;gt; --format=user,jobid,account,nnodes,ncpus,time,elapsed,AllocTRES%50&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To retrieve the job history for a specific user for a certain time frame:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sacct -u &amp;lt;user&amp;gt; -S 2022-08-20 -E 2022-08-30 --format=user,jobid,account,nnodes,ncpus,time,elapsed,AllocTRES%50&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Overview about free resources =&lt;br /&gt;
&lt;br /&gt;
On the login nodes the following command shows what resources are available for immediate use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sinfo_t_idle&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Helix/Slurm&amp;diff=16229</id>
		<title>Helix/Slurm</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Helix/Slurm&amp;diff=16229"/>
		<updated>2026-07-20T15:45:53Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: moved gpu text from example to gpu section, included constraint section into gpu section, placed bwvisu and the monitoring portal in the beginning of he corresponding section; reformatting, removed dollar signs at the start of commands; add explantion for delay because of &amp;#039;Priority&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information about Slurm =&lt;br /&gt;
The bwForCluster Helix uses Slurm as batch system.&lt;br /&gt;
* Slurm documentation: https://slurm.schedmd.com/documentation.html&lt;br /&gt;
* Slurm cheat sheet: https://slurm.schedmd.com/pdfs/summary.pdf&lt;br /&gt;
* Slurm tutorials: https://slurm.schedmd.com/tutorials.html&lt;br /&gt;
&lt;br /&gt;
= Slurm Command Overview =&lt;br /&gt;
&lt;br /&gt;
{| width=750px class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Slurm commands !! Brief explanation&lt;br /&gt;
|-&lt;br /&gt;
| [https://slurm.schedmd.com/sbatch.html sbatch] || Submits a job and queues it in an input queue&lt;br /&gt;
|-&lt;br /&gt;
| [https://slurm.schedmd.com/salloc.html salloc] || Request resources for an interactive job&lt;br /&gt;
|-&lt;br /&gt;
| [https://slurm.schedmd.com/squeue.html squeue] || Displays information about active, eligible, blocked, and/or recently completed jobs &lt;br /&gt;
|-&lt;br /&gt;
| [https://slurm.schedmd.com/scontrol.html scontrol] || Displays detailed job state information&lt;br /&gt;
|-&lt;br /&gt;
| [https://slurm.schedmd.com/scontrol.html sstat] || Displays status information about a running job&lt;br /&gt;
|- &lt;br /&gt;
| [https://slurm.schedmd.com/scancel.html scancel] || Cancels a job&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Job Submission =&lt;br /&gt;
&lt;br /&gt;
Batch jobs are submitted with the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sbatch &amp;lt;job-script&amp;gt; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A job script contains options for Slurm in lines beginning with &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; as well as your commands which you want to execute on the compute nodes. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;slurm&amp;quot;&amp;gt;#!/bin/bash&lt;br /&gt;
#SBATCH --partition=cpu-single&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --time=00:20:00&lt;br /&gt;
#SBATCH --mem=1gb&lt;br /&gt;
#SBATCH --export=NONE&lt;br /&gt;
echo &#039;Hello world&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This jobs requests one core (--ntasks=1) and 1 GB memory (--mem=1gb) for 20 minutes (--time=00:20:00) on nodes provided by the partition &#039;&#039;cpu-single&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For the sake of a better reproducibility of jobs it is recommended to use the option --export=NONE to prevent the propagation of environment variables from the submit session into the job environment and to load required software modules in the job script.&lt;br /&gt;
&lt;br /&gt;
== Partitions ==&lt;br /&gt;
&lt;br /&gt;
On bwForCluster Helix it is necessary to request a partition with &amp;lt;code&amp;gt;--partition=&amp;lt;partition_name&amp;gt;&amp;lt;/code&amp;gt; on job submission. Within a partition, job allocations are routed automatically to the most suitable compute node(s) for the requested resources (e.g. amount of nodes and cores, memory, number of GPUs). The &#039;&#039;devel&#039;&#039; partition is the default partition, if no partition is requested. &lt;br /&gt;
&lt;br /&gt;
The partitions &#039;&#039;devel&#039;&#039;, &#039;&#039;cpu-single&#039;&#039; and &#039;&#039;gpu-single&#039;&#039; are operated in shared mode, i.e. jobs from different users can run on the same node. Jobs can get exclusive access to compute nodes in these partitions with the &amp;lt;code&amp;gt;--exclusive&amp;lt;/code&amp;gt; option. The partitions &#039;&#039;cpu-multi&#039;&#039; and &#039;&#039;gpu-multi&#039;&#039; are operated in exclusive mode. Jobs in these partitions automatically get exclusive access to the requested compute nodes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot;| Partition&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot;| Node Access Policy&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot;| [https://wiki.bwhpc.de/e/Helix/Hardware#Compute_Nodes Node Types]&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot;| Default&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot;| Limits&lt;br /&gt;
|-&lt;br /&gt;
| devel&lt;br /&gt;
| shared&lt;br /&gt;
| cpu, gpu4&lt;br /&gt;
| ntasks=1, time=00:10:00, mem-per-cpu=2gb&lt;br /&gt;
| nodes=2, time=00:30:00&lt;br /&gt;
|-&lt;br /&gt;
| cpu-single&lt;br /&gt;
| shared&lt;br /&gt;
| cpu, fat&lt;br /&gt;
| ntasks=1, time=00:30:00, mem-per-cpu=2gb&lt;br /&gt;
| nodes=1, time=120:00:00&lt;br /&gt;
|-&lt;br /&gt;
| gpu-single&lt;br /&gt;
| shared&lt;br /&gt;
| gpu4, gpu8&lt;br /&gt;
| ntasks=1, time=00:30:00, mem-per-cpu=2gb&lt;br /&gt;
| nodes=1, time=120:00:00&lt;br /&gt;
|- &lt;br /&gt;
| cpu-multi&lt;br /&gt;
| job exclusive&lt;br /&gt;
| cpu&lt;br /&gt;
| nodes=2, time=00:30:00&lt;br /&gt;
| nodes=32, time=48:00:00&lt;br /&gt;
|- &lt;br /&gt;
| gpu-multi&lt;br /&gt;
| job exclusive&lt;br /&gt;
| gpu4&lt;br /&gt;
| nodes=2, time=00:30:00&lt;br /&gt;
| nodes=8, time=48:00:00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== GPU requests ==&lt;br /&gt;
&lt;br /&gt;
For the partitions &#039;&#039;gpu-single&#039;&#039; and &#039;&#039;gpu-multi&#039;&#039; is it required to request GPU resources.&lt;br /&gt;
* The number of GPUs per node is requested with the option &amp;lt;code&amp;gt;--gres=gpu:&amp;lt;number-of-gpus&amp;gt;&amp;lt;/code&amp;gt;.   &lt;br /&gt;
* It is recommended to request a suitable GPU type for your application with the option &amp;lt;code&amp;gt;--gres=gpu:&amp;lt;gpu-type&amp;gt;:&amp;lt;number-of-gpus&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
** For &amp;lt;gpu-type&amp;gt; put the &#039;GPU Type&#039; listed in the [https://wiki.bwhpc.de/e/Helix/Hardware#Compute_Nodes Compute Nodes table].&lt;br /&gt;
*** Example for a request of two A40 GPUs: &amp;lt;code&amp;gt;--gres=gpu:A40:2&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Example for a request of one A100 GPU: &amp;lt;code&amp;gt;--gres=gpu:A100:1&amp;lt;/code&amp;gt;&lt;br /&gt;
** If you are unsure on which GPU type your code runs faster, please run a test case and compare the run times. In general the following applies:&lt;br /&gt;
*** A40 GPUs are optimized for single precision computations.&lt;br /&gt;
*** A100 and H200 GPUs offer better performance for double precision computations or if the code makes use of tensor cores.&lt;br /&gt;
** To only get A100 or H200 for double precision computations, a matching constraint can be added to the job parameters by using &amp;lt;code&amp;gt;--constraint=fp64&amp;lt;/code&amp;gt;. This way, only GPU types with FP64 capability (double precision) are allowed. &lt;br /&gt;
* GPUs that are suitable for a specific GPU memory requirement can be requested with option &amp;lt;code&amp;gt;--gres=gpu:&amp;lt;number-of-gpus&amp;gt;,gpumem_per_gpu:&amp;lt;required-gpumem&amp;gt;GB&amp;lt;/code&amp;gt;. &lt;br /&gt;
*: Hint: This only restricts the selection of possible GPU types. For the job the total GPU memory per GPU is available as listed in the line &#039;GPU memory per GPU&#039; of the [https://wiki.bwhpc.de/e/Helix/Hardware#Compute_Nodes Compute Nodes table].&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Here you can find some example scripts for batch jobs.&lt;br /&gt;
&lt;br /&gt;
=== Serial Programs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;slurm&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --partition=cpu-single&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --time=20:00:00&lt;br /&gt;
#SBATCH --mem=4gb&lt;br /&gt;
./my_serial_program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* Jobs with &amp;quot;--mem&amp;quot; up to 236gb can run on all node types associated with the cpu-single partition.&lt;br /&gt;
&lt;br /&gt;
=== Multi-threaded Programs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;slurm&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --partition=cpu-single&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=16&lt;br /&gt;
#SBATCH --time=01:30:00&lt;br /&gt;
#SBATCH --mem=50gb&lt;br /&gt;
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}&lt;br /&gt;
./my_multithreaded_program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* Jobs with &amp;quot;--ntasks-per-node&amp;quot; up to 64 and &amp;quot;--mem&amp;quot; up to 236gb can run on all node types associated with the cpu-single partition.&lt;br /&gt;
* With &amp;lt;code&amp;gt;export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}&amp;lt;/code&amp;gt; you can set the number of threads according to the number of resources requested.&lt;br /&gt;
&lt;br /&gt;
=== MPI Programs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;slurm&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --partition=cpu-multi&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=64&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
module load compiler/gnu&lt;br /&gt;
module load mpi/openmpi&lt;br /&gt;
srun ./my_mpi_program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* &amp;quot;--mem&amp;quot; requests the memory per node. The maximum is 236gb.&lt;br /&gt;
* The Compiler and MPI modules used for the compilation must be loaded before the start of the program.&lt;br /&gt;
* It is recommended to start MPI programs with &#039;srun&#039;.&lt;br /&gt;
&lt;br /&gt;
=== GPU Programs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;slurm&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --partition=gpu-single &lt;br /&gt;
#SBATCH --nodes=1 &lt;br /&gt;
#SBATCH --ntasks=1 &lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
#SBATCH --gres=gpu:A40:1 &lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH --mem=16gb&lt;br /&gt;
&lt;br /&gt;
module load devel/cuda &lt;br /&gt;
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}&lt;br /&gt;
 ./my_cuda_program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* The CUDA module used for compilation must be loaded before the start of the program.&lt;br /&gt;
&lt;br /&gt;
=== More Examples ===&lt;br /&gt;
&lt;br /&gt;
Further batch script examples are available on bwForCluster Helix in the directory: &amp;lt;code&amp;gt;/opt/bwhpc/common/system/slurm-examples&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Interactive Jobs =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hint:&#039;&#039;&#039; For convenient access to specific GUI applications (JupyterLab, RStudio, ...) on the cluster, we provide a web-based platform: &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;amp;rarr; &#039;&#039;&#039;[[Helix/bwVisu | bwVisu]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Interactive jobs must NOT run on the login nodes, however resources for interactive jobs can be requested using srun. The following example requests an interactive session on 1 core for 2 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;salloc --partition=cpu-single --ntasks=1 --time=2:00:00 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After execution of this command wait until the queueing system has granted you the requested resources. Once granted you will be automatically logged on the allocated compute node.&lt;br /&gt;
&lt;br /&gt;
If you use applications or tools which provide a GUI, enable X-forwarding for your interactive session with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;salloc --partition=cpu-single --ntasks=1 --time=2:00:00 --x11 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the walltime limit has been reached you will be automatically logged out from the compute node.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Delay the start of a job&#039;&#039;&#039; by using [https://slurm.schedmd.com/sbatch.html#OPT_begin -b] (or [https://slurm.schedmd.com/sbatch.html#OPT_begin --begin]) option in order to defer the allocation of the job until the specified time. Examples:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;salloc --begin=20:00 ...               # job can start after 8 p.m. &lt;br /&gt;
salloc --begin=now+1hour ...           # job can start 1 hour after submission&lt;br /&gt;
salloc --begin=teatime ...             # job can start at teatime (4 p.m.)&lt;br /&gt;
salloc --begin=2023-12-24T20:00:00 ... # job can start after specified date/time&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Job Monitoring =&lt;br /&gt;
&lt;br /&gt;
Jobs can be monitored via the job monitoring portal or via the commandline. &lt;br /&gt;
&lt;br /&gt;
== Job Monitoring Portal ==&lt;br /&gt;
For detailed information about your jobs and their efficiency (requested resources vs. used resources) visit the job monitoring portal: &lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; https://helix-monitoring.bwservices.uni-heidelberg.de&lt;br /&gt;
&lt;br /&gt;
== Commandline Commands ==&lt;br /&gt;
Depending on the job state and type you can use different commands to get information on the job. &lt;br /&gt;
&lt;br /&gt;
=== Information about Submitted Jobs ===&lt;br /&gt;
&lt;br /&gt;
For an overview of your submitted jobs use the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;squeue&lt;br /&gt;
# Show the estimated start time, additionally:&lt;br /&gt;
squeue --start&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get detailed information about a specific job use the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;scontrol show job &amp;lt;jobid&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
A job start may be delayed for various reasons:&lt;br /&gt;
* &amp;lt;code&amp;gt;QOSMaxCpuPerUserLimit&amp;lt;/code&amp;gt; - There is a limit to how many CPU cores a user can use at the same time. The job exceeds this limit.&lt;br /&gt;
* &amp;lt;code&amp;gt;QOSMaxGRESPerUser&amp;lt;/code&amp;gt; - There is a limit to how many GPUs a user can use at the same time. The job exceeds this limit.&lt;br /&gt;
* &amp;lt;code&amp;gt;QOSMinGRES&amp;lt;/code&amp;gt; - The job was submitted to a gpu partition without requesting a GPU.&lt;br /&gt;
* &amp;lt;code&amp;gt;Priority&amp;lt;/code&amp;gt; - There are currently other jobs with a higher priority but afterwards your job will run. &lt;br /&gt;
* &amp;lt;code&amp;gt;launch failed requeued held&amp;lt;/code&amp;gt; - The job has failed to start. You may be able to resume it using scontrol. Alternatively you can cancel it and submit it again.&lt;br /&gt;
For further reasons please refer to: https://slurm.schedmd.com/job_reason_codes.html&lt;br /&gt;
&lt;br /&gt;
== Information about resource usage of running jobs ==&lt;br /&gt;
&lt;br /&gt;
You can monitor the resource usage of running jobs with the sstat command. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstat --format=JobId,AveCPU,AveRSS,MaxRSS -j &amp;lt;jobid&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will show average CPU time, average and maximum memory consumption of all tasks in the running job.&lt;br /&gt;
&lt;br /&gt;
&#039;sstat -e&#039; command shows a list of fields that can be specified with the &#039;--format&#039; option.&lt;br /&gt;
&lt;br /&gt;
== Interactive access to running jobs ==&lt;br /&gt;
&lt;br /&gt;
It is also possible to attach an interactive shell to a running job with command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;srun --jobid=&amp;lt;jobid&amp;gt; --overlap --pty /bin/bash&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Commands like &#039;top&#039; show you the most busy processes on the node. To exit &#039;top&#039; type &#039;q&#039;.&lt;br /&gt;
&lt;br /&gt;
To monitor your GPU processes use the command &#039;nvidia-smi&#039;.&lt;br /&gt;
&lt;br /&gt;
== Job Feedback ==&lt;br /&gt;
You get feedback on resource usage and job efficiency for completed jobs with the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
seff &amp;lt;jobid&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example Output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
============================= JOB FEEDBACK =============================&lt;br /&gt;
Job ID: 12345678&lt;br /&gt;
Cluster: helix&lt;br /&gt;
User/Group: hd_ab123/hd_hd&lt;br /&gt;
State: COMPLETED (exit code 0)&lt;br /&gt;
Nodes: 2&lt;br /&gt;
Cores per node: 64&lt;br /&gt;
CPU Utilized: 3-04:11:46&lt;br /&gt;
CPU Efficiency: 97.90% of 3-05:49:52 core-walltime&lt;br /&gt;
Job Wall-clock time: 00:36:29&lt;br /&gt;
Memory Utilized: 432.74 GB (estimated maximum)&lt;br /&gt;
Memory Efficiency: 85.96% of 503.42 GB (251.71 GB/node)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* Nodes: Number of allocated nodes for the job.&lt;br /&gt;
* Cores per node: Number of physical cores per node allocated for the job.&lt;br /&gt;
* CPU Utilized: Sum of utilized core time.&lt;br /&gt;
* CPU Efficiency: &#039;CPU Utilized&#039; with respect to core-walltime (= &#039;Nodes&#039; x &#039;Cores per node&#039; x &#039;Job Wall-clock time&#039;) in percent. &lt;br /&gt;
* Job Wall-clock time: runtime of the job.&lt;br /&gt;
* Memory Utilized: Sum of memory used. For multi node MPI jobs the sum is only correct when srun is used instead of mpirun.&lt;br /&gt;
* Memory Efficiency: &#039;Memory Utilized&#039; with respect to total allocated memory for the job.&lt;br /&gt;
&lt;br /&gt;
= Accounting =&lt;br /&gt;
&lt;br /&gt;
Jobs are billed for allocated CPU cores, memory and GPUs.&lt;br /&gt;
&lt;br /&gt;
To see the accounting data of a specific job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sacct -j &amp;lt;jobid&amp;gt; --format=user,jobid,account,nnodes,ncpus,time,elapsed,AllocTRES%50&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To retrieve the job history for a specific user for a certain time frame:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sacct -u &amp;lt;user&amp;gt; -S 2022-08-20 -E 2022-08-30 --format=user,jobid,account,nnodes,ncpus,time,elapsed,AllocTRES%50&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Overview about free resources =&lt;br /&gt;
&lt;br /&gt;
On the login nodes the following command shows what resources are available for immediate use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sinfo_t_idle&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer&amp;diff=16228</id>
		<title>Data Transfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer&amp;diff=16228"/>
		<updated>2026-07-20T14:46:23Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added hint for checksumming, added rclone ssh key option for windows, changed formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Data transfer is the exchange of files between two systems. Before data transfer can happen, you need to go through the following steps:&lt;br /&gt;
&lt;br /&gt;
# Choose the two [[#Data_Storage_Systems|data storage systems]] that shall exchange data.&lt;br /&gt;
# Choose the top level ways of transfer ([[#Ways of Transfer:_Copy,_Sync,_Mount|copy, sync or mount]]) by considering your specific use case.&lt;br /&gt;
# Choose a [[#Network_Protocols_&amp;amp;_Transfer_Tools|network protocol or transfer tool]] to use for the communication between the systems.&lt;br /&gt;
&lt;br /&gt;
The recommended setup already includes these three steps. For a full overview, you can reference the tables that show all transfer routes. Those include all possible combinations between systems, top level way of transfer and network protocol / transfer tool.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; [[Data_Transfer/All_Data_Transfer_Routes|All Data Transfer Routes]]&lt;br /&gt;
&lt;br /&gt;
=== Data Storage Systems ===&lt;br /&gt;
&lt;br /&gt;
Data transfer can happen between a variety of systems. For example:&lt;br /&gt;
&lt;br /&gt;
* [[File:Notebook.svg|x20px]] Local computer or VM (virtual machine)&lt;br /&gt;
* [[File:Microscope.svg|x20px]] &amp;lt;span style=&amp;quot;margin-left:10px;&amp;quot;&amp;gt;Data producing machine (sequencer, microscope, ...)&amp;lt;span&amp;gt;&lt;br /&gt;
* [[File:Clusternodes.svg|x20px]] &amp;lt;span style=&amp;quot;margin-left:8px;&amp;quot;&amp;gt;HPC system (bwHPC Cluster, ...)&amp;lt;span&amp;gt;&lt;br /&gt;
* [[File:Storage_small.svg|x15px]] &amp;lt;span style=&amp;quot;margin-left:8px;&amp;quot;&amp;gt;Storage space (SDS@hd, institute server, ...)&amp;lt;span&amp;gt;&lt;br /&gt;
* [[File:Cloud.svg|x15px]] &amp;lt;span style=&amp;quot;margin-left:3px;&amp;quot;&amp;gt;Cloud resource (Nextcloud, ...)&amp;lt;span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ways of Transfer: Copy, Sync, Mount ===&lt;br /&gt;
&lt;br /&gt;
The top level ways of transfer are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Copy:&#039;&#039;&#039; A simple copy command is the most basic way to transfer data. This is most efficient for very big data files that shall be retrieved from or moved to a remote location. And it can be most convenient, if you prefer moving your files via commandline instead of using a file browser. &amp;lt;br&amp;gt;Examples: [[Data_Transfer/SCP|scp]], [[Data_Transfer/SFTP|sftp]], [[Data_Transfer/Rclone|rclone]]&lt;br /&gt;
* &#039;&#039;&#039;Sync:&#039;&#039;&#039; If the data is intended to be kept on both systems and undergoes change on only one of the systems, it makes sense to use a synchronization command instead. This way, only the changed files in one location are updated in the other location. Good use cases are backups or data transfers that go mostly in one direction like moving data from a sequencer to a storage space. A disadvantage is that the data needs storage space on both systems. &amp;lt;br&amp;gt;Examples: [[Data_Transfer/Rsync|rsync]], [[Data_Transfer/Rclone|rclone]]&lt;br /&gt;
* &#039;&#039;&#039;Mount:&#039;&#039;&#039; If the data undergoes change on both systems or is too big to store locally, then mounting is the most convenient solution. This allows you to see and work with the data as if it were stored locally on your computer while it is still placed on the remote system. All changes that you implement happen directly on the original data so that you don&#039;t need to copy or synchronize anything. Additionally, you&#039;ll see all changes that another party does to the data with just a very short delay. Disadvantages are that you need defined edit sessions starting with a mount and ending with a clean unmount of your files and with a stable network connection during the session. Also, file operations on the remote system become much slower via a remotely sshfs-mounted system. &amp;lt;br&amp;gt;Examples: [[Data_Transfer/SSHFS|sshfs]], [[SDS@hd/Access/SMB|smb]], [[Data_Transfer/WebDAV|webdav]], [[SDS@hd/Access/NFS|nfs]], [[Data_Transfer/Rclone|rclone]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: left;&amp;quot;&amp;gt;[[File:CopySyncMount.png|x250px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: left; font-size: small; margin-top: 10px; margin-left: 255px;&amp;quot;&amp;gt;Figure 1: Top level transfer routes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Network Protocols &amp;amp; Transfer Tools ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
! Basic Network Protocol&lt;br /&gt;
! Used By Network Protocol&lt;br /&gt;
|-&lt;br /&gt;
| ssh&lt;br /&gt;
| [[Data_Transfer/SCP | scp]], [[Data_Transfer/SFTP | sftp]], [[Data_Transfer/Rsync | rsync]]&lt;br /&gt;
|-&lt;br /&gt;
| http(s)&lt;br /&gt;
| [[Data_Transfer/WebDAV | WebDAV]]&lt;br /&gt;
|-&lt;br /&gt;
| [[SDS@hd/Access/SMB | smb]]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[SDS@hd/Access/NFS | NFS]]&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
For every data transfer a network protocol to use for the communication between the systems must be chosen. The basic network protocols and the network protocols that build directly upon those are shown in the table on the right. These protocols can either be used rather directly or through tools that provide the protocol together with additional features. A tool can either mean a command line tool or a tool with a graphical user interface.&lt;br /&gt;
&lt;br /&gt;
A comprehensive overview of all transfer options (network protocols and tools) can be found on the page [[Data_Transfer/All_Data_Transfer_Routes|all data transfer routes]].&lt;br /&gt;
&lt;br /&gt;
== Recommended Setup ==&lt;br /&gt;
[[File:Bwhpc diagram simplenobox.jpg|thumb|Main routes for mounting|x150px]]&lt;br /&gt;
# When you are working with a &amp;lt;ins&amp;gt;development environment&amp;lt;/ins&amp;gt; that allows remote connections (e.g. [[Development/VS_Code | VS Code]]), this is the first choice. &lt;br /&gt;
# Otherwise, the main tools/protocols for transferring data are as follows:&lt;br /&gt;
#* &amp;lt;u&amp;gt;Windows&amp;lt;/u&amp;gt;: &lt;br /&gt;
#** &#039;&#039;&#039;[[Data_Transfer/Graphical_Clients#MobaXterm|MobaXterm]]&#039;&#039;&#039; is a graphical user interface that allows logging in to the cluster with ssh as well as transferring data via a file browser or using command line tools for the transfer. &lt;br /&gt;
#** &#039;&#039;&#039;[[Data_Transfer/Rclone|Rclone]]&#039;&#039;&#039; can be used to mount the data as a drive in your file explorer so that you can access the files programmatically as well. An [[Registration/SSH | ssh key]] is needed when used with 2FA.&lt;br /&gt;
#* &amp;lt;u&amp;gt;MacOS and Linux&amp;lt;/u&amp;gt;: &lt;br /&gt;
#** &#039;&#039;&#039;[[Data_Transfer/SSHFS|sshfs]]&#039;&#039;&#039; is quickly set up for mounting under stable connections. &lt;br /&gt;
#** &#039;&#039;&#039;[[Data_Transfer/Rclone|Rclone]]&#039;&#039;&#039; for mount, copy and sync. An [[Registration/SSH | ssh key]] is needed when used with 2FA.&lt;br /&gt;
#* &amp;lt;u&amp;gt;SDS@hd&amp;lt;/u&amp;gt;: See the [[SDS@hd/Access|SDS@hd Access]] page.&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
Here, you can find best practices in the case of...&lt;br /&gt;
* &#039;&#039;&#039;...strong firewall restrictions:&#039;&#039;&#039;&lt;br /&gt;
*: &amp;amp;rarr; Use ssh or http(s) based protocols, for example [[Data_Transfer/WebDAV|&#039;&#039;&#039;WebDav&#039;&#039;&#039;]] and [[Data_Transfer/SFTP|sftp]]. For very strict facilities, ssh based protocols might not be allowed.&lt;br /&gt;
* &#039;&#039;&#039;...when sharing data with collaborators...&#039;&#039;&#039;&lt;br /&gt;
** ...outside of Baden-Württemberg&lt;br /&gt;
**: &amp;amp;rarr; Use the [[SDS@hd|SDS@hd]] storage.&lt;br /&gt;
** ...that are less comfortable with the command line&lt;br /&gt;
**: &amp;amp;rarr; Let them mount the folder.&lt;br /&gt;
* &#039;&#039;&#039;...transferring many small files:&#039;&#039;&#039;&amp;lt;br /&amp;gt; &amp;amp;rarr; Compress the files to one.&lt;br /&gt;
* &#039;&#039;&#039;...ensuring correct data transfers:&#039;&#039;&#039;&lt;br /&gt;
*: &amp;amp;rarr; Use checksumming. For example with [[Data_Transfer/Rclone | Rclone]]. &lt;br /&gt;
&lt;br /&gt;
For advanced topics see [[Data_Transfer/Advanced_Data_Transfer|Advanced Data Transfer]].&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Registration/SSH&amp;diff=16227</id>
		<title>Registration/SSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Registration/SSH&amp;diff=16227"/>
		<updated>2026-07-20T14:34:51Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: corrected validity value for Helix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SSH Key Authentication for HPC Clusters =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SSH Keys&#039;&#039;&#039; allow you to log into a system without entering a password. Instead of proving your identity with something you know (a password), you prove it with something you have (a cryptographic key).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
|+ SSH Key Management Methods by Cluster&lt;br /&gt;
|-&lt;br /&gt;
! Cluster&lt;br /&gt;
! Management Method&lt;br /&gt;
! Details&lt;br /&gt;
|-&lt;br /&gt;
| bwUniCluster 3.0&lt;br /&gt;
| style=&amp;quot;background-color:#90EE90;&amp;quot; | bwIDM Portal&lt;br /&gt;
| Centralized key management, 180-day validity (720-day for FIDO2 SK keys)&lt;br /&gt;
|-&lt;br /&gt;
| bwForCluster BinAC 2&lt;br /&gt;
| style=&amp;quot;background-color:#FFE4B5;&amp;quot; | ~/.ssh/authorized_keys&lt;br /&gt;
| Self-managed, use ssh-copy-id&lt;br /&gt;
|-&lt;br /&gt;
| bwForCluster Helix&lt;br /&gt;
| style=&amp;quot;background-color:#90EE90;&amp;quot; | bwServices Portal&lt;br /&gt;
| Centralized key management, 90-day validity&lt;br /&gt;
|-&lt;br /&gt;
| bwForCluster JUSTUS 2&lt;br /&gt;
| style=&amp;quot;background-color:#FFE4B5;&amp;quot; | ~/.ssh/authorized_keys&lt;br /&gt;
| Self-managed, use ssh-copy-id&lt;br /&gt;
|-&lt;br /&gt;
| bwForCluster NEMO 2&lt;br /&gt;
| style=&amp;quot;background-color:#90EE90;&amp;quot; | bwIDM Portal&lt;br /&gt;
| Centralized key management, 180-day validity (720-day for FIDO2 SK keys)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Choose your cluster below:&#039;&#039;&#039;&lt;br /&gt;
* [[#SSH_Keys_on_BinAC_2_and_JUSTUS_2|BinAC 2 and JUSTUS 2]] - Self-managed keys&lt;br /&gt;
* [[#SSH_Keys_via_bwIDM.2FbwServices|bwUniCluster 3.0, Helix, and NEMO2]] - Centralized management&lt;br /&gt;
&lt;br /&gt;
= SSH Keys on BinAC 2 and JUSTUS 2 =&lt;br /&gt;
&lt;br /&gt;
On &#039;&#039;&#039;bwForCluster BinAC 2&#039;&#039;&#039; and &#039;&#039;&#039;bwForCluster JUSTUS 2&#039;&#039;&#039;, you manage SSH keys yourself using the standard &amp;lt;code&amp;gt;~/.ssh/authorized_keys&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
== Quick Setup with ssh-copy-id ==&lt;br /&gt;
&lt;br /&gt;
The easiest method to add your SSH key:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Generate an SSH key&#039;&#039;&#039; (if you don&#039;t have one):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t ed25519 -C &amp;quot;your_email@example.com&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Press Enter to accept the default location, then set a strong passphrase.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Copy your key to the cluster:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# For BinAC2:&lt;br /&gt;
ssh-copy-id username@login.binac2.uni-tuebingen.de&lt;br /&gt;
&lt;br /&gt;
# For JUSTUS2:&lt;br /&gt;
ssh-copy-id username@justus2.uni-ulm.de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter your service password and OTP when prompted. Your public key will be automatically added to &amp;lt;code&amp;gt;~/.ssh/authorized_keys&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Test your connection:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# For BinAC2:&lt;br /&gt;
ssh username@login.binac2.uni-tuebingen.de&lt;br /&gt;
&lt;br /&gt;
# For JUSTUS2:&lt;br /&gt;
ssh username@justus2.uni-ulm.de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should now be able to log in using your SSH key and OTP.&lt;br /&gt;
&lt;br /&gt;
== Manual Setup (Alternative) ==&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;ssh-copy-id&amp;lt;/code&amp;gt; is not available on your system:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Display your public key:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat ~/.ssh/id_ed25519.pub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the entire output.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Log into the cluster&#039;&#039;&#039; using your service password and OTP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Add the key to authorized_keys:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p ~/.ssh&lt;br /&gt;
chmod 700 ~/.ssh&lt;br /&gt;
echo &amp;quot;paste-your-public-key-here&amp;quot; &amp;gt;&amp;gt; ~/.ssh/authorized_keys&lt;br /&gt;
chmod 600 ~/.ssh/authorized_keys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;paste-your-public-key-here&amp;lt;/code&amp;gt; with your actual public key.&lt;br /&gt;
&lt;br /&gt;
= SSH Keys via bwIDM/bwServices =&lt;br /&gt;
&lt;br /&gt;
On &#039;&#039;&#039;bwUniCluster 3.0&#039;&#039;&#039;, &#039;&#039;&#039;bwForCluster Helix&#039;&#039;&#039;, and &#039;&#039;&#039;bwForCluster NEMO 2&#039;&#039;&#039;, SSH keys are managed centrally through the registration service.&lt;br /&gt;
&lt;br /&gt;
== Why Centralized Management? ==&lt;br /&gt;
&lt;br /&gt;
Centralized SSH key management provides:&lt;br /&gt;
&lt;br /&gt;
* Security enforcement: Keys must use strong algorithms; regular keys have 180-day validity, FIDO2 SK keys have 720-day validity&lt;br /&gt;
* Centralized control: Review and revoke all keys from one location&lt;br /&gt;
* Two key types: Interactive keys (manual logins) and Command keys (automated workflows)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Self-managed &amp;lt;code&amp;gt;~/.ssh/authorized_keys&amp;lt;/code&amp;gt; files are ignored on these clusters.&lt;br /&gt;
&lt;br /&gt;
== Supported Key Types ==&lt;br /&gt;
&lt;br /&gt;
=== Standard SSH Keys ===&lt;br /&gt;
&lt;br /&gt;
* ED25519: 256 bits (recommended)&lt;br /&gt;
* RSA: 2048 bits or more&lt;br /&gt;
* ECDSA: 521 bits&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Always protect your private keys with a strong passphrase.&lt;br /&gt;
&lt;br /&gt;
=== FIDO2 Hardware Keys ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ED25519-SK&#039;&#039;&#039; and &#039;&#039;&#039;ECDSA-SK&#039;&#039;&#039; keys use hardware security keys (like Yubikey or Feitian ePass FIDO A4B) for authentication:&lt;br /&gt;
&lt;br /&gt;
* Valid for &#039;&#039;&#039;720 days&#039;&#039;&#039; - no frequent re-registration needed&lt;br /&gt;
* No pre-login required - no need to first unlock with password and TOTP&lt;br /&gt;
* Hardware-protected - private key never leaves the device&lt;br /&gt;
* Physical presence required - must touch key to authenticate&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
|+ FIDO2 Key Support by Cluster&lt;br /&gt;
|-&lt;br /&gt;
! Cluster&lt;br /&gt;
! SK Support (ED25519-SK / ECDSA-SK)&lt;br /&gt;
|-&lt;br /&gt;
| bwUniCluster 3.0&lt;br /&gt;
| style=&amp;quot;background-color:#90EE90;&amp;quot; | ✓ Supported&lt;br /&gt;
|-&lt;br /&gt;
| bwForCluster Helix&lt;br /&gt;
| style=&amp;quot;background-color:#FFB6C1;&amp;quot; | ✗ Not supported&lt;br /&gt;
|-&lt;br /&gt;
| bwForCluster NEMO 2&lt;br /&gt;
| style=&amp;quot;background-color:#90EE90;&amp;quot; | ✓ Supported&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Get started:&#039;&#039;&#039; See [[Registration/SSH/SSH-FIDO2-Quick-Start|SSH with FIDO2 - Quick Start Guide]]&lt;br /&gt;
&lt;br /&gt;
== Step 1: Add Your SSH Key to the Portal ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 3px solid #ffc107; background-color: #fff3cd; margin: 10px 0px 10px 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;padding-left: 5px; margin: 0px;&amp;quot;&amp;gt;&#039;&#039;&#039;Important:&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
* Regular SSH keys are valid for &#039;&#039;&#039;180 days&#039;&#039;&#039; and automatically revoked after expiration. FIDO2 hardware keys (SK) are valid for &#039;&#039;&#039;720 days&#039;&#039;&#039;.&lt;br /&gt;
* Upload only your &#039;&#039;&#039;public key&#039;&#039;&#039; file (ending in &amp;lt;code&amp;gt;.pub&amp;lt;/code&amp;gt;, e.g., &amp;lt;code&amp;gt;~/.ssh/id_ed25519.pub&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Generate an SSH key&#039;&#039;&#039; (if you don&#039;t have one):&lt;br /&gt;
* Run in your local terminal: &amp;lt;pre&amp;gt; ssh-keygen -t ed25519 -C &amp;quot;your_email@example.com&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Press Enter to accept the default location, then set a strong passphrase.&lt;br /&gt;
* You now have a private key (~/.ssh/id_ed25519) and a public key (~/.ssh/id_ed25519.pub).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Navigate to SSH key management:&#039;&#039;&#039;&lt;br /&gt;
* [https://login.bwidm.de/user/ssh-keys.xhtml bwUniCluster 3.0 / NEMO 2] (bwIDM)&lt;br /&gt;
* [https://bwservices.uni-heidelberg.de/user/ssh-keys.xhtml bwForCluster Helix] (bwServices)&lt;br /&gt;
&lt;br /&gt;
[[File:BwIDM-twofa.png|center|600px|thumb|My SSH Pubkeys page]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Click &amp;quot;Add SSH Key&amp;quot; / &amp;quot;SSH Key Hochladen&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Bwunicluster 2.0 access ssh keys empty.png|center|400px|thumb|Add SSH Key button]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Enter key details:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Name:&#039;&#039;&#039; Descriptive identifier (e.g., &amp;quot;laptop-work&amp;quot;, &amp;quot;desktop-home&amp;quot;)&lt;br /&gt;
* &#039;&#039;&#039;SSH Key:&#039;&#039;&#039; Paste complete contents of your &amp;lt;code&amp;gt;.pub&amp;lt;/code&amp;gt; file&lt;br /&gt;
* Click &#039;&#039;&#039;Add&#039;&#039;&#039; / &#039;&#039;&#039;Hinzufügen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Ssh-key.png|center|400px|thumb|Add SSH key dialog]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Your key appears in the list:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Ssh-success.png|center|600px|thumb|SSH key successfully added]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Bind your key to a cluster&#039;&#039;&#039; as either an [[#Step_2A:_Register_Interactive_Key|Interactive Key]] or [[#Step_2B:_Register_Command_Key|Command Key]].&lt;br /&gt;
&lt;br /&gt;
== Step 2A: Register Interactive Key ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interactive Keys&#039;&#039;&#039; are for manual SSH logins.&lt;br /&gt;
&lt;br /&gt;
=== Understanding Key Validity ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Regular SSH Keys&#039;&#039;&#039; (RSA, ECDSA, ED25519):&lt;br /&gt;
* Require 2-factor authentication unlock&lt;br /&gt;
* Valid for limited hours after entering OTP + service password&lt;br /&gt;
* Must re-authenticate when validity expires&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
|+ Validity Periods for Regular SSH Keys&lt;br /&gt;
|-&lt;br /&gt;
! Cluster&lt;br /&gt;
! Valid Duration&lt;br /&gt;
|-&lt;br /&gt;
| bwUniCluster 3.0&lt;br /&gt;
| 8 hours&lt;br /&gt;
|-&lt;br /&gt;
| bwForCluster Helix&lt;br /&gt;
| 12 hours&lt;br /&gt;
|-&lt;br /&gt;
| bwForCluster NEMO 2&lt;br /&gt;
| 12 hours&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FIDO2 Hardware Keys&#039;&#039;&#039; (ED25519-SK, ECDSA-SK):&lt;br /&gt;
* Valid for &#039;&#039;&#039;720 days&#039;&#039;&#039; - no re-authentication needed&lt;br /&gt;
* No pre-login required - no password/TOTP unlock needed&lt;br /&gt;
* Authentication via physical key touch only&lt;br /&gt;
* Only on bwUniCluster 3.0 and NEMO 2 (not Helix)&lt;br /&gt;
* See [[Registration/SSH/SSH-FIDO2-Quick-Start|SSH with FIDO2 - Quick Start Guide]]&lt;br /&gt;
&lt;br /&gt;
=== Registration Steps ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Add your public key&#039;&#039;&#039; following [[#Step_1:_Add_Your_SSH_Key_to_the_Portal|Step 1]] above&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Navigate to &amp;quot;Registered Services&amp;quot; / &amp;quot;Registrierte Dienste&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Set SSH Key&#039;&#039;&#039; / &#039;&#039;&#039;SSH Key setzen&#039;&#039;&#039; for your cluster&lt;br /&gt;
&lt;br /&gt;
[[File:BwIDM-registered.png|center|600px|thumb|Select cluster]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Find your key and click &amp;quot;Add&amp;quot; / &amp;quot;Hinzufügen&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Ssh-service-int.png|center|800px|thumb|Add SSH key to service]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Select &amp;quot;Interactive&amp;quot; and confirm&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Usage type: &#039;&#039;&#039;Interactive&#039;&#039;&#039;&lt;br /&gt;
* Comment: Optional description&lt;br /&gt;
* Click &#039;&#039;&#039;Add&#039;&#039;&#039; / &#039;&#039;&#039;Hinzufügen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Ssh-int.png|center|600px|thumb|Set as Interactive key]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Done!&#039;&#039;&#039; Your key is active for interactive logins&lt;br /&gt;
&lt;br /&gt;
[[File:Ssh-service.png|center|800px|thumb|SSH key registered]]&lt;br /&gt;
&lt;br /&gt;
== Step 2B: Register Command Key ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Command Keys&#039;&#039;&#039; enable automated workflows (e.g., backups, data transfers) without manual login.&lt;br /&gt;
&lt;br /&gt;
=== Security Requirements ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 3px solid #dc3545; padding: 15px; background-color: #f8d7da; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
Command keys are &#039;&#039;&#039;always valid&#039;&#039;&#039; (no 2FA required), making them security-sensitive.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mandatory restrictions:&#039;&#039;&#039;&lt;br /&gt;
* Single command: Specify exact command with full path&lt;br /&gt;
* IP restriction: Limit to specific IP address(es) or subnet&lt;br /&gt;
* Admin approval: Keys require review before activation&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Common use case:&#039;&#039;&#039; [[Registration/SSH/rrsync|rrsync for data transfers]]&lt;br /&gt;
&lt;br /&gt;
=== Registration Steps ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Add your public key&#039;&#039;&#039; following [[#Step_1:_Add_Your_SSH_Key_to_the_Portal|Step 1]] above&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Navigate to &amp;quot;Registered Services&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Set SSH Key&#039;&#039;&#039; for your cluster&lt;br /&gt;
&lt;br /&gt;
[[File:BwIDM-registered.png|center|600px|thumb|Select cluster]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Find your key and click &amp;quot;Add&amp;quot; / &amp;quot;Hinzufügen&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Ssh-service-com.png|center|800px|thumb|Add SSH key to service]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure command restrictions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Usage type:&#039;&#039;&#039; Select &#039;&#039;&#039;Command&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Command:&#039;&#039;&#039; Full path with parameters (see example below)&lt;br /&gt;
* &#039;&#039;&#039;From:&#039;&#039;&#039; IP address or CIDR notation (e.g., &amp;lt;code&amp;gt;192.168.1.0/24&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Comment:&#039;&#039;&#039; Explain purpose (speeds up approval)&lt;br /&gt;
* Click &#039;&#039;&#039;Add&#039;&#039;&#039; / &#039;&#039;&#039;Hinzufügen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Example: rrsync for data transfer&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;pre&amp;gt;/usr/local/bin/rrsync -ro /home/aa/aa_bb/aa_abc1/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Verify exact path on your cluster (may be &amp;lt;code&amp;gt;/usr/bin/rrsync&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Ssh-com.png|center|600px|thumb|Configure command key]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Wait for approval&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Ssh-service.png|center|800px|thumb|Key pending approval]]&lt;br /&gt;
&lt;br /&gt;
== Revoking SSH Keys ==&lt;br /&gt;
&lt;br /&gt;
Revoke keys that are no longer needed or potentially compromised.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 3px solid #6c757d; padding: 15px; background-color: #e2e3e5; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Revoked keys are immediately disabled and cannot be reused.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Navigate to SSH key management:&#039;&#039;&#039;&lt;br /&gt;
* [https://login.bwidm.de/user/ssh-keys.xhtml bwUniCluster 3.0 / NEMO 2] (bwIDM)&lt;br /&gt;
* [https://bwservices.uni-heidelberg.de/user/ssh-keys.xhtml bwForCluster Helix] (bwServices)&lt;br /&gt;
&lt;br /&gt;
[[File:BwIDM-twofa.png|center|600px|thumb|My SSH Pubkeys page]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Click &amp;quot;REVOKE&amp;quot; / &amp;quot;ZURÜCKZIEHEN&amp;quot;&#039;&#039;&#039; next to the key you want to disable&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Click &#039;&#039;&#039;REVOKE&#039;&#039;&#039; / &#039;&#039;&#039;ZURÜCKZIEHEN&#039;&#039;&#039; next to the key you want to disable&lt;br /&gt;
&lt;br /&gt;
[[File:Ssh-success.png|center|800px|thumb|Revoke SSH key]]&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Security&amp;diff=16226</id>
		<title>SDS@hd/Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Security&amp;diff=16226"/>
		<updated>2026-07-20T13:41:06Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added hints and explanations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
== Snapshots ==&lt;br /&gt;
&lt;br /&gt;
Snapshots are used to create a point-in-time copy of a file system or file sets.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ins&amp;gt;Motivation&amp;lt;/ins&amp;gt;: Snapshots can be used to quickly restore files or folders that were unintentionally deleted. Snapshots also provide a form of file versioning and the ability to revert to a previous version of a file, depending on the time interval between snapshots. The shorter ago a change was made and/or the longer it was kept the likelier it is that it can still be found in one of the snapshots.&lt;br /&gt;
&lt;br /&gt;
When looking into the &amp;lt;code&amp;gt;.snapshots&amp;lt;/code&amp;gt; folder within your SV you can see how often the snapshots are taken and how long they are preserved. For example: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls .snapshots&lt;br /&gt;
&amp;gt; @GMT-2026.08.10-19.07.13  @GMT-2026.09.09-14.15.00  @GMT-2026.09.14-20.15.00  @GMT-2026.09.16-16.15.00  @GMT-2026.09.19-08.15.00&lt;br /&gt;
@GMT-2026.08.11-01.07.13  @GMT-2026.09.09-22.15.00  @GMT-2026.09.14-20.45.00  @GMT-2026.09.16-16.45.00  @GMT-2026.09.19-09.00.00&lt;br /&gt;
@GMT-2026.08.11-07.07.13  @GMT-2026.09.10-06.15.00  @GMT-2026.09.14-21.15.00  @GMT-2026.09.16-17.15.00  @GMT-2026.09.19-03.15.00 &lt;br /&gt;
@GMT-2026.09.19-03.45.00  @GMT-2026.09.19-05.45.00  @GMT-2026.09.19-07.45.00&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hints ==&lt;br /&gt;
&lt;br /&gt;
* It&#039;s not allowed to use SDS@hd as a backup for your data. The data on SDS@hd must be actively used. If the data is not actively used, you might find out about an accidental deletion of data far too late so that there isn&#039;t a snapshot anymore that contains the deleted data. &lt;br /&gt;
* Please avoid keeping duplicate data in your SV. Even if the duplicate data is stored in the SV for a short time period only, it can still make it into a snapshot and use up storage space on SDS@hd for quite a long time.&lt;br /&gt;
* When uploading data, please make sure that all the data actually made it into the SV. The snapshots can&#039;t capture data that has never reached the SV. Please see [[Data_Transfer | Data Transfer]] for help with ensuring that data transfers were finished successfully.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Running_Calculations&amp;diff=16213</id>
		<title>Running Calculations</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Running_Calculations&amp;diff=16213"/>
		<updated>2026-07-14T08:32:28Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added monitoring&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;← This page is used in the [[HPC Glossary]] to explain the term &amp;quot;Batch Scheduler&amp;quot; and &amp;quot;Batch System&amp;quot;&lt;br /&gt;
== Life Cycle of a Calculation (Job) ==&lt;br /&gt;
[[File:running_calculations_on_cluster.svg|thumb|upright=0.4]]&lt;br /&gt;
On your desktop computer you start your calculations and they start immediately, running until they are finished. Then your desktop does mostly nothing, until you start another calculation. A compute cluster has several hundred, maybe a thousand computers (compute nodes), all of them are busy most of the time and many people want to run a great number of calculations. So running your job has to include some extra steps:&lt;br /&gt;
&lt;br /&gt;
# prepare a script (a set commands to run - usually as a shell script), with all the commands that are necessary to run your calculation from start to finish. In addition to the commands necessary to run the calculation, this &#039;&#039;[[batch script]]&#039;&#039; has a header section, in which you specify details like required compute cores (processing units witin a computer), estimated runtime, memory requirements, disk space needed, etc.&lt;br /&gt;
# &#039;&#039;Submit&#039;&#039; the script into a queue, where your &#039;&#039;job&#039;&#039; (calculation) &lt;br /&gt;
# gets asigned an inital priority, is queued and waits in row with other compute jobs until the resources you requested in the header become available. (Requested time is also a resource!) &lt;br /&gt;
# Execution: Once a suitable resource slot is available and your job is in the front of the queue of suitable jobs (suitable with regards to the resource slot), your script is executed on (a) compute node(s). Your calculation runs on that/those node(s) until it is finished or reaches the specified time limit. &lt;br /&gt;
# Save results: Include commands to save the calculation results back to a long term storage (e.g. your home directory), at least at the end of your script. What you have not saved until the job finishes won&#039;t be saved!&lt;br /&gt;
# If your job reaches the specified time limit, all your running processes will be killed and the resources get cleared. So any data that has not been saved will be lost!&lt;br /&gt;
&lt;br /&gt;
The software that distributes jobs on compute nodes is called a &#039;&#039;&#039;[[batch system]]&#039;&#039;&#039; or &#039;&#039;&#039;batch scheduler&#039;&#039;&#039;. The software currently used as a [[batch system]] on bwHPC clusters is &amp;quot;Slurm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Learn more about the functioning of job distribution in&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; &#039;&#039;&#039;[[batch system]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Example Jobs ==&lt;br /&gt;
&lt;br /&gt;
For most software that a bwHPC project installed on the cluster, we have prepared an example job script running some example calculation with that exact software.&lt;br /&gt;
&lt;br /&gt;
How to access these examples is described in the &amp;quot;Software job examples&amp;quot; section of the page&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; &#039;&#039;&#039;[[Environment Modules]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Job Script and Job Submission == &lt;br /&gt;
&lt;br /&gt;
Batch jobs are submitted with the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbatch &amp;lt;job-script&amp;gt; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A job script contains options for Slurm in lines beginning with #SBATCH as well as your commands which you want to execute on the compute nodes. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;slurm&amp;quot;&amp;gt;#!/bin/bash&lt;br /&gt;
#SBATCH --partition=&amp;lt;cluster specific&amp;gt;&lt;br /&gt;
#SBATCH --ntasks-per-node=8 &lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
#SBATCH --mem=1gb&lt;br /&gt;
#SBATCH --export=NONE&lt;br /&gt;
echo &#039;Here would start your calculation script&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see cluster specific examples from the links in the next section, because exact options needed differ by cluster. &lt;br /&gt;
&lt;br /&gt;
== Link to Batch System and Examples per Cluster ==&lt;br /&gt;
&lt;br /&gt;
Because of differences in configuration (partly due to different available hardware), each cluster has their own batch system documentation:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; &#039;&#039;&#039;[[BwUniCluster3.0/Running_Jobs|Slurm bwUniCluster 3.0]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; &#039;&#039;&#039;[[JUSTUS2/Jobscripts: Running Your Calculations | Slurm JUSTUS 2]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr;  &#039;&#039;&#039;[[Helix/Slurm   | Slurm Helix]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr;  &#039;&#039;&#039;[[NEMO2/Slurm | Slurm NEMO2]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr;  &#039;&#039;&#039;[[BinAC2/Slurm | Slurm BinAC2]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== How To Run Jobs Efficiently ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you are running your calculations, you will have to decide on how many compute-cores your job will be simultaneously calculated. &lt;br /&gt;
For this, your computational problem will have to be divided into pieces, which always causes some overhead. &lt;br /&gt;
&lt;br /&gt;
How to find a reasonable number of how many compute cores to use for your calculation can be found under&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr;  &#039;&#039;&#039;[[Scaling]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Running calculations on an HPC node consumes a lot of energy. To make the most of the available resources and keep cluster and energy use as efficient as possible please also see our advice for &lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; &#039;&#039;&#039;[[Efficient Cluster Usage]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To optimize the job efficiency, it is very helpful to check which resources a job has actually used. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; &#039;&#039;&#039;[[Job Monitoring]]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Scaling&amp;diff=16212</id>
		<title>Scaling</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Scaling&amp;diff=16212"/>
		<updated>2026-07-14T07:52:57Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added a summary in the beginning.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Scaling&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Dividing a problem in several sub-problems creates additional work for taking track of the sub-problems and assembling the pieces to solve the whole problem. At some point this additional work becomes larger than the work spent on calculating the actual problem. A problem is called to &amp;quot;scale well&amp;quot;, if little such additional work is needed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases for scaling up parallel programs would be to explore research questions...&lt;br /&gt;
* ...in higher resolution&lt;br /&gt;
* ...at a larger scale&lt;br /&gt;
* ...with increasing complexity&lt;br /&gt;
&lt;br /&gt;
Before you submit large runs, hundreds or thousands of similar calculations, on a bwHPC cluster you should define an optimal amount of compute-cores required for your job. If you use too few cores, your computation may take much too long - if you use too many cores, they will not improve the speed of your computation and all you do by using more cores is wasting compute resources and energy while decreasing your fair share value which means longer waiting times for your future jobs.&lt;br /&gt;
&lt;br /&gt;
A scaling analysis is done by identifying the number of resources (such as the number of cores, nodes, or GPUs) that enable the best performance for a given compute job.&lt;br /&gt;
&lt;br /&gt;
Before getting started, read first the chapter about [[Energy Efficient Cluster Usage | (Energy) Efficient Cluster Usage]] to make sure that you don&#039;t scale up an inefficient job.&lt;br /&gt;
&lt;br /&gt;
== Basic Recipe to Determine Core Numbers ==&lt;br /&gt;
&lt;br /&gt;
# Optimizing resource usage is most relevant when submitting many or resource-heavy jobs. &lt;br /&gt;
# If you plan to submit many jobs, verify that the core number is acceptable. If the jobs use N cores (i.e. N is 128 for a two-node job), then run the same job with N/2 cores (in this example 64 cores).&lt;br /&gt;
# To calculate the speedup, you then divide the (longer) run time of the N/2-core-job by the (shorter) run time of the N-core-job. Typically the speedup is a number between 1.0 (no speedup at all) and 2.0 (perfect speedup - all additional cores speed up the job).&lt;br /&gt;
#: a) IF the speedup is better than a factor of 1.7, THEN using N cores is perfectly fine.&lt;br /&gt;
#: b) IF the speedup is worse than a factor of 1.7, THEN using N cores wastes too many resources and N/2 cores should be used.&lt;br /&gt;
&lt;br /&gt;
== Considering Resources vs. Queue Time ==&lt;br /&gt;
&lt;br /&gt;
When a job is submitted to the scheduler of an HPC cluster, the job first waits in the queue before being executed on the compute nodes. &lt;br /&gt;
The amount of time spent in the queue is called the queue time. &lt;br /&gt;
The amount of time it takes for the job to run on the compute nodes is called the execution time.&lt;br /&gt;
&lt;br /&gt;
The figure below shows that the queue time increases with increasing resources (e.g., CPU cores) while the execution time decreases with increasing resources. &lt;br /&gt;
One should try to find the optimal set of resources that minimizes the &amp;quot;time to solution&amp;quot; which is the sum of the queue and execution times. &lt;br /&gt;
A simple rule is to choose the smallest set of resources that gives a reasonable speed-up over the baseline case.&lt;br /&gt;
&lt;br /&gt;
[[File:Fig_resources_vs_queue_time.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
== Scaling Efficiency ==&lt;br /&gt;
&lt;br /&gt;
When you run a parallel program, the problem has to be cut into several independent pieces. For some problems, this is easier than for others - but in every case, this produces an overhead of time used to divide the problem, distribute parts of it to tasks, and stitch the results together.&lt;br /&gt;
For a theoretical amount of &amp;quot;infinite calculations&amp;quot;, calculating each problem on one single core would be the most efficient way to use the hardware.&lt;br /&gt;
In extreme cases, when the problem is very hard to divide, using more compute cores, can even make the job finish later.&lt;br /&gt;
&lt;br /&gt;
For real calculations, it is often impractical to wait for calculations to finish if they are done on a single core. &lt;br /&gt;
Typical calculation times for a job should stay under 2 days, or up to 2 weeks for jobs that cannot use more cores efficiently. &lt;br /&gt;
Any longer and the risks such as node failures, cluster downtimes due to maintenance, and getting (possibly wrong) results after too much wait time can become too much of a problem.&lt;br /&gt;
&lt;br /&gt;
A common way to assess the efficiency of a parallel program is through its speedup. &lt;br /&gt;
Here, the speedup is defined as the ratio of the time a serial program needs to run to the time for the parallel program that accomplishes the same work. &lt;br /&gt;
&lt;br /&gt;
 Speedup= Time(serial program) / Time(parallel program)&lt;br /&gt;
&lt;br /&gt;
A simple example would be a calculation that takes 1000 hours on 1 core.&lt;br /&gt;
Without any overhead from parallelization, the same calculation run on 1000 cores would need 1000/100= 10 hours, the ideal speedup.&lt;br /&gt;
More realistically, such a calculation for parallelized code would need around 30 hours.&lt;br /&gt;
&lt;br /&gt;
[[File:Fig_speedup.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
However, there is a theoretical upper limit on how much faster you can solve the original problem by using additional cores ([[Wikipedia:Amdahl%27s_law|Amdahl&#039;s Law]]). &lt;br /&gt;
While a considerable part of a compute job might parallelize nicely, there is always some portion of time spent on I/O, such as saving or reading from disc, network limitations, communication overhead, or performing calculations that cannot be parallelized, thus reducing the speedup that is possible by simply adding more computational resources.&lt;br /&gt;
&lt;br /&gt;
From the speedup, a useful definition of efficiency can be derived:&lt;br /&gt;
&lt;br /&gt;
 Efficiency = Speedup / Number of cores = Time(serial program) / (Time(parallel program) * Number of cores)&lt;br /&gt;
&lt;br /&gt;
The efficiency allows for an estimation of how well your code is using additional cores, and how much of the resources are lost by doing parallelization overhead calculations.&lt;br /&gt;
Coming back to the previous example, we can now use the time of a serial calculation (1000 hours), the time our parallelized code took to finish (30 hours), the number of cores we used (100 cores), and calculate the efficiency.&lt;br /&gt;
&lt;br /&gt;
 Efficiency = 1000 / (30 * 100) = 0.3&lt;br /&gt;
&lt;br /&gt;
This shows that for this example, only 30% of the resources are used to solve the problem, while 70% of our resources are spent on parallelization overhead.&lt;br /&gt;
A semi-arbitrary cut-off for determining if a job is well-scaled is if 50% or less of the computation is wasted on parallelization overhead.&lt;br /&gt;
Therefore, we can determine that for this example too many resources are used.&lt;br /&gt;
&lt;br /&gt;
In many cases, the time needed for calculating a given code in serial, on a single core, is not accessible, as this would take a very long time and is usually the reason why an HPC cluster is needed in the first place.&lt;br /&gt;
To circumvent this, the relative speedup when doubling the number of cores is calculated.&lt;br /&gt;
&lt;br /&gt;
 Relative Speedup (N Cores -&amp;gt; 2N Cores) = Time(N Cores) / Time(2N Cores)&lt;br /&gt;
&lt;br /&gt;
The relative speedup obtained by doubling the number of cores can be used as a rough guideline for a scaling analysis. &lt;br /&gt;
If doubling the number of cores results in a relative speedup of above 1.8, the scaling is considered good.&lt;br /&gt;
Above 1.7 is considered acceptable, while a relative speedup of less than 1.7 should usually be avoided.&lt;br /&gt;
We can illustrate this by using our simple parallelization example from above. &lt;br /&gt;
If we assume that our code would have finished in 45 hours when using 50 cores, we can calculate the relative speedup:&lt;br /&gt;
&lt;br /&gt;
 Relative Speedup (50 Cores -&amp;gt; 100 Cores) = Time(50 Cores) / Time(100 Cores) = 45 h / 30 h = 1,5&lt;br /&gt;
&lt;br /&gt;
A relative speedup of 1,5 is considered undesirable, so we should run our example code using 50 rather than 100 cores on the HPC cluster.&lt;br /&gt;
&lt;br /&gt;
In the following a scaling analysis from a real example using the program VASP is shown.&lt;br /&gt;
&lt;br /&gt;
[[File:Fig_speedup_and_efficiency_1.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:Fig_speedup_and_efficiency_2.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
== Better Resource Usage by Increasing the System Size ==&lt;br /&gt;
&lt;br /&gt;
Amdahl’s law, as illustrated above, gives the upper limit of speedup for a problem of fixed size.&lt;br /&gt;
By simply increasing the number of cores to speed up a calculation your compute job can quickly become very inefficient, and wasteful. &lt;br /&gt;
While this appears to be a bottleneck for parallel computing, a different strategy was pointed out ([[Wikipedia:Gustafson&#039;s_law|Gustafson&#039;s law]]). &lt;br /&gt;
&lt;br /&gt;
A reasonable choice is to use small amounts of resources for small problems and larger quantities of resources for big problems. Thus, researchers can take advantage of available cores by scaling up parallel programs to explore their questions in higher resolution or at a larger scale.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Energy_Efficient_Cluster_Usage&amp;diff=16211</id>
		<title>Energy Efficient Cluster Usage</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Energy_Efficient_Cluster_Usage&amp;diff=16211"/>
		<updated>2026-07-14T07:51:47Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Restructured content and added more advice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Poor job efficiency means that hardware resources are wasted and a similar overall result could have been achieved using fewer hardware resources, leaving those for other jobs and reducing the queue wait time for all users.&lt;br /&gt;
Efficient cluster usage means choosing optimal values for job resources:&lt;br /&gt;
* CPU cores&lt;br /&gt;
* GPUs&lt;br /&gt;
* Memory&lt;br /&gt;
* (temporary) storage&lt;br /&gt;
* Time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&#039;&#039;&#039;User perspective&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Short waiting times including short cycles of trial and error and fast results. The lower the job efficiency the longer the waiting times relative to the shortest possible time.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Energy perspective&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Energy consumption of data centers has been increasing continuously throughout the last decade. In 2020, the energy consumption of all data centers in Germany amounted to around  [https://www.bundestag.de/resource/blob/863850/423c11968fcb5c9995e9ef9090edf9e6/WD-8-070-21-pdf-data.pdf 3 percent] of the total electricity produced. Accompanying this large energy consumption are large-scale emissions of CO2 to the atmosphere and thus significant contributions to climate change.&lt;br /&gt;
To illustrate this, an average compute job running on a single node for one day may easily consume 10 kWh or even more. That translates roughly to brewing 700 cups of coffee.&lt;br /&gt;
Assuming that a typical bwHPC cluster has a few hundred compute nodes, this amounts to the energy consumption of a village for each cluster. &lt;br /&gt;
Although a large amount of this energy consumption is an intrinsic requirement of running large HPC clusters (even when it&#039;s processors are idle, a cluster uses a lot of energy), efficient use of the available resources is important. &lt;br /&gt;
&lt;br /&gt;
Something to keep in mind: &lt;br /&gt;
‎&amp;lt;blockquote&amp;gt;Using as many resources as possible does not make a power user. Using them wisely does.‎&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Recommendations ==&lt;br /&gt;
&lt;br /&gt;
* Use the &#039;&#039;&#039;job monitoring&#039;&#039;&#039; options of your respective cluster to see the job efficiency and ways to improve it. &lt;br /&gt;
* &#039;&#039;&#039;Test&#039;&#039;&#039; new setups first before submitting a lot of similar jobs or resource demanding jobs.  &lt;br /&gt;
** Run a single job first before sending many. &lt;br /&gt;
** Run a simplified problem on a small number of parallel entities (be it processes or threads) first before requesting many resources. &lt;br /&gt;
** Run a time intensive task with a short runtime first to see if it already fails in the first minutes. &lt;br /&gt;
* Follow the best practices of your chosen tool, software or programming language and choose the most efficient algorithms for the given problem. There are several places where you might find related documentation: &lt;br /&gt;
** Software Module help. &lt;br /&gt;
** Software page of your cluster. &lt;br /&gt;
** Pages linked at the [[Development]] page. For example information about debugging, performance analysis, specific programming languages etc. . &amp;amp;rarr;  Use an efficient programming language such as Rust, C, and C++ -- well any compiled language. Do not use any interpreted language like Perl or Python. Since Machine Learning is a hot topic, this deserves a few words: Any ML-Python code using Tensorflow or other libraries will make heavy usage of NumPy and other math packages, which will use C-based implementations. Please make sure, you use the provided Python modules, which are optimized to use Intel MKL and other mathematical libraries.&lt;br /&gt;
Further reading:&lt;br /&gt;
Rui Pereira, et al: &amp;quot;&#039;&#039;Energy efficiency across programming languages: how do energy, time, and memory relate?&#039;&#039;&amp;quot;, SLE 2017: Proc. of the 10th ACM SIGPLAN Int. Conf. on SW Language Eng., Oct. 2017, pp. 256–267, [https://doi.org/10.1145/3136014.3136031 doi:10.1145/3136014.3136031]&lt;br /&gt;
* If you have a task that can be scaled up, please consider a [[Scaling | &#039;&#039;&#039;scaling analysis&#039;&#039;&#039;]].&lt;br /&gt;
* Analyse &#039;&#039;&#039;memory access patterns&#039;&#039;&#039;: For small tight loops checking for locks, use the &amp;lt;code&amp;gt;pause&amp;lt;/code&amp;gt; instruction.&lt;br /&gt;
&lt;br /&gt;
== Things to avoid ==&lt;br /&gt;
&lt;br /&gt;
* Poor choice of resources compared to the size of the nodes leaves part of the node blocked, but doing nothing:&lt;br /&gt;
** Too much (un-needed) memory or disk space requested&lt;br /&gt;
* Many small jobs with a short runtime (seconds in extreme cases). A job should run at least 10 minutes. &lt;br /&gt;
* When a node has 256 gb memory but only 236 gb are usable (see Hardware table of your cluster) then requesting 256 gb memory needs two nodes. &lt;br /&gt;
* GPU: Do not ask for a specific gpu type when your code would be fitting for any type. &lt;br /&gt;
* More cores used for a single mpi/openmp parallel computation than useful.&lt;br /&gt;
* Writing temporary files to global filesystems when a ram disk or local disk can be used.&lt;br /&gt;
* Do not use more parallel processes than there are actual, reasonable parallel tasks. Examples: &lt;br /&gt;
** 4 datasets with values for the same 1000 genes each. Method xx shall be used per gene. This operation needs 10 seconds per gene. &lt;br /&gt;
*** Case 1: Provide 64 single threaded cores within one job and use one process/thread per gene: This creates a large overhead as only 64 processes can run in parallel while all 5000 processes try to get computing time so that a process might run for 5 seconds and then makes room for another process that also isn&#039;t able to finish because another process comes in between.&lt;br /&gt;
*** Case 2: Send 1 job per gene so that each job uses method xx on this gene in all 4 datasets: This creates a large overhead as each job only needs 50 seconds while there is a thousand times the overhead of creating and finishing a job. &lt;br /&gt;
*** Case 3: Provide 64 cores in one job. Each dataset uses 16 cores. Each core needs to process 1000/16 =~ 63 genes. This needs 63*10 seconds &lt;br /&gt;
= 10.5 minutes job runtime with just the overhead of creating a single job and 16 processes without switching between processes. &lt;br /&gt;
** &amp;amp;rarr;  Simple parallelization by hand is advisable. See: A basic introduction to [[Development/Parallel_Programming | Parallel Programming]].&lt;br /&gt;
&lt;br /&gt;
== Fair Share and Scheduler ==&lt;br /&gt;
Influence of Efficiency on Fair Share and Scheduler:&lt;br /&gt;
* &#039;&#039;&#039;Fair Share value:&#039;&#039;&#039; &lt;br /&gt;
*: The fair share value represents your priority on the cluster. On a busy cluster a low priority leads to longer waiting times as other users with a higher priority have a higher chance of getting free resource slots. The fair share value declines when a lot of cluster resources were used recently. Used is defined as follows: &lt;br /&gt;
*:* Requested resources: 4 gpus for 2 hours&lt;br /&gt;
*:* Actual resource usage: 1 gpu and job finishes successfully after 1 hour. &lt;br /&gt;
*:* Used resources as considered by the fair share value: 4 gpus for 1 hour because the three idle gpus couldn&#039;t be used by any other cluster used as they were blocked by this job.  &lt;br /&gt;
* &#039;&#039;&#039;Job scheduler:&#039;&#039;&#039; &lt;br /&gt;
*: The longer the requested runtime and the more resources are needed in that time the harder it is to find a fitting timeframe where these resources are free.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Registration/Entitlement&amp;diff=16208</id>
		<title>SDS@hd/Registration/Entitlement</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Registration/Entitlement&amp;diff=16208"/>
		<updated>2026-07-13T12:21:49Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: added a sentence from the service description page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Get SDS@hd Entitlement ==&lt;br /&gt;
&lt;br /&gt;
New SVs can only be opened by bwIDM members who have the &#039;&#039;&#039;sds-hd-sv&#039;&#039;&#039; entitlement from their home university. This entitlement may have to be applied for individually at the home organisation. The criteria for awarding the entitlement to a user are entirely up to the respective home organization &lt;br /&gt;
&lt;br /&gt;
To see if you already have the needed entitlement, you can [[SDS@hd/Registration/Entitlement#Check_your_Entitlements|&#039;&#039;check your entitlements&#039;&#039;]].&lt;br /&gt;
&lt;br /&gt;
If you need the entitlement, follow the instructions for your home university. &amp;lt;u&amp;gt;If none are provided, please contact your local service desk&amp;lt;/u&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Universität Freiburg&#039;&#039;&#039;&lt;br /&gt;
** Employees of the University of need to fill out this [https://uni-freiburg.de/forms-en/sds-hd-sv-entitlement/ &#039;&#039;&#039;form&#039;&#039;&#039;].&lt;br /&gt;
* &#039;&#039;&#039;Universität Heidelberg&#039;&#039;&#039; &lt;br /&gt;
** Employees of Heidelberg University receive this entitlement automatically. Students can&#039;t receive it.&lt;br /&gt;
* &#039;&#039;&#039;Universität Mannheim&#039;&#039;&#039;&lt;br /&gt;
** Employees of the University of Mannheim receive this entitlement automatically. Students can&#039;t receive it.&lt;br /&gt;
* &#039;&#039;&#039;Universität Ulm&#039;&#039;&#039;&lt;br /&gt;
** Please contact the helpdesk. See https://www.uni-ulm.de/einrichtungen/kiz/service-katalog/beratung-schulung-hilfe/helpdesk/&lt;br /&gt;
&lt;br /&gt;
== Check your Entitlements ==&lt;br /&gt;
&lt;br /&gt;
# Log in to https://bwservices.uni-heidelberg.de&lt;br /&gt;
# Go to &amp;quot;Index&amp;quot; -&amp;gt; &amp;quot;Personal Data&amp;quot;&lt;br /&gt;
# Choose the &amp;quot;Shibboleth&amp;quot; tab&lt;br /&gt;
# Search for the following entry: http://bwidm.de/entitlement/sds-hd-sv (this is an attribute and not a link)&lt;br /&gt;
If you can find it, you already have the needed entitlement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align:right;&amp;quot;&amp;gt;&amp;amp;rarr; [[SDS@hd/Registration#b)_Apply_for_new_SV| go forward with the SV application]]&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Acknowledgement&amp;diff=16207</id>
		<title>SDS@hd/Acknowledgement</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Acknowledgement&amp;diff=16207"/>
		<updated>2026-07-13T12:11:31Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: added third party funded projects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When preparing a publication describing work that involved the usage of SDS@hd, please ensure that you reference the system. The following sample text is suggested as a starting point.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;SDS@hd Acknowledgement:&#039;&#039;&#039;&lt;br /&gt;
:&amp;lt;syntaxhighlight&amp;gt;The authors gratefully acknowledge the data storage service SDS@hd supported by the Ministry of Science, Research and the Arts Baden-Württemberg (MWK) and the German Research Foundation (DFG) through grant INST 35/1803-1 FUGG and INST 35/1804-1 LAGG.&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If [[Helix/bwVisu|bwVisu]] plays an important role for your project, please also reference this service: &lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; &#039;&#039;&#039;[[Helix/bwVisu/Acknowledgement|bwVisu Acknowledgement]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In addition, we kindly ask you to notify us of any &lt;br /&gt;
* reports&lt;br /&gt;
* conference papers&lt;br /&gt;
* journal articles&lt;br /&gt;
* theses (BSc, MSc, PhD)&lt;br /&gt;
* posters&lt;br /&gt;
* talks &lt;br /&gt;
* third-party funded projects &lt;br /&gt;
&lt;br /&gt;
which contain results obtained on work with SDS@hd by sending an email to  &lt;br /&gt;
[mailto:sds-hd-support@urz.uni-heidelberg.de  sds-hd-support@urz.uni-heidelberg.de] stating:&lt;br /&gt;
&lt;br /&gt;
* SV acronym (e.g. sd16A000)&lt;br /&gt;
* author(s)&lt;br /&gt;
* title &#039;&#039;or&#039;&#039; booktitle&lt;br /&gt;
* journal, volume, pages &#039;&#039;or&#039;&#039; editors, address, publisher &lt;br /&gt;
* year.&lt;br /&gt;
&lt;br /&gt;
Such recognition is important for acquiring funding for the next generation hardware, support services, data storage and infrastructure. Thank you!&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster/RV/Management&amp;diff=16150</id>
		<title>Registration/bwForCluster/RV/Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster/RV/Management&amp;diff=16150"/>
		<updated>2026-06-22T10:59:31Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: added RV extension section, redesigned &amp;#039;change RVV&amp;#039; section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Roles in a RV ==&lt;br /&gt;
There are three different roles in an RV. Depending on your role, different management activites can be executed in the ZAS under [https://zas.bwhpc.de/shib/en/info_rv.php &#039;&#039;&#039;My RVs&#039;&#039;&#039;]. These are described below.&lt;br /&gt;
&lt;br /&gt;
=== RV Coworker ===&lt;br /&gt;
&lt;br /&gt;
A coworker is a typical user who registered themselves via RV acronym and RV password. They...&lt;br /&gt;
* ...can check the status of their memberships (active/inactive). &lt;br /&gt;
* ...can check the status of the RV (active/inactive &amp;amp; the date when it becomes inactive when it doesn&#039;t get prolonged).&lt;br /&gt;
* ...can deregister from an RV. &lt;br /&gt;
* ...have to acknowledge the cluster in publications and inform the RV responsible of these publications. &lt;br /&gt;
&lt;br /&gt;
=== RV Manager ===&lt;br /&gt;
&lt;br /&gt;
Additionally to the abilities of a coworker, a manager can...&lt;br /&gt;
&lt;br /&gt;
* ...re-activate deregistered or inactive members.&lt;br /&gt;
* ...check the list of RV members at [https://zas.bwhpc.de/shib/en/info_rv.php &#039;&#039;&#039;My RVs&#039;&#039;&#039;] by selecting the RV acronym. After a role change, click &#039;&#039;&#039;Save changes&#039;&#039;&#039; at the end of the members list.&lt;br /&gt;
&lt;br /&gt;
=== RV Responsible ===&lt;br /&gt;
&lt;br /&gt;
Additionally to the abilities of a manager, the responsible can...&lt;br /&gt;
&lt;br /&gt;
* ...assign managers.&lt;br /&gt;
* ...extend the runtime of the RV by one more year. Therefore, a list of publications that were created with the help of the cluster must be provided when submitting the prolongation form. &lt;br /&gt;
* ...change the RV responsible.&lt;br /&gt;
* ...set a new password if necessary and share the password with future coworkers so that they can join the RV. &lt;br /&gt;
&lt;br /&gt;
==== Renew RV Password ====&lt;br /&gt;
&lt;br /&gt;
If you lose the RV password or want to create a new one, you can simply renew it:&lt;br /&gt;
&lt;br /&gt;
1. Login to [https://zas.bwhpc.de/shib/en/info_rv.php &#039;&#039;&#039;My RVs&#039;&#039;&#039;] first.&lt;br /&gt;
[[File:RV-my.png|center|frame|My RVs.]]&lt;br /&gt;
&lt;br /&gt;
2. Select the RV acronym for your RV.&lt;br /&gt;
&lt;br /&gt;
3. Scroll down and click &#039;&#039;&#039;Renew password&#039;&#039;&#039;.&lt;br /&gt;
[[File:RV-pw.png|center|thumb|400px|Renew RV password.]]&lt;br /&gt;
&lt;br /&gt;
You will get a form that looks similar to the form you got when registering the compute project. Most fields will be pre-filled with the things you entered when registering. Please check if the entered data is still accurate for your compute activity and adjust if necessary.&lt;br /&gt;
&lt;br /&gt;
A new field in the form asks you to fill in the publications that acknowledge the cluster. Please enter the DOIs of those publications. These publications should all have the cluster you used in their Acknowledgement in a format as shown in the [[Acknowledgement]] section for each cluster.&lt;br /&gt;
&lt;br /&gt;
==== Change the RV Responsible ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ins&amp;gt;Prerequisites:&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* You need to be the current RV responsible. In case you don&#039;t have access to your account anymore, you can ask the cluster support for help.&lt;br /&gt;
* The person you want to appoint as new RV responsible is a member of the RV.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ins&amp;gt;Steps:&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; style=&amp;quot;align=left;&amp;quot;&amp;gt;&lt;br /&gt;
File:RV-my.png|center|frame|&#039;&#039;&#039;1.&#039;&#039;&#039; Login to [https://zas.bwhpc.de/shib/en/info_rv.php &#039;&#039;&#039;My RVs&#039;&#039;&#039;] and go to the RV.&lt;br /&gt;
File:Rv-hand1.png|right|thumb|400px|&#039;&#039;&#039;2.&#039;&#039;&#039; Scroll down and click &#039;&#039;&#039;Handoff&#039;&#039;&#039;.&lt;br /&gt;
File:Rv-hand2.png|right|thumb|800px|&#039;&#039;&#039;3.&#039;&#039;&#039; Select &amp;quot;New RV responsible&amp;quot; from the drop-down menu, check &amp;quot;Agreement&amp;quot; and click &amp;quot;Preview: Handover RV&amp;quot; to continue.&lt;br /&gt;
File:Rv-hand3.png|right|thumb|800px|&#039;&#039;&#039;4.&#039;&#039;&#039; Confirm the handover. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;5.&#039;&#039;&#039; The newly appointed RV responsible gets notified via email. They have to accept within seven days.&lt;br /&gt;
&lt;br /&gt;
==== RV Extension ====&lt;br /&gt;
An RV is valid for one year. After that, the RV responsible must apply for an extension of the RV for it to be renewed for another year.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ins&amp;gt;Hints for specific cases:&amp;lt;/ins&amp;gt;&lt;br /&gt;
* I don&#039;t think that filling in the publication field is very important. &lt;br /&gt;
*: &amp;amp;rarr; The bwHPC clusters can be used for free but it&#039;s very important for us to acquire funding for the next generation hardware, support services, data storage and infrastructure. To get funding, it&#039;s essential to provide a list of research publications that benefitted from the clusters. Furthermore, you&#039;ve personally agreed to report publications in the process of registering for the cluster and you agreed to acknowledge them accordingly. Each cluster provides an example text for the acknowledgement. &lt;br /&gt;
* I&#039;m late with the extension application and it would take some time to find out cluster related publications. &lt;br /&gt;
*: &amp;amp;rarr; Write something like &amp;quot;I will provide them later&amp;quot; and send the list to your cluster&#039;s support unit as soon as you have them collected. &lt;br /&gt;
* We had a lot of publications but I&#039;m not sure which ones made use of the cluster. &lt;br /&gt;
*: &amp;amp;rarr; Please don&#039;t hand in the whole list but ask the RV members directly. &lt;br /&gt;
* We didn&#039;t have any cluster related publications. &lt;br /&gt;
*: &amp;amp;rarr; We would appreciate a short note about the reason. Some examples: &amp;quot;We didn&#039;t need the cluster much&amp;quot;, &amp;quot;The publication is still work in progress&amp;quot;, &amp;quot;We&#039;d appreciate some help for getting started with the cluster usage&amp;quot;.&lt;br /&gt;
* We have only preprints so far. &lt;br /&gt;
*: &amp;amp;rarr; You can report them already. &lt;br /&gt;
* The purpose and resource needs of the RV have changed. &lt;br /&gt;
*: &amp;amp;rarr; While it won&#039;t change anything for you, we still appreciate it when the information get updated via the RV extension form.&lt;br /&gt;
* We forgot to acknowledge the cluster in most of the publications. &lt;br /&gt;
*: &amp;amp;rarr; That&#039;s unfortunate but please report them nevertheless. You can save us the hassle of checking in detail when you provide us with an additional confirmation that the cluster was indeed used. For example &amp;quot;Some acknowledgements are missing but I confirm that the cluster usage was relevant for the publications nevertheless&amp;quot;. &lt;br /&gt;
* I fear that the RV gets deactivated before the extension application gets accepted. &lt;br /&gt;
*: &amp;amp;rarr; Depending on the cluster the access will still be possible for a while even if the RV is over its due date. But no new members can join while the extension is pending.&lt;br /&gt;
* We didn&#039;t use the RV for a long time but now that I want to hand in the RV extension, I don&#039;t see the button anymore. &lt;br /&gt;
*: &amp;amp;rarr; Please write to the support. We can enable the button again for 14 days. &lt;br /&gt;
* Looking back I must say that we did some great research with the help of the cluster. &lt;br /&gt;
*: We&#039;re happy to hear that and would love to show it off at our bwHPC website as [https://www.bwhpc.de/success_stories.php success story]. Don&#039;t hesitate to [https://www.bwhpc.de/project_report.php submit] a short summary.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster/Helix&amp;diff=16142</id>
		<title>Registration/bwForCluster/Helix</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster/Helix&amp;diff=16142"/>
		<updated>2026-06-17T08:43:27Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: emphasized main point&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
Steps A + B in the [[Registration/bwForCluster | registration process]] must be finished. &lt;br /&gt;
&lt;br /&gt;
== Registration Steps ==&lt;br /&gt;
&lt;br /&gt;
# Visit the bwForCluster Helix &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de registration page bwServices]&#039;&#039;&#039;.&lt;br /&gt;
#: [[File:bwServices_chooseHomeOrganisation.png|right|300px|thumb|Select your home organization]]&lt;br /&gt;
# &#039;&#039;&#039;Select your home organization&#039;&#039;&#039; from the list on the main page and click Proceed/Fortfahren. You will be directed to the &#039;&#039;Identity Provider&#039;&#039; of your home organization.&lt;br /&gt;
# Enter the &#039;&#039;&#039;username and password&#039;&#039;&#039; of your home organization (usually these credentials are also used for other services like email) and click Login/Einloggen.&lt;br /&gt;
# When you log in to bwServices for the first time, an overview will appear, with the account information that your home institution submits to the system. Please verify that all data is valid and then click &#039;&#039;Continue/Weiter&#039;&#039;.&lt;br /&gt;
#  You will be redirected back to the bwServices main page. It shows all the statewide services you have access to. Click &#039;&#039;&#039;Register/Registrieren&#039;&#039;&#039; under the field labeled &#039;&#039;bwForCluster Helix&#039;&#039;.&lt;br /&gt;
#: [[File:BwIDM-reg.png|center|frame|Register for Helix]]&lt;br /&gt;
# bwForCluster Helix uses a &#039;&#039;&#039;2-factor authentication&#039;&#039;&#039; (2FA) mechanism to increase security.&lt;br /&gt;
#: If you have never registered a 2FA token on bwIDM, the following error message will appear:&lt;br /&gt;
#: [[File:Bwidm-3-red.png|center|600px|thumb|Second factor missing.]]&lt;br /&gt;
#: Use this &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de/user/twofa.xhtml link]&#039;&#039;&#039; or select &#039;&#039;&#039;My Tokens&#039;&#039;&#039; in the main menu.&lt;br /&gt;
#: To register a new token, please follow these &#039;&#039;&#039;[[Registration/2FA|instructions]]&#039;&#039;&#039;.&lt;br /&gt;
#: Please complete this step before continuing.&lt;br /&gt;
# Read the Terms of Use / Nutzungsbedingungen, place a check mark next to &#039;&#039;I have read and accepted the terms of use&#039;&#039; and click &#039;&#039;Register/Registrieren&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Set a service password&#039;&#039;&#039; for bwForCluster Helix and click &#039;&#039;Save/Speichern&#039;&#039;.&lt;br /&gt;
#: Be sure to use a secure password that is different from any other passwords you currently use or have used on other systems.&lt;br /&gt;
[[File:BwIDM-passwd.png|center|600px|thumb|Set service password]]&lt;br /&gt;
{|style=&amp;quot;background:#deffee; width:70%; margin: auto;&amp;quot;&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
[[Image:Attention.svg|center|25px]]&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
The service password is your private password for accessing the bwForCluster Helix. Don&#039;t ever share it with anyone!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Registration Website bwServices ==&lt;br /&gt;
The registration website &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de bwServices]&#039;&#039;&#039; offers the following functionality: &lt;br /&gt;
* Register for the service.&lt;br /&gt;
* Set or change your service password.&lt;br /&gt;
* Review your registration details under &amp;quot;Registry Info&amp;quot;. This includes your account status (active/lost_access).&lt;br /&gt;
* bwServices triggers an update of your user information upon login.&lt;br /&gt;
* Registering an [[Registration/SSH | SSH key]]. It can be used for login to &#039;&#039;bwForCluster Helix&#039;&#039;. &lt;br /&gt;
* Creating tokens for logins that need 2-factor authentication ([[Registration/2FA |2FA]]) like &#039;&#039;bwForCluster Helix&#039;&#039; and &#039;&#039;bwVisu&#039;&#039;.&lt;br /&gt;
* De-register from the service.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting with the Help of bwServices ===&lt;br /&gt;
When encountering connection issues with a service, the bwServices website is a good starting point for troubleshooting: &lt;br /&gt;
{| style=&amp;quot;border: 2px solid #FFD28A; background-color: #ffe0af; padding: 10px; margin-bottom: 1em; width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;⚠ Login to bwServices first.&#039;&#039;&#039; This triggers an update of your user information within some minutes and solves the connection issue in the following cases: &lt;br /&gt;
* User data changed: entitlement, SV/RV status, SV/RV membership status, role or email address changed or uni-id was (re)activated&lt;br /&gt;
* Synchronization issues of the service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Expired contract&#039;&#039;&#039; or inactive student id: &lt;br /&gt;
** No access to state services like the bwHPC clusters or SDS@hd is possible.&lt;br /&gt;
** You can see that this is the issue when the login to bwServices via your identity provider is not possible. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Entitlement / RV missing:&#039;&#039;&#039; Prerequisites like entitlement ownership or RV membership aren&#039;t met (anymore). &lt;br /&gt;
** You can see the concrete issue and advice on how to move forward when looking at the registry info of the service on the bwServices website.&lt;br /&gt;
** When the issue is solved, the account status changes from LOST_ACCESS to ACTIVE. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Service Password:&#039;&#039;&#039; When trying to connect to the service, the service password is not accepted. &lt;br /&gt;
** Set a [[#Setting_a_New_Service_Password | new password]].&lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; OTP:&#039;&#039;&#039; In the case of login issues with a service that uses 2FA, you can check if you&#039;re OTP is working by going in the menu to &#039;&#039;Index&#039;&#039; -&amp;gt; &#039;&#039;My Tokens&#039;&#039;. &lt;br /&gt;
** If you&#039;re token is not working, you might have had too many failed login attempts. You can request a reset of the error counter from the support. &lt;br /&gt;
** If the token needs to be reset, please follow the instructions for a [[Helix/Login#Troubleshooting | Lost Token]].&lt;br /&gt;
&lt;br /&gt;
=== Setting a New Service Password === &lt;br /&gt;
&lt;br /&gt;
At any time, you can set a new service password via [https://bwservices.uni-heidelberg.de/ bwServices] by carrying out the following steps:&lt;br /&gt;
# Visit [https://bwservices.uni-heidelberg.de/ bwServices] and select your home organization. &lt;br /&gt;
# Authenticate yourself via your home-organizational user id / username and your home-organizational password.&lt;br /&gt;
# Find your service and select &#039;&#039;&#039;Set Service Password&#039;&#039;&#039;.&lt;br /&gt;
# Set new service password, repeat it and click the &#039;&#039;&#039;Save&#039;&#039;&#039; button. Use a secure password that is different from any other passwords you currently use or have used on other systems.&lt;br /&gt;
# The page answers e.g. &amp;quot;password has been changed&amp;quot;.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Registration&amp;diff=16128</id>
		<title>SDS@hd/Registration</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Registration&amp;diff=16128"/>
		<updated>2026-06-09T09:02:54Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: changed link from responsible to manager section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Registration Steps ==&lt;br /&gt;
&lt;br /&gt;
The registration consists of two steps: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Step A:&#039;&#039;&#039; Membership in Storage Project (Speichervorhaben/&#039;&#039;&#039;SV&#039;&#039;&#039;). There are two options: &lt;br /&gt;
*: &#039;&#039;&#039;a)&#039;&#039;&#039; &amp;amp;rarr;[[SDS@hd/Registration#a)_Join_existing_SV | Join existing SV]]&lt;br /&gt;
*: &#039;&#039;&#039;b)&#039;&#039;&#039; &amp;amp;rarr;[[SDS@hd/Registration#b)_Apply_for_new_SV | Apply for new SV]] (only possible for [https://www.bwidm.de/hochschulen.php bwIDM members])&lt;br /&gt;
* &#039;&#039;&#039;Step B:&#039;&#039;&#039; &amp;amp;rarr;[[SDS@hd/Registration#Step_B:_Registration_for_SDS@hd_Service |Registration for SDS@hd Service]]&lt;br /&gt;
&lt;br /&gt;
After finishing the registration, the &amp;lt;span id=&amp;quot;sds_registration_nextSteps&amp;quot;&amp;gt;&#039;&#039;&#039;next steps&#039;&#039;&#039;&amp;lt;/span&amp;gt; are: &lt;br /&gt;
* Check which management options there are for your respective role in the SV &amp;amp;rarr; [[SDS@hd/SV_Management |SV Management]]&lt;br /&gt;
* See how to access and use your storage space &amp;amp;rarr; [[SDS@hd/Access | Access]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SDS@hd_Registration.png|center|x500px|upright|SDS@hd Registration Process]]&lt;br /&gt;
&lt;br /&gt;
=== Step A: SV Membership ===&lt;br /&gt;
&lt;br /&gt;
You can either join an existing SV or start a new one. &lt;br /&gt;
&lt;br /&gt;
==== a) Join existing SV ====&lt;br /&gt;
To join an existing SV as a coworker: &lt;br /&gt;
# Get the following information from the SV responsible:&lt;br /&gt;
#:* SV acronym&lt;br /&gt;
#:* SV password&lt;br /&gt;
# Fill in and submit the [https://sds-hd.urz.uni-heidelberg.de/management/shib/sds_collaboration.php SV collaboration form] after logging in to the SDS@hd Managementtool. &lt;br /&gt;
#: You are now a member of the SV. The SV owner (and SV managers) will be notified automatically. &lt;br /&gt;
&amp;amp;rarr; [[SDS@hd/Registration#Step_B:_Registration_for_SDS@hd_Service | Go on with Step B]] if you are using SDS@hd for the first time.&lt;br /&gt;
&lt;br /&gt;
==== b) Apply for new SV ====&lt;br /&gt;
&lt;br /&gt;
This is typically done only by the leader of a scientific work group or the senior scientist of a research group/collaboration.&lt;br /&gt;
Any amount of co-workers can join your SV without having to register another project. You just need to provide them with the SV acronym and SV password. You&#039;ll receive this information via e-mail as soon as the SV application was successful. &lt;br /&gt;
&lt;br /&gt;
There are two steps: &lt;br /&gt;
# &#039;&#039;&#039;Get the permission / entitlement:&#039;&#039;&#039;. Your institution has to grant you the permission to start an SDS@hd storage project (&amp;quot;SDS@hd SV entitlement&amp;quot;). Please follow the procedure specific to your institution:&lt;br /&gt;
#: &amp;amp;rarr; see [[SDS@hd/Registration/Entitlement | Entitlement]].&lt;br /&gt;
# &#039;&#039;&#039;Apply for a new SV:&#039;&#039;&#039; &lt;br /&gt;
#: &amp;amp;rarr; Fill in the form at the [https://sds-hd.urz.uni-heidelberg.de/management SDS@hd Managementtool].&lt;br /&gt;
&amp;amp;rarr; [[SDS@hd/Registration#Step_B:_Registration_for_SDS@hd_Service | Go on with Step B]] if you are using SDS@hd for the first time.&lt;br /&gt;
&lt;br /&gt;
If you register your own SV, you will be:&lt;br /&gt;
* ...responsible for providing new members with the necessary information to join the SV. SV managers can do the same.&lt;br /&gt;
*: &amp;amp;rarr; see [[SDS@hd/SV_Management#SV_Manager | SV Manager]]&lt;br /&gt;
* ...held accountable for the co-workers in the SV&lt;br /&gt;
* ...asked to provide information for the two reports required by the DFG for their funding of SDS@hd&lt;br /&gt;
* ...likely asked for a contribution to a future DFG grant proposal for an extension of the storage system in your area of research (&amp;quot;wissenschaftliches Beiblatt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== Step B: Registration for SDS@hd Service ===&lt;br /&gt;
[[File:bwServices_chooseHomeOrganisation.png|right|300px|thumb|Select your home organization]]&lt;br /&gt;
&lt;br /&gt;
After step A you have to register your personal account on the storage system and set a service password.&lt;br /&gt;
&lt;br /&gt;
* Visit the registration website &#039;&#039;&#039;bwServices&#039;&#039;&#039;: [https://bwservices.uni-heidelberg.de/ https://bwservices.uni-heidelberg.de] &lt;br /&gt;
*# Select your home organization from the list and click &#039;&#039;Proceed&#039;&#039;&lt;br /&gt;
*#: You will be directed to the &#039;&#039;Identity Provider&#039;&#039; of your home organisation  &lt;br /&gt;
*# Enter your home-organisational user ID / username  and your home-organisational password and click &#039;&#039;Login&#039;&#039; button&lt;br /&gt;
*#: You will be redirected back to bwServices&lt;br /&gt;
* &#039;&#039;&#039;Register&#039;&#039;&#039; for the SDS@hd service:&lt;br /&gt;
*# Under &#039;&#039;The following services are available&#039;&#039; select the service &#039;&#039;SDS@hd - Scientific Data Storage&#039;&#039;. &lt;br /&gt;
*# Click &#039;&#039;Register&#039;&#039;&lt;br /&gt;
* Set your personal &#039;&#039;&#039;service password&#039;&#039;&#039; for SDS@hd. This is used for accessing SVs.&lt;br /&gt;
* The registration is finished.&lt;br /&gt;
*: &amp;amp;rarr; [[#sds_registration_nextSteps|next steps]]&lt;br /&gt;
&lt;br /&gt;
=== Change Service Password at bwServices ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; &#039;&#039;&#039;[[Registration/bwForCluster/Helix#Setting_a_New_Service_Password | Setting a New Service Password]]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/SV_Management&amp;diff=16127</id>
		<title>SDS@hd/SV Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/SV_Management&amp;diff=16127"/>
		<updated>2026-06-09T09:00:50Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: moved some points from responsible to manager&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Roles in a SV ==&lt;br /&gt;
There are four different roles in an SV. Depending on the role, different management activites can be executed at the [https://sds-hd.urz.uni-heidelberg.de/management SDS@hd Managementtool]. These are described below. They include top level management of user access.&lt;br /&gt;
&lt;br /&gt;
=== SV Member or Guest ===&lt;br /&gt;
At the [https://sds-hd.urz.uni-heidelberg.de/management SDS@hd Managementtool] members/guests can...&lt;br /&gt;
* ...view the status of your SV memberships (active/inactive)&lt;br /&gt;
* ...view the status of the SV (active/inactive, end date). (Removing people from the list completely is not possible, yet.)&lt;br /&gt;
&lt;br /&gt;
=== SV Manager ===&lt;br /&gt;
Additionally to the abilities of a coworker, a manager can...&lt;br /&gt;
* ...change the SV password&lt;br /&gt;
* ...enable others to join the SV&lt;br /&gt;
*# Provide them with the SV acronym. You can look it up at the [https://sds-hd.urz.uni-heidelberg.de/management/shib/info_sv.php SDS@hd Managementtool].&lt;br /&gt;
*# Provide them with the SV password. The SV responsible received the initial password via email. &amp;lt;u&amp;gt;Caution&amp;lt;/u&amp;gt;: Make sure to share the SV password. Do not share your personal service password which you set in registration step B at bwServices.&lt;br /&gt;
*# Afterwards, they can join by following the [[SDS@hd/Registration | registration steps]]. &lt;br /&gt;
* ...change the status of SV members (active/inactive)&lt;br /&gt;
&lt;br /&gt;
=== SV Responsible (SVV) ===&lt;br /&gt;
Additionally to the abilities of a manager, the responsible can...&lt;br /&gt;
* ...enable the guest folder&lt;br /&gt;
* ...change the role of SV members (guest/full member)&lt;br /&gt;
* ...hand over the SV responsibility&lt;br /&gt;
* ...cancel the SV when it is not needed anymore&lt;br /&gt;
&lt;br /&gt;
== Yearly storage project (SV) extension ==&lt;br /&gt;
&lt;br /&gt;
Once a year the SV responsible person needs to apply for a lifetime extension of the storage project. As part of the application, you will be asked to inform us of publications for which the storage project was used. As long as SDS@hd is used appropriately, an extension will be granted.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/SV_Management&amp;diff=16126</id>
		<title>SDS@hd/SV Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/SV_Management&amp;diff=16126"/>
		<updated>2026-06-09T07:13:34Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: fixed unclear instruction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Roles in a SV ==&lt;br /&gt;
There are four different roles in an SV. Depending on the role, different management activites can be executed at the [https://sds-hd.urz.uni-heidelberg.de/management SDS@hd Managementtool]. These are described below. They include top level management of user access.&lt;br /&gt;
&lt;br /&gt;
=== SV Member or Guest ===&lt;br /&gt;
At the [https://sds-hd.urz.uni-heidelberg.de/management SDS@hd Managementtool] members/guests can...&lt;br /&gt;
* ...view the status of your SV memberships (active/inactive)&lt;br /&gt;
* ...view the status of the SV (active/inactive, end date) (Removing people from the list completely is not possible, yet)&lt;br /&gt;
&lt;br /&gt;
=== SV Manager ===&lt;br /&gt;
Additionally to the abilities of a coworker, a manager can...&lt;br /&gt;
* ...change the status of SV members (active/inactive)&lt;br /&gt;
&lt;br /&gt;
=== SV Responsible (SVV) ===&lt;br /&gt;
Additionally to the abilities of a manager, the responsible can...&lt;br /&gt;
* ...enable others to join the SV&lt;br /&gt;
*# Provide them with the SV acronym. You can look it up at the [https://sds-hd.urz.uni-heidelberg.de/management/shib/info_sv.php SDS@hd Managementtool].&lt;br /&gt;
*# Povide them with the SV password. You&#039;ve received this password via email. You can reset it at the [https://sds-hd.urz.uni-heidelberg.de/management/shib/info_sv.php SDS@hd Managementtool]. &amp;lt;u&amp;gt;Caution&amp;lt;/u&amp;gt;: Make sure to share the SV password. Do not share your personal service password which you set in registration step B at bwServices.&lt;br /&gt;
*# Afterwards, they can join by following the [[SDS@hd/Registration | registration steps]]. &lt;br /&gt;
* ...enable the guest folder&lt;br /&gt;
* ...change the role of SV members (guest/full member)&lt;br /&gt;
* ...change the SV password&lt;br /&gt;
* ...hand over the SV responsibility&lt;br /&gt;
* ...cancel the SV when it is not needed anymore&lt;br /&gt;
&lt;br /&gt;
== Yearly storage project (SV) extension ==&lt;br /&gt;
&lt;br /&gt;
Once a year the SV responsible person needs to apply for a lifetime extension of the storage project. As part of the application, you will be asked to inform us of publications for which the storage project was used. As long as SDS@hd is used appropriately, an extension will be granted.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster/Helix&amp;diff=16123</id>
		<title>Registration/bwForCluster/Helix</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster/Helix&amp;diff=16123"/>
		<updated>2026-06-03T15:07:33Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: broadened the scope of the second issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
Steps A + B in the [[Registration/bwForCluster | registration process]] must be finished. &lt;br /&gt;
&lt;br /&gt;
== Registration Steps ==&lt;br /&gt;
&lt;br /&gt;
# Visit the bwForCluster Helix &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de registration page bwServices]&#039;&#039;&#039;.&lt;br /&gt;
#: [[File:bwServices_chooseHomeOrganisation.png|right|300px|thumb|Select your home organization]]&lt;br /&gt;
# &#039;&#039;&#039;Select your home organization&#039;&#039;&#039; from the list on the main page and click Proceed/Fortfahren. You will be directed to the &#039;&#039;Identity Provider&#039;&#039; of your home organization.&lt;br /&gt;
# Enter the &#039;&#039;&#039;username and password&#039;&#039;&#039; of your home organization (usually these credentials are also used for other services like email) and click Login/Einloggen.&lt;br /&gt;
# When you log in to bwServices for the first time, an overview will appear, with the account information that your home institution submits to the system. Please verify that all data is valid and then click &#039;&#039;Continue/Weiter&#039;&#039;.&lt;br /&gt;
#  You will be redirected back to the bwServices main page. It shows all the statewide services you have access to. Click &#039;&#039;&#039;Register/Registrieren&#039;&#039;&#039; under the field labeled &#039;&#039;bwForCluster Helix&#039;&#039;.&lt;br /&gt;
#: [[File:BwIDM-reg.png|center|frame|Register for Helix]]&lt;br /&gt;
# bwForCluster Helix uses a &#039;&#039;&#039;2-factor authentication&#039;&#039;&#039; (2FA) mechanism to increase security.&lt;br /&gt;
#: If you have never registered a 2FA token on bwIDM, the following error message will appear:&lt;br /&gt;
#: [[File:Bwidm-3-red.png|center|600px|thumb|Second factor missing.]]&lt;br /&gt;
#: Use this &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de/user/twofa.xhtml link]&#039;&#039;&#039; or select &#039;&#039;&#039;My Tokens&#039;&#039;&#039; in the main menu.&lt;br /&gt;
#: To register a new token, please follow these &#039;&#039;&#039;[[Registration/2FA|instructions]]&#039;&#039;&#039;.&lt;br /&gt;
#: Please complete this step before continuing.&lt;br /&gt;
# Read the Terms of Use / Nutzungsbedingungen, place a check mark next to &#039;&#039;I have read and accepted the terms of use&#039;&#039; and click &#039;&#039;Register/Registrieren&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Set a service password&#039;&#039;&#039; for bwForCluster Helix and click &#039;&#039;Save/Speichern&#039;&#039;.&lt;br /&gt;
#: Be sure to use a secure password that is different from any other passwords you currently use or have used on other systems.&lt;br /&gt;
[[File:BwIDM-passwd.png|center|600px|thumb|Set service password]]&lt;br /&gt;
{|style=&amp;quot;background:#deffee; width:70%; margin: auto;&amp;quot;&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
[[Image:Attention.svg|center|25px]]&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
The service password is your private password for accessing the bwForCluster Helix. Don&#039;t ever share it with anyone!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Registration Website bwServices ==&lt;br /&gt;
The registration website &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de bwServices]&#039;&#039;&#039; offers the following functionality: &lt;br /&gt;
* Register for the service.&lt;br /&gt;
* Set or change your service password.&lt;br /&gt;
* Review your registration details under &amp;quot;Registry Info&amp;quot;. This includes your account status (active/lost_access).&lt;br /&gt;
* bwServices triggers an update of your user information upon login.&lt;br /&gt;
* Registering an [[Registration/SSH | SSH key]]. It can be used for login to &#039;&#039;bwForCluster Helix&#039;&#039;. &lt;br /&gt;
* Creating tokens for logins that need 2-factor authentication ([[Registration/2FA |2FA]]) like &#039;&#039;bwForCluster Helix&#039;&#039; and &#039;&#039;bwVisu&#039;&#039;.&lt;br /&gt;
* De-register from the service.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting with the Help of bwServices ===&lt;br /&gt;
When encountering connection issues with a service, the bwServices website is a good starting point for troubleshooting: &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Expired contract&#039;&#039;&#039; or inactive student id: &lt;br /&gt;
** No access to state services like the bwHPC clusters or SDS@hd is possible.&lt;br /&gt;
** You can see that this is the issue when the login to bwServices via your identity provider is not possible. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Recently (re)activated uni-id or other user data changes:&#039;&#039;&#039; Your id at your home organization was (re)activated a short time ago or your email address changed (or sth. similar) but this change didn&#039;t get through to the bwHPC cluster or SDS@hd service. &lt;br /&gt;
** Login to bwServices. This triggers an update of your user information. Some minutes later, the connection to the service should work again. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Entitlement / RV missing:&#039;&#039;&#039; Prerequisites like entitlement ownership or RV membership aren&#039;t met (anymore). &lt;br /&gt;
** You can see the concrete issue and advice on how to move forward when looking at the registry info of the service on the bwServices website.&lt;br /&gt;
** When the issue is solved, the account status changes from LOST_ACCESS to ACTIVE. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Service Password:&#039;&#039;&#039; When trying to connect to the service, the service password is not accepted. &lt;br /&gt;
** Set a [[#Setting_a_New_Service_Password | new password]].&lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; OTP:&#039;&#039;&#039; In the case of login issues with a service that uses 2FA, you can check if you&#039;re OTP is working by going in the menu to &#039;&#039;Index&#039;&#039; -&amp;gt; &#039;&#039;My Tokens&#039;&#039;. &lt;br /&gt;
** If you&#039;re token is not working, you might have had too many failed login attempts. You can request a reset of the error counter from the support. &lt;br /&gt;
** If the token needs to be reset, please follow the instructions for a [[Helix/Login#Troubleshooting | Lost Token]].&lt;br /&gt;
&lt;br /&gt;
=== Setting a New Service Password === &lt;br /&gt;
&lt;br /&gt;
At any time, you can set a new service password via [https://bwservices.uni-heidelberg.de/ bwServices] by carrying out the following steps:&lt;br /&gt;
# Visit [https://bwservices.uni-heidelberg.de/ bwServices] and select your home organization. &lt;br /&gt;
# Authenticate yourself via your home-organizational user id / username and your home-organizational password.&lt;br /&gt;
# Find your service and select &#039;&#039;&#039;Set Service Password&#039;&#039;&#039;.&lt;br /&gt;
# Set new service password, repeat it and click the &#039;&#039;&#039;Save&#039;&#039;&#039; button. Use a secure password that is different from any other passwords you currently use or have used on other systems.&lt;br /&gt;
# The page answers e.g. &amp;quot;password has been changed&amp;quot;.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16117</id>
		<title>Data Transfer/Rclone</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16117"/>
		<updated>2026-06-02T15:30:40Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added instructions for adding rclone to path on windows.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[https://rclone.org/docs/ Rclone] is a command line tool to manage files on remote systems (e.g. high performance clusters, data and cloud storage systems, archiving services). &amp;lt;/br&amp;gt;&lt;br /&gt;
Rclone either synchronizes in one direction only or its mounting functionality is used with &amp;lt;code&amp;gt;rclone mount&amp;lt;/code&amp;gt;. &amp;lt;/br&amp;gt;&lt;br /&gt;
Data can be piped between two completely remote locations. When moving data within the same system and the data transfer protocol allows for server side copy, no local download is necessary. &amp;lt;/br&amp;gt;&lt;br /&gt;
One advantage is that the transfer is multithreaded and it operates on a file level basis.&amp;lt;/br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Caution:&#039;&#039;&#039; When using Rclone with 2FA it is necessary to connect via ssh key instead of a password. &lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Rclone is a Go program and comes as a single binary file.&lt;br /&gt;
&lt;br /&gt;
# Download the relevant binary.&lt;br /&gt;
# Extract the &amp;lt;code&amp;gt;rclone&amp;lt;/code&amp;gt; executable (&amp;lt;code&amp;gt;rclone.exe&amp;lt;/code&amp;gt;).&lt;br /&gt;
# You can use the executables without further installation. For easy use, it is recommended to add the binary to your PATH environment variable. Information on how to do this can be found below.&lt;br /&gt;
&lt;br /&gt;
Detailed information regarding different operating systems can be found here:&lt;br /&gt;
&lt;br /&gt;
* Installation on [https://rclone.org/install/#windows Windows]&lt;br /&gt;
*: To use rclone after the installation, you have to open a terminal (cmd or PowerShell) in the folder where the rclone.exe file is. This can be done with a right click in the empty space wihin the rclone folder and then choosing &amp;quot;open in terminal&amp;quot;. Then run all commands with a leading &#039;./&#039; (for example &amp;lt;code&amp;gt;./rclone config&amp;lt;/code&amp;gt;. To be able to simply use &amp;quot;rclone&amp;quot; anywhere, you can add it to your path. For instructions see the [[Data_Transfer/Rclone#Troubleshooting | Troubleshooting]] section. &lt;br /&gt;
* Installation on [https://rclone.org/install/#macos macOS]&lt;br /&gt;
** If Rclone shall be used together with sftp, the [[Data_Transfer/SSHFS#Installation | sshfs installation]] instructions must be followed after installing Rclone. &lt;br /&gt;
* Installation on [https://rclone.org/install/#script-installation Linux]&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone ==&lt;br /&gt;
&lt;br /&gt;
To use Rclone you have to define a config file. Afterwards you can connect by using the name of your configured connections. &lt;br /&gt;
&lt;br /&gt;
=== Configure Remote ===&lt;br /&gt;
&lt;br /&gt;
Before you can start using Rclone, you need to set up a remote. This means to configure a specific connection by providing authentication information, the network protocol that you want to use and a name for this configuration so that you can use it later on.&lt;br /&gt;
&lt;br /&gt;
To configure a remote for a specific service, you need the following information:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;remotehost&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;username&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;servicePassword&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you have to decide on: &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;network protocol&amp;lt;/code&amp;gt; (for example webDAV, smb, sftp)&lt;br /&gt;
* &amp;lt;code&amp;gt;remote-name&amp;lt;/code&amp;gt; (for example you can use the name of the service you want to connect to)&lt;br /&gt;
&lt;br /&gt;
You have three different options to set up a new remote as described in the following sections. It&#039;s enough to choose one of those. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Oneliner&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Open a terminal and define all parameters in one command. If a ssh key shall be used instead of a password, it might be easier to adjust the config file directly as described in the next section.  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# smb&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; smb host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; domain=&amp;lt;domain&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# sftp&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; sftp host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# webdav&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; webdav url=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Adjust Config File&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Make sure that a config file exists. Access rights for the config file are set to 600.  &lt;br /&gt;
rclone config touch&lt;br /&gt;
# Get the location of the file: &lt;br /&gt;
rclone config file &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Open the file and use one of the following snippets as template for your connection:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = smb&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
domain = &amp;lt;e.g. BWSERVICESAD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = webdav&lt;br /&gt;
url = &amp;lt;hostURL&amp;gt;&lt;br /&gt;
vendor = other&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_use_agent = false&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name-ssh-key-version&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_file = ~/.ssh/id_ed25519&lt;br /&gt;
pubkey_file = ~/.ssh/id_ed25519.pub&lt;br /&gt;
key_use_agent = true&lt;br /&gt;
shell_type = none&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To add the password, please use the following command. Make sure to keep the prepended space so that the command is not saved in your command history. &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt; rclone config update &amp;lt;remote-name&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Interactive Setup&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Execute:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;rclone config&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This will guide you through an interactive setup process. It&#039;s quite helpful for checking out which options there are and what the config file looks like after setting values that deviate from the default values. You can find detailed instructions at the website: &lt;br /&gt;
&lt;br /&gt;
* [https://rclone.org/webdav/ Connect via webdav]&lt;br /&gt;
* [https://rclone.org/smb/ Connect via smb]&lt;br /&gt;
* [https://rclone.org/sftp/ Connect via sftp]&lt;br /&gt;
&lt;br /&gt;
=== Use Remote ===&lt;br /&gt;
&lt;br /&gt;
To see all configured remotes: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone config&lt;br /&gt;
# Exit with &#039;q&#039;. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax to use Rclone is like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone [options] subcommand &amp;lt;parameters&amp;gt; &amp;amp;lt;parameters...&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
List all elements in the folder XX:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone lsf &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
# List elements from subfolders as well:&lt;br /&gt;
rclone lsf --max-depth 2 &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Copies /local/path to the remote path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;amp;lt;/local/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copies fom remote path to /local/path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt; &amp;amp;lt;/local/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Moves the contents of the source directory to the destination directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone move &amp;lt;remote-name&amp;gt;:&amp;amp;lt;source/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;destination/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
More subcommands can be found [https://rclone.org/docs/#subcommands here].&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone Mount ==&lt;br /&gt;
&lt;br /&gt;
Before you can follow the instructions in this chapter, you need to have set up a [[Data_Transfer/Rclone#Usage_Rclone | remote]].&amp;lt;/br&amp;gt;&lt;br /&gt;
More detailed information on how to use rclone mount can be found [https://rclone.org/commands/rclone_mount/ here].&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
To run rclone mount on Windows, you will need to [https://winfsp.dev/rel/ download and install WinFsp] first.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;# mount under drive letter X (or any other free letter)&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;:&amp;lt;path/to/remote/files&amp;gt; X:&lt;br /&gt;
# or provide the path to a nonexisting folder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;:&amp;lt;path/to/remote/files&amp;gt; &amp;lt;C:\path\parentDir\nonexistingFoldername&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To unmount, the command can be stopped in the terminal with the key combination CTRL+C. Alternatively, a mounted drive can be unmounted by making a right click on the drive name in the file explorer and choose &amp;quot;Eject&amp;quot;. &amp;lt;/br&amp;gt;&lt;br /&gt;
In contrast to Linux/Mac, there is no background mode.&lt;br /&gt;
&lt;br /&gt;
=== MacOS &amp;amp; Linux ===&lt;br /&gt;
&lt;br /&gt;
You can run mount in either foreground or background (aka daemon) mode. Mount runs in foreground mode by default. Use the &amp;lt;code&amp;gt;--daemon&amp;lt;/code&amp;gt; flag to force background mode. If this doesn&#039;t work, you can put an &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; at the end of the command instead. &lt;br /&gt;
&lt;br /&gt;
Create an empty directory on your local machine and then execute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# to mount the root folder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;: /path/to/empty/folder &lt;br /&gt;
# to mount a subfolder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;:folderX/folderY /path/to/empty/folder &lt;br /&gt;
# to unmount:&lt;br /&gt;
fusermount -uz /path/to/mounted/folder &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
Rclone has a lot of useful options. &lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
&lt;br /&gt;
To be able to utilize a larger bandwidth, it is helpful to add the following options for increased performance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--transfers &amp;lt;int&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of file transfers to run in parallel (default: 4). Depending on the local Network, read and write speeds on the file system, and current load, different values might be best. For large transfers, it is advised to test local performance with different values beforehand. &lt;br /&gt;
&lt;br /&gt;
* In our tests, we observed the best results between 8 and 32.&lt;br /&gt;
* For regular use cases, we recommend 16 as the default.&lt;br /&gt;
* Values above 64 are not recommended and degrade performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--multi-thread-streams &amp;lt;int&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of streams to use for multithreaded downloads (default: 4). Only important on very large files. This will cause multithreaded up/download on chunk-sized bits of the file.&lt;br /&gt;
&lt;br /&gt;
The optimal value is highly specific to the local network and used Hardware. For regular use cases, we recommend 4 as the default.&lt;br /&gt;
&lt;br /&gt;
=== Debugging and Statistics ===&lt;br /&gt;
To get updates on current progress, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interval between printing stats, e.g. 500ms, 60s, 5m (0 to disable) (default 1m0s).  &lt;br /&gt;
&lt;br /&gt;
To get debug information, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--log-level=DEBUG &lt;br /&gt;
--stats-log-level=DEBUG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
# Windows: Adding rclone to the path&lt;br /&gt;
#: Needed information: path to the rclone.exe file. If you chose to install via &#039;winget&#039;, the path is &amp;quot;C:\Users\&amp;lt;user&amp;gt;\AppData\Local\Microsoft\WinGet\Packages\Rclone.Rclone_Microsoft.Winget.Source.... . Please look up the exact path. &lt;br /&gt;
#:* Option 1: Add the rclone.exe file to a folder that is already in the path. You can move it to &amp;quot;C:\Windows\System32\&amp;quot;. Then open a new terminal window and test if the command &amp;quot;rclone config&amp;quot; works.&lt;br /&gt;
#:* Option 2: Add the path of the rclone.exe file to your Windows Path variable:&lt;br /&gt;
#:*: Open the Start Search and type env. Choose &amp;quot;Edit environment variables&amp;quot;&lt;br /&gt;
#:*: Click the &amp;quot;Environment Variables&amp;quot; button. &lt;br /&gt;
#:*: Edit the user variables and add the path to your rclone.exe file.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Helix/Login&amp;diff=16115</id>
		<title>Helix/Login</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Helix/Login&amp;diff=16115"/>
		<updated>2026-06-01T14:04:28Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added token deletion step, changed it-service link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Prerequisites =&lt;br /&gt;
* The three [[registration/bwForCluster|bwForCluster registration]] steps are completed &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;and&amp;lt;/span&amp;gt; still valid.&lt;br /&gt;
* Your IP address is within the [https://www.belwue.de BelWü] network which connects universities and other scientific institutions in Baden-Württemberg. If your computer is in your university network (e.g. at your office), you should be able to connect to bwForCluster Helix without restrictions. If you are outside the BelWü network (e.g. at home), a VPN (virtual private network) connection to your University network must be established first. Please consult the VPN documentation of your university.&lt;br /&gt;
* As credentials you need your Helix [[Helix/Login#Username|username]], [[Registration/Password|service password]] and [[Registration/2FA|2FA token]].&lt;br /&gt;
* If you encounter any issues, please have a look at the [[Helix/Login#Troubleshooting|Troubleshooting]] section.&lt;br /&gt;
&lt;br /&gt;
= Login to bwForCluster Helix =&lt;br /&gt;
&lt;br /&gt;
Login to bwForCluster Helix is only possible with a Secure Shell (SSH) client for which you must know your bwForCluster Helix credentials and the hostname of the login nodes.&lt;br /&gt;
For more general information on SSH clients, visit the [[Registration/Login/Client|SSH clients Guide]].&lt;br /&gt;
&lt;br /&gt;
== Username ==&lt;br /&gt;
&lt;br /&gt;
Your username on bwForCluster Helix consists of a prefix and your local username.&lt;br /&gt;
For prefixes please refer to the [[Registration/Login/Username|Username Guide]].&lt;br /&gt;
&lt;br /&gt;
Example: If your local username at your University is &amp;lt;code&amp;gt;ab123&amp;lt;/code&amp;gt; and you are a user from Heidelberg University, your username on the cluster is: &amp;lt;code&amp;gt;hd_ab123&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Hostnames ==&lt;br /&gt;
&lt;br /&gt;
bwForCluster Helix has two login nodes. In general, you should stay with automatic node selection, so that the connections are evenly distributed between the login nodes. To do this, we use so-called DNS round-robin scheduling which takes care of the node balancing. This means, if you open multiple SSH sessions, these sessions may run on different login nodes. Therefore, processes started in one session might not be visible in other sessions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Hostname !! Destination&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;helix.bwservices.uni-heidelberg.de&#039;&#039;&#039; || one of the two login nodes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Login with SSH command (Linux, Mac, Windows) ==&lt;br /&gt;
&lt;br /&gt;
Most Unix and Unix-like operating systems such as Linux and Mac OS as well as newer versions of MS Windows (10 and 11), have a built-in SSH client provided by the OpenSSH project.&lt;br /&gt;
If you want to use the full set of Linux commands on Windows (10 or 11), you can also install the [https://docs.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
&lt;br /&gt;
For login use one of the following ssh commands in a commandline (i.e. cmd, terminal, PowerShell):&lt;br /&gt;
&lt;br /&gt;
 ssh &amp;lt;username&amp;gt;@helix.bwservices.uni-heidelberg.de&lt;br /&gt;
 ssh -l &amp;lt;username&amp;gt; helix.bwservices.uni-heidelberg.de&lt;br /&gt;
&lt;br /&gt;
To run graphical applications on the cluster, you need to enable X11 forwarding with the &amp;lt;code&amp;gt;-X&amp;lt;/code&amp;gt; flag:&lt;br /&gt;
&lt;br /&gt;
 ssh -X -l &amp;lt;username&amp;gt; helix.bwservices.uni-heidelberg.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To make the login process faster, tell the command that no ssh key authentication is used by adding an additional parameter: &lt;br /&gt;
&lt;br /&gt;
  ssh -o PubkeyAuthentication=no &amp;lt;username&amp;gt;@helix.bwservices.uni-heidelberg.de&lt;br /&gt;
&lt;br /&gt;
== Login with graphical SSH client (Windows) ==&lt;br /&gt;
&lt;br /&gt;
For Windows we suggest using [[Data_Transfer/Graphical_Clients#MobaXterm|MobaXterm]] for login and file transfer.&lt;br /&gt;
 &lt;br /&gt;
Start MobaXterm and fill in the following fields:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Remote name              : helix.bwservices.uni-heidelberg.de&lt;br /&gt;
Specify user name        : &amp;lt;username&amp;gt;&lt;br /&gt;
Port                     : 22&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that click on &#039;ok&#039;. Then a terminal will open where you can enter your credentials.&lt;br /&gt;
&lt;br /&gt;
== Login with SSH key ==&lt;br /&gt;
&lt;br /&gt;
To set up a SSH key for your workflow, read [[Registration/SSH|Registering SSH Keys with your Cluster]].&lt;br /&gt;
To login by using the ssh key, use the following command: &lt;br /&gt;
&lt;br /&gt;
  ssh -o IdentitiesOnly=yes -i &amp;lt;path_to_private_key&amp;gt; &amp;lt;username&amp;gt;@helix.bwservices.uni-heidelberg.de &lt;br /&gt;
&lt;br /&gt;
== Login Example ==&lt;br /&gt;
&lt;br /&gt;
To login to bwForCluster Helix, proceed as follows:&lt;br /&gt;
# Login with SSH command or MoabXterm as shown above.&lt;br /&gt;
# The system will ask for a one-time password &amp;lt;code&amp;gt;Your OTP&amp;lt;/code&amp;gt; (= Smartphone Token / TAN list element/ ...) . Please enter your OTP and confirm it with Enter/Return. The OTP is not displayed when typing. If you do not have a second factor yet, please create one (see [[Registration/2FA]]).&lt;br /&gt;
# The system will ask you for your service password &amp;lt;code&amp;gt;Password:&amp;lt;/code&amp;gt;. Please enter it and confirm it with Enter/Return. The password is not displayed when typing. If you do not have a service password yet or have forgotten it, please create one (see [[Registration/Password]]).&lt;br /&gt;
# You will be greeted by the cluster with the message of the day, followed by a shell.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ssh -l hd_ab123 helix.bwservices.uni-heidelberg.de&lt;br /&gt;
Your OTP:&lt;br /&gt;
Password: &lt;br /&gt;
&lt;br /&gt;
********************************************************************************&lt;br /&gt;
*                                                                              *&lt;br /&gt;
*                     Baden-Wuerttemberg HPC Cluster for                       *&lt;br /&gt;
*              Structural and Systems Biology, Medical Science,                *&lt;br /&gt;
*                 Soft Matter, Computational Humanities, and                   *&lt;br /&gt;
*                      Mathematics and Computer Science                        *&lt;br /&gt;
*                                                                              *&lt;br /&gt;
*                                bwForCluster                                  *&lt;br /&gt;
*                        _    _          _   _                                 *&lt;br /&gt;
*                       | |  | |        | | (_)                                *&lt;br /&gt;
*                       | |__| |   ___  | |  _  __  __                         *&lt;br /&gt;
*                       |  __  |  / _ \ | | | | \ \/ /                         *&lt;br /&gt;
*                       | |  | | |  __/ | | | |  &amp;gt;  &amp;lt;                          *&lt;br /&gt;
*                       |_|  |_|  \___| |_| |_| /_/\_\                         *&lt;br /&gt;
*                                                                              *&lt;br /&gt;
*                                                                              *&lt;br /&gt;
*                   (xCAT 2.16.4 / RHEL 8.8 / GPFS 5.1.8)                      *&lt;br /&gt;
*                                                                              *&lt;br /&gt;
*                                                                              *&lt;br /&gt;
*        bwHPC Wiki : https://wiki.bwhpc.de/e/Helix                            *&lt;br /&gt;
*     Ticket System : https://www.bwhpc.de/supportportal                       *&lt;br /&gt;
*    Job Monitoring : https://helix-monitoring.bwservices.uni-heidelberg.de    *&lt;br /&gt;
*        E-learning : https://training.bwhpc.de/                               *&lt;br /&gt;
*                     -&amp;gt; &#039;Introduction to bwForCluster Helix&#039;                  *&lt;br /&gt;
*                                                                              *&lt;br /&gt;
********************************************************************************&lt;br /&gt;
&lt;br /&gt;
Last login: ...&lt;br /&gt;
[hd_ab123@login ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Allowed Activities on Login Nodes =&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;background:#deffee; width:100%;&amp;quot;&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
[[Image:Attention.svg|center|25px]]&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
To guarantee usability for all users you must not run your compute jobs on the login nodes.&lt;br /&gt;
Compute jobs must be submitted as batch jobs.&lt;br /&gt;
Any compute job running on the login nodes will be terminated without notice.&lt;br /&gt;
Long-running compilation or long-running pre- or post-processing tasks must also be submitted as batch jobs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The login nodes are the access points to the compute system, your &amp;lt;code&amp;gt;$HOME&amp;lt;/code&amp;gt; directory and your workspaces.&lt;br /&gt;
These nodes are shared with all users. Hence, your activities on the login nodes are primarily limited to setting up your batch jobs.&lt;br /&gt;
Your activities may also be:&lt;br /&gt;
* quick compilation of program code or&lt;br /&gt;
* quick pre- and post-processing of results from batch jobs.&lt;br /&gt;
&lt;br /&gt;
We advise to use [[Helix/Slurm#Interactive_Jobs|interactive batch jobs]] for compute and memory intensive compilation and pre- and post-processing tasks.&lt;br /&gt;
&lt;br /&gt;
= Related Information =&lt;br /&gt;
&lt;br /&gt;
* If you want to register a new token for the two factor authentication (2FA), consult the [[Registration/2FA|2FA Guide]].&lt;br /&gt;
* If you want to de-register, consult the [[Registration/Deregistration|De-registration Guide]].&lt;br /&gt;
* If you need an SSH key for your workflow, read [[Registration/SSH|Registering SSH Keys with your Cluster]].&lt;br /&gt;
* Configuring your shell: [[.bashrc Do&#039;s and Don&#039;ts]]&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Login Problems&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you encounter login problems, please double check the prerequisites. If those are valid, it is fastest to first check the following points before contacting the support at the [https://www.bwhpc.de/supportportal.php|bwhpc Suppport Portal].&lt;br /&gt;
If there are known issues with the cluster, we&#039;ll inform you via e-mail or in the message of the day at the cluster.&lt;br /&gt;
&lt;br /&gt;
* Make sure to not use LAN and WLAN at the same time to prevent connection problems.&lt;br /&gt;
* Do [[Registration/bwForCluster/Helix#Troubleshooting_with_the_Help_of_bwServices | troubleshooting with bwServices]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lost Token&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# To reset your token you have to (virtually) visit the IT Service at the University of Heidelberg to validate your identity. You can find the information for a virtual or in person visit in the &amp;quot;How to contact us&amp;quot; section here: https://www.urz.uni-heidelberg.de/en/support/it-service. It is recommended to use the Chrome browser for doing the video call.&lt;br /&gt;
# Please have an official identification ready (e.g. Führerschein / Personalausweis) and mention that you want a reset of your Helix 2FA token. It is important to emphasize that the token reset is for bwForCluster Helix to avoid confusion with the token that is specific to members/students of the university of Heidelberg.&lt;br /&gt;
# After the IT Service deactivated the token, you can delete the token yourself, reload the page and create a new one. &lt;br /&gt;
Hint: To be on the safe side, it is advised to create a [[Registration/2FA#Backup_TAN_List|backup TAN list]] additionally to the smartphone token.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16112</id>
		<title>Data Transfer/Rclone</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16112"/>
		<updated>2026-05-31T13:42:21Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: corrected information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[https://rclone.org/docs/ Rclone] is a command line tool to manage files on remote systems (e.g. high performance clusters, data and cloud storage systems, archiving services). &amp;lt;/br&amp;gt;&lt;br /&gt;
Rclone either synchronizes in one direction only or its mounting functionality is used with &amp;lt;code&amp;gt;rclone mount&amp;lt;/code&amp;gt;. &amp;lt;/br&amp;gt;&lt;br /&gt;
Data can be piped between two completely remote locations. When moving data within the same system and the data transfer protocol allows for server side copy, no local download is necessary. &amp;lt;/br&amp;gt;&lt;br /&gt;
One advantage is that the transfer is multithreaded and it operates on a file level basis.&amp;lt;/br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Caution:&#039;&#039;&#039; When using Rclone with 2FA it is necessary to connect via ssh key instead of a password. &lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Rclone is a Go program and comes as a single binary file.&lt;br /&gt;
&lt;br /&gt;
# Download the relevant binary.&lt;br /&gt;
# Extract the &amp;lt;code&amp;gt;rclone&amp;lt;/code&amp;gt; executable (&amp;lt;code&amp;gt;rclone.exe&amp;lt;/code&amp;gt;).&lt;br /&gt;
# You can use the executables without further installation. For easy use, it is recommended to add the binary to your PATH environment variable. Information on how to do this can be found below.&lt;br /&gt;
&lt;br /&gt;
Detailed information regarding different operating systems can be found here:&lt;br /&gt;
&lt;br /&gt;
* Installation on [https://rclone.org/install/#windows Windows]&lt;br /&gt;
* Installation on [https://rclone.org/install/#macos macOS]&lt;br /&gt;
** If Rclone shall be used together with sftp, the [[Data_Transfer/SSHFS#Installation | sshfs installation]] instructions must be followed after installing Rclone. &lt;br /&gt;
* Installation on [https://rclone.org/install/#script-installation Linux]&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone ==&lt;br /&gt;
&lt;br /&gt;
To use Rclone you have to define a config file. Afterwards you can connect by using the name of your configured connections. &lt;br /&gt;
&lt;br /&gt;
=== Configure Remote ===&lt;br /&gt;
&lt;br /&gt;
Before you can start using Rclone, you need to set up a remote. This means to configure a specific connection by providing authentication information, the network protocol that you want to use and a name for this configuration so that you can use it later on.&lt;br /&gt;
&lt;br /&gt;
To configure a remote for a specific service, you need the following information:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;remotehost&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;username&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;servicePassword&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you have to decide on: &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;network protocol&amp;lt;/code&amp;gt; (for example webDAV, smb, sftp)&lt;br /&gt;
* &amp;lt;code&amp;gt;remote-name&amp;lt;/code&amp;gt; (for example you can use the name of the service you want to connect to)&lt;br /&gt;
&lt;br /&gt;
You have three different options to set up a new remote as described in the following sections. It&#039;s enough to choose one of those. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Oneliner&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Open a terminal and define all parameters in one command. If a ssh key shall be used instead of a password, it might be easier to adjust the config file directly as described in the next section.  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# smb&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; smb host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; domain=&amp;lt;domain&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# sftp&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; sftp host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# webdav&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; webdav url=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Adjust Config File&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Make sure that a config file exists. Access rights for the config file are set to 600.  &lt;br /&gt;
rclone config touch&lt;br /&gt;
# Get the location of the file: &lt;br /&gt;
rclone config file &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Open the file and use one of the following snippets as template for your connection:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = smb&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
domain = &amp;lt;e.g. BWSERVICESAD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = webdav&lt;br /&gt;
url = &amp;lt;hostURL&amp;gt;&lt;br /&gt;
vendor = other&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_use_agent = false&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name-ssh-key-version&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_file = ~/.ssh/id_ed25519&lt;br /&gt;
pubkey_file = ~/.ssh/id_ed25519.pub&lt;br /&gt;
key_use_agent = true&lt;br /&gt;
shell_type = none&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To add the password, please use the following command. Make sure to keep the prepended space so that the command is not saved in your command history. &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt; rclone config update &amp;lt;remote-name&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Interactive Setup&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Execute:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;rclone config&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This will guide you through an interactive setup process. It&#039;s quite helpful for checking out which options there are and what the config file looks like after setting values that deviate from the default values. You can find detailed instructions at the website: &lt;br /&gt;
&lt;br /&gt;
* [https://rclone.org/webdav/ Connect via webdav]&lt;br /&gt;
* [https://rclone.org/smb/ Connect via smb]&lt;br /&gt;
* [https://rclone.org/sftp/ Connect via sftp]&lt;br /&gt;
&lt;br /&gt;
=== Use Remote ===&lt;br /&gt;
&lt;br /&gt;
To see all configured remotes: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone config&lt;br /&gt;
# Exit with &#039;q&#039;. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax to use Rclone is like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone [options] subcommand &amp;lt;parameters&amp;gt; &amp;amp;lt;parameters...&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
List all elements in the folder XX:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone lsf &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
# List elements from subfolders as well:&lt;br /&gt;
rclone lsf --max-depth 2 &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Copies /local/path to the remote path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;amp;lt;/local/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copies fom remote path to /local/path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt; &amp;amp;lt;/local/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Moves the contents of the source directory to the destination directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone move &amp;lt;remote-name&amp;gt;:&amp;amp;lt;source/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;destination/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
More subcommands can be found [https://rclone.org/docs/#subcommands here].&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone Mount ==&lt;br /&gt;
&lt;br /&gt;
Before you can follow the instructions in this chapter, you need to have set up a [[Data_Transfer/Rclone#Usage_Rclone | remote]].&amp;lt;/br&amp;gt;&lt;br /&gt;
More detailed information on how to use rclone mount can be found [https://rclone.org/commands/rclone_mount/ here].&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
To run rclone mount on Windows, you will need to [https://winfsp.dev/rel/ download and install WinFsp] first.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;# mount under drive letter X (or any other free letter)&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;:&amp;lt;path/to/remote/files&amp;gt; X:&lt;br /&gt;
# or provide the path to a nonexisting folder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;:&amp;lt;path/to/remote/files&amp;gt; &amp;lt;C:\path\parentDir\nonexistingFoldername&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To unmount, the command can be stopped in the terminal with the key combination CTRL+C. Alternatively, a mounted drive can be unmounted by making a right click on the drive name in the file explorer and choose &amp;quot;Eject&amp;quot;. &amp;lt;/br&amp;gt;&lt;br /&gt;
In contrast to Linux/Mac, there is no background mode.&lt;br /&gt;
&lt;br /&gt;
=== MacOS &amp;amp; Linux ===&lt;br /&gt;
&lt;br /&gt;
You can run mount in either foreground or background (aka daemon) mode. Mount runs in foreground mode by default. Use the &amp;lt;code&amp;gt;--daemon&amp;lt;/code&amp;gt; flag to force background mode. If this doesn&#039;t work, you can put an &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; at the end of the command instead. &lt;br /&gt;
&lt;br /&gt;
Create an empty directory on your local machine and then execute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# to mount the root folder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;: /path/to/empty/folder &lt;br /&gt;
# to mount a subfolder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;:folderX/folderY /path/to/empty/folder &lt;br /&gt;
# to unmount:&lt;br /&gt;
fusermount -uz /path/to/mounted/folder &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
Rclone has a lot of useful options. &lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
&lt;br /&gt;
To be able to utilize a larger bandwidth, it is helpful to add the following options for increased performance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--transfers &amp;lt;int&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of file transfers to run in parallel (default: 4). Depending on the local Network, read and write speeds on the file system, and current load, different values might be best. For large transfers, it is advised to test local performance with different values beforehand. &lt;br /&gt;
&lt;br /&gt;
* In our tests, we observed the best results between 8 and 32.&lt;br /&gt;
* For regular use cases, we recommend 16 as the default.&lt;br /&gt;
* Values above 64 are not recommended and degrade performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--multi-thread-streams &amp;lt;int&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of streams to use for multithreaded downloads (default: 4). Only important on very large files. This will cause multithreaded up/download on chunk-sized bits of the file.&lt;br /&gt;
&lt;br /&gt;
The optimal value is highly specific to the local network and used Hardware. For regular use cases, we recommend 4 as the default.&lt;br /&gt;
&lt;br /&gt;
=== Debugging and Statistics ===&lt;br /&gt;
To get updates on current progress, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interval between printing stats, e.g. 500ms, 60s, 5m (0 to disable) (default 1m0s).  &lt;br /&gt;
&lt;br /&gt;
To get debug information, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--log-level=DEBUG &lt;br /&gt;
--stats-log-level=DEBUG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Access&amp;diff=16108</id>
		<title>SDS@hd/Access</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Access&amp;diff=16108"/>
		<updated>2026-05-27T16:06:37Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: added &amp;#039;domain&amp;#039; as additional bullet point to avoid confusion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides an overview on how to access data served by SDS@hd. To get an introduction to data transfer in general, see [[Data_Transfer|data transfer]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notation:&#039;&#039;&#039; Please replace all placeholder contents within guillemets &amp;lt;code&amp;gt;&amp;lt; &amp;gt;&amp;lt;/code&amp;gt; with the actual value. For example, replace &#039;&#039;&amp;lt;name_of_my_dog&amp;gt;&#039;&#039; with &#039;&#039;Fluffy&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* You need to be [[SDS@hd/Registration|registered]].&lt;br /&gt;
* You need to be in the belwue-Network. This means you have to use the VPN Service of your HomeOrganization, if you want to access SDS@hd from outside the bwHPC-Clusters (e.g. via eduroam or from your personal notebook).&lt;br /&gt;
&lt;br /&gt;
== Needed Information, independent of the chosen tool ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Username:&#039;&#039;&#039; You can look it up under your user data at [https://bwservices.uni-heidelberg.de/user/index.xhtml bwServices]. The username is &#039;&#039;&amp;lt;localPrimaryGroup&amp;gt;_&amp;lt;eduPersonPrincipalName&amp;gt;&#039;&#039; . (It is the same as for the bwHPC Clusters. Example: &#039;&#039;hd_ab123&#039;&#039;.)&lt;br /&gt;
* &#039;&#039;&#039;Password:&#039;&#039;&#039; The Service Password that you set at bwServices in the [[SDS@hd/Registration#Step_B:_Registration_for_SDS@hd_Service|registration step]].&lt;br /&gt;
* &#039;&#039;&#039;SV-Acronym:&#039;&#039;&#039; Use the lower case version of the acronym for all access options.&lt;br /&gt;
* &#039;&#039;&#039;Hostname:&#039;&#039;&#039; The hostname depends on the chosen network protocol:&lt;br /&gt;
** For [[Data_Transfer/SSHFS|SSHFS]] and [[Data_Transfer/SFTP|SFTP]]: &#039;&#039;lsdf02-sshfs.urz.uni-heidelberg.de&#039;&#039;&lt;br /&gt;
** For [[SDS@hd/Access/SMB|SMB]] and [[SDS@hd/Access/NFS|NFS]]: &#039;&#039;lsdf02.urz.uni-heidelberg.de&#039;&#039;&lt;br /&gt;
** For [[Data_Transfer/WebDAV|WebDAV]] the url is: &#039;&#039;https://lsdf02-webdav.urz.uni-heidelberg.de&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Domain:&#039;&#039;&#039; The domain is &#039;&#039;BWSERVICESAD&#039;&#039; (needed for smb and nfs connections).&lt;br /&gt;
&lt;br /&gt;
== Recommended Setup ==&lt;br /&gt;
The following graphic shows the recommended way for accessing SDS@hd via Windows/Mac/Linux. The table provides an overview of the most important access options and links to the related pages.&amp;lt;br /&amp;gt;&lt;br /&gt;
If you have various use cases, it is recommended to use [[Data_Transfer/Rclone|Rclone]]. You can copy, sync and mount with it. Thanks to its multithreading capability Rclone is a good fit for transferring big data.&amp;lt;br /&amp;gt;&lt;br /&gt;
For an overview of all connection possibilities, please have a look at [[Data_Transfer/All_Data_Transfer_Routes|all data transfer routes]].&lt;br /&gt;
&lt;br /&gt;
[[File:Data_transfer_diagram_simple.jpg|center|500px]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center; font-size: small; margin-top: 10px&amp;quot;&amp;gt;Figure 1: SDS@hd main transfer routes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle;&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Use Case&lt;br /&gt;
! Windows&lt;br /&gt;
! Mac&lt;br /&gt;
! Linux&lt;br /&gt;
! Possible Bandwith&lt;br /&gt;
! Firewall Ports&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_Transfer/Rclone|Rclone]] + &amp;lt;protocol&amp;gt;&lt;br /&gt;
| copy, sync and mount, multithreading&lt;br /&gt;
| ✓&lt;br /&gt;
| ✓&lt;br /&gt;
| ✓&lt;br /&gt;
| depends on used protocol&lt;br /&gt;
| depends on used protocol&lt;br /&gt;
|-&lt;br /&gt;
| [[SDS@hd/Access/SMB|SMB]]&lt;br /&gt;
| mount as network drive in file explorer or usage via Rclone&lt;br /&gt;
| [[SDS@hd/Access/SMB#Windows|✓]]&lt;br /&gt;
| [[SDS@hd/Access/SMB#Mac|✓]]&lt;br /&gt;
| [[SDS@hd/Access/SMB#Linux|✓]]&lt;br /&gt;
| up to 40 Gbit/sec&lt;br /&gt;
| 139 (netbios), 135 (rpc), 445 (smb)&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_Transfer/WebDAV|WebDAV]]&lt;br /&gt;
| go to solution for restricted networks&lt;br /&gt;
| [✓]&lt;br /&gt;
| ✓&lt;br /&gt;
| ✓&lt;br /&gt;
| up to 100GBit/sec&lt;br /&gt;
| 80 (http), 443 (https)&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
| [[Data_Transfer/Graphical_Clients#MobaXterm|MobaXterm]]&lt;br /&gt;
| Graphical User Interface (GUI)&lt;br /&gt;
| [[Data_Transfer/Graphical_Clients#MobaXterm|✓]]&lt;br /&gt;
| ☓&lt;br /&gt;
| ☓&lt;br /&gt;
| see sftp&lt;br /&gt;
| see sftp&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
| [[SDS@hd/Access/NFS|NFS]]&lt;br /&gt;
| mount for multi-user environments&lt;br /&gt;
| ☓&lt;br /&gt;
| ☓&lt;br /&gt;
| [[SDS@hd/Access/NFS|✓]]&lt;br /&gt;
| up to 40 Gbit/sec&lt;br /&gt;
| -&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
| [[Data_Transfer/SSHFS|SSHFS]]&lt;br /&gt;
| mount, needs stable internet connection&lt;br /&gt;
| ☓&lt;br /&gt;
| [[Data_Transfer/SSHFS#MacOS_&amp;amp;_Linux|✓]]&lt;br /&gt;
| [[Data_Transfer/SSHFS#MacOS_&amp;amp;_Linux|✓]]&lt;br /&gt;
| see sftp&lt;br /&gt;
| see sftp&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
| [[Data_Transfer/SFTP|SFTP]]&lt;br /&gt;
| interactive shell, better usability when used together with Rclone&lt;br /&gt;
| [[Data_Transfer/SFTP#Windows|✓]]&lt;br /&gt;
| [[Data_Transfer/SFTP#MacOS_&amp;amp;_Linux|✓]]&lt;br /&gt;
| [[Data_Transfer/SFTP#MacOS_&amp;amp;_Linux|✓]]&lt;br /&gt;
| up to 40 Gbit/sec&lt;br /&gt;
| 22 (ssh)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center; font-size: small; margin-top: 10px&amp;quot;&amp;gt;Table 1: SDS@hd transfer routes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Access from a bwHPC Cluster ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bwUniCluster&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
You can&#039;t mount to your $HOME directory but you can create a mount under $TMPDIR by following the instructions for [[Data_Transfer/Rclone#Usage_Rclone_Mount | Rclone mount]]. It is advised to wait a couple of seconds (&amp;lt;code&amp;gt;sleep 5&amp;lt;/code&amp;gt;) before trying to use the mounted directory. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bwForCluster Helix&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
You can directly access your storage space under &#039;&#039;/mnt/sds-hd/&#039;&#039; on all login and compute nodes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bwForCluster BinAC 2&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
You can directly access your storage space under &#039;&#039;/mnt/sds-hd/&#039;&#039; on all login and compute nodes. The prerequisites are: &lt;br /&gt;
* The SV responsible has enabled the SV on BinAC 2 once by writing to [mailto:sds-hd-support@urz.uni-heidelberg.de sds-hd-support@urz.uni-heidelberg.de]&lt;br /&gt;
* You have a valid kerberos ticket, which can be fetched with &amp;lt;code&amp;gt;kinit &amp;lt;userID&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
You can mount your SDS@hd SV on the cluster yourself by using [[Data_Transfer/Rclone | Rclone]] with the [[Data_Transfer/Rclone#Usage_Rclone_Mount | Rclone mount]] command. As transfer protocol you can use WebDAV or sftp. For a full overview please have a look at [[Data_Transfer/All_Data_Transfer_Routes | All Data Transfer Routes]].&lt;br /&gt;
&lt;br /&gt;
=== Access via Webbrowser (read-only) ===&lt;br /&gt;
&lt;br /&gt;
Visit [https://lsdf02-webdav.urz.uni-heidelberg.de/ lsdf02-webdav.urz.uni-heidelberg.de] and login with your SDS@hd username and service password. Here you can get an overview of the data in your &amp;amp;quot;Speichervorhaben&amp;amp;quot; and download single files. To be able to do more, like moving data, uploading new files, or downloading complete folders, a suitable client is needed as described above.&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Managing access rights&#039;&#039;&#039;&lt;br /&gt;
** When the SV is mounted on Windows, access rights can be adjusted in the file/folder properties menu. (Users from Heidelberg without Windows can use the [https://www.urz.uni-heidelberg.de/de/service-katalog/desktop-und-arbeitsplatz/windows-terminalserver Windows terminal server]). &lt;br /&gt;
** bwForCluster Helix users can change the access rights via Helix by using [[Workspace#Regular_Unix_Permissions | unix permissions]] or [[Workspace#ACLs:_Access_Control_Lists | access control lists]]. On non native mounts ACL changes won&#039;t work. &lt;br /&gt;
** Additionally to the already mentioned options, the SVV can take over ownership of files by opening a [[Data_Transfer/SFTP|SFTP]] shell and running &amp;lt;code&amp;gt;chown -R &amp;lt;userID&amp;gt; &amp;lt;path/to/folder&amp;gt;&amp;lt;/code&amp;gt; . &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Multiuser environment&#039;&#039;&#039; &amp;lt;br /&amp;gt; &amp;amp;rarr; Use [[SDS@hd/Access/NFS|NFS]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Maintance windows and known issues are communicated via the email list or the News section at the SDS@hd start page in the wiki. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Issue:&#039;&#039;&#039; The credentials aren&#039;t accepted &lt;br /&gt;
*: Check if your credentials work in general by trying the access via webbrowser: [https://lsdf02-webdav.urz.uni-heidelberg.de/].&lt;br /&gt;
*: If this doesn&#039;t work: &lt;br /&gt;
*:: &amp;amp;rarr; [[Registration/Login/Username| Check your Username]]&lt;br /&gt;
*:: &amp;amp;rarr; [[Registration/bwForCluster/Helix#Troubleshooting_with_the_Help_of_bwServices | Troubleshooting with bwServices]]&lt;br /&gt;
* &#039;&#039;&#039;Other Issue&#039;&#039;&#039;&lt;br /&gt;
** If available, follow the troubleshooting guide of your specific connection method.&lt;br /&gt;
** Make sure to not use LAN and WLAN at the same time to prevent connection problems.&lt;br /&gt;
** If you have an institutional account, make sure to be a fully active member of your institution.&lt;br /&gt;
If these suggestions didn&#039;t help, write to the [mailto:sds-hd-support@urz.uni-heidelberg.de support]. Provide the following information: &lt;br /&gt;
* Your operating system&lt;br /&gt;
* Does the access via webbrowser work? &lt;br /&gt;
*: If yes, provide us with detailed information on how you tried to access your SV (used access method, username, ...).&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16107</id>
		<title>Data Transfer/Rclone</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16107"/>
		<updated>2026-05-27T16:01:30Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: improved Windows instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[https://rclone.org/docs/ Rclone] is a command line tool to manage files on remote systems (e.g. cloud storage systems). Rclone either synchronizes in one direction only or its mounting functionality is used with &amp;lt;code&amp;gt;rclone mount&amp;lt;/code&amp;gt;. Data can be piped between two completely remote locations, sometimes without local download. One advantage is that the transfer is multithreaded and it operates on a file level basis.  &lt;br /&gt;
&#039;&#039;&#039;Caution:&#039;&#039;&#039; You can&#039;t use Rclone with 2FA.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Rclone is a Go program and comes as a single binary file.&lt;br /&gt;
&lt;br /&gt;
# Download the relevant binary.&lt;br /&gt;
# Extract the &amp;lt;code&amp;gt;rclone&amp;lt;/code&amp;gt; executable, &amp;lt;code&amp;gt;rclone.exe&amp;lt;/code&amp;gt; on Windows, from the archive.&lt;br /&gt;
# You can use the executables without further installation. For easy use, it is recommended to add the binary to your PATH environment variable. Information on how to do this can be found below.&lt;br /&gt;
&lt;br /&gt;
Detailed information regarding different operating systems can be found here:&lt;br /&gt;
&lt;br /&gt;
* Installation on [https://rclone.org/install/#windows Windows]&lt;br /&gt;
* Installation on [https://rclone.org/install/#macos macOS]&lt;br /&gt;
** If Rclone shall be used together with sftp, the [[Data_Transfer/SSHFS#Installation | sshfs installation]] instructions must be followed after installing Rclone. &lt;br /&gt;
* Installation on [https://rclone.org/install/#script-installation Linux]&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone ==&lt;br /&gt;
&lt;br /&gt;
To use Rclone you have to define a config file. Afterwards you can connect by using the name of your configured connections. &lt;br /&gt;
&lt;br /&gt;
=== Configure Remote ===&lt;br /&gt;
&lt;br /&gt;
Before you can start using Rclone, you need to set up a remote. This means to configure a specific connection by providing authentication information, the network protocol that you want to use and a name for this configuration so that you can use it later on.&lt;br /&gt;
&lt;br /&gt;
To configure a remote for a specific service, you need the following information:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;remotehost&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;username&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;servicePassword&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you have to decide on: &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;network protocol&amp;lt;/code&amp;gt; (for example webDAV, smb, sftp)&lt;br /&gt;
* &amp;lt;code&amp;gt;remote-name&amp;lt;/code&amp;gt; (for example you can use the name of the service you want to connect to)&lt;br /&gt;
&lt;br /&gt;
You have three different options to set up a new remote as described in the following sections. It&#039;s enough to choose one of those. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Oneliner&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Open a terminal and define all parameters in one command. If a ssh key shall be used instead of a password, it might be easier to adjust the config file directly as described in the next section.  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# smb&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; smb host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; domain=&amp;lt;domain&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# sftp&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; sftp host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# webdav&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; webdav url=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Adjust Config File&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Make sure that a config file exists. Access rights for the config file are set to 600.  &lt;br /&gt;
rclone config touch&lt;br /&gt;
# Get the location of the file: &lt;br /&gt;
rclone config file &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Open the file and use one of the following snippets as template for your connection:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = smb&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
domain = &amp;lt;e.g. BWSERVICESAD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = webdav&lt;br /&gt;
url = &amp;lt;hostURL&amp;gt;&lt;br /&gt;
vendor = other&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_use_agent = false&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name-ssh-key-version&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_file = ~/.ssh/id_ed25519&lt;br /&gt;
pubkey_file = ~/.ssh/id_ed25519.pub&lt;br /&gt;
key_use_agent = true&lt;br /&gt;
shell_type = none&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To add the password, please use the following command. Make sure to keep the prepended space so that the command is not saved in your command history. &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt; rclone config update &amp;lt;remote-name&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Interactive Setup&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Execute:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;rclone config&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This will guide you through an interactive setup process. It&#039;s quite helpful for checking out which options there are and what the config file looks like after setting values that deviate from the default values. You can find detailed instructions at the website: &lt;br /&gt;
&lt;br /&gt;
* [https://rclone.org/webdav/ Connect via webdav]&lt;br /&gt;
* [https://rclone.org/smb/ Connect via smb]&lt;br /&gt;
* [https://rclone.org/sftp/ Connect via sftp]&lt;br /&gt;
&lt;br /&gt;
=== Use Remote ===&lt;br /&gt;
&lt;br /&gt;
To see all configured remotes: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone config&lt;br /&gt;
# Exit with &#039;q&#039;. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax to use Rclone is like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone [options] subcommand &amp;lt;parameters&amp;gt; &amp;amp;lt;parameters...&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
List all elements in the folder XX:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone lsf &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
# List elements from subfolders as well:&lt;br /&gt;
rclone lsf --max-depth 2 &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Copies /local/path to the remote path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;amp;lt;/local/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copies fom remote path to /local/path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt; &amp;amp;lt;/local/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Moves the contents of the source directory to the destination directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone move &amp;lt;remote-name&amp;gt;:&amp;amp;lt;source/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;destination/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
More subcommands can be found [https://rclone.org/docs/#subcommands here].&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone Mount ==&lt;br /&gt;
&lt;br /&gt;
Before you can follow the instructions in this chapter, you need to have set up a [[Data_Transfer/Rclone#Usage_Rclone | remote]].&amp;lt;/br&amp;gt;&lt;br /&gt;
More detailed information on how to use rclone mount can be found [https://rclone.org/commands/rclone_mount/ here].&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
To run rclone mount on Windows, you will need to [https://winfsp.dev/rel/ download and install WinFsp] first.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;# mount under drive letter X (or any other free letter)&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;:&amp;lt;path/to/remote/files&amp;gt; X:&lt;br /&gt;
# or provide the path to a nonexisting folder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;:&amp;lt;path/to/remote/files&amp;gt; &amp;lt;C:\path\parentDir\nonexistingFoldername&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To unmount, the command can be stopped in the terminal with the key combination CTRL+C. Alternatively, a mounted drive can be unmounted by making a right click on the drive name in the file explorer and choose &amp;quot;Eject&amp;quot;. &amp;lt;/br&amp;gt;&lt;br /&gt;
In contrast to Linux/Mac, there is no background mode.&lt;br /&gt;
&lt;br /&gt;
=== MacOS &amp;amp; Linux ===&lt;br /&gt;
&lt;br /&gt;
You can run mount in either foreground or background (aka daemon) mode. Mount runs in foreground mode by default. Use the &amp;lt;code&amp;gt;--daemon&amp;lt;/code&amp;gt; flag to force background mode. If this doesn&#039;t work, you can put an &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; at the end of the command instead. &lt;br /&gt;
&lt;br /&gt;
Create an empty directory on your local machine and then execute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# to mount the root folder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;: /path/to/empty/folder &lt;br /&gt;
# to mount a subfolder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;lt;remote-name&amp;gt;:folderX/folderY /path/to/empty/folder &lt;br /&gt;
# to unmount:&lt;br /&gt;
fusermount -uz /path/to/mounted/folder &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
Rclone has a lot of useful options. &lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
&lt;br /&gt;
To be able to utilize a larger bandwidth, it is helpful to add the following options for increased performance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--transfers &amp;lt;int&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of file transfers to run in parallel (default: 4). Depending on the local Network, read and write speeds on the file system, and current load, different values might be best. For large transfers, it is advised to test local performance with different values beforehand. &lt;br /&gt;
&lt;br /&gt;
* In our tests, we observed the best results between 8 and 32.&lt;br /&gt;
* For regular use cases, we recommend 16 as the default.&lt;br /&gt;
* Values above 64 are not recommended and degrade performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--multi-thread-streams &amp;lt;int&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of streams to use for multithreaded downloads (default: 4). Only important on very large files. This will cause multithreaded up/download on chunk-sized bits of the file.&lt;br /&gt;
&lt;br /&gt;
The optimal value is highly specific to the local network and used Hardware. For regular use cases, we recommend 4 as the default.&lt;br /&gt;
&lt;br /&gt;
=== Debugging and Statistics ===&lt;br /&gt;
To get updates on current progress, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interval between printing stats, e.g. 500ms, 60s, 5m (0 to disable) (default 1m0s).  &lt;br /&gt;
&lt;br /&gt;
To get debug information, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--log-level=DEBUG &lt;br /&gt;
--stats-log-level=DEBUG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16106</id>
		<title>Data Transfer/Rclone</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16106"/>
		<updated>2026-05-27T09:44:49Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: fixed typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[https://rclone.org/docs/ Rclone] is a command line tool to manage files on remote systems (e.g. cloud storage systems). Rclone either synchronizes in one direction only or its mounting functionality is used with &amp;lt;code&amp;gt;rclone mount&amp;lt;/code&amp;gt;. Data can be piped between two completely remote locations, sometimes without local download. One advantage is that the transfer is multithreaded and it operates on a file level basis.  &lt;br /&gt;
&#039;&#039;&#039;Caution:&#039;&#039;&#039; You can&#039;t use Rclone with 2FA.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Rclone is a Go program and comes as a single binary file.&lt;br /&gt;
&lt;br /&gt;
# Download the relevant binary.&lt;br /&gt;
# Extract the &amp;lt;code&amp;gt;rclone&amp;lt;/code&amp;gt; executable, &amp;lt;code&amp;gt;rclone.exe&amp;lt;/code&amp;gt; on Windows, from the archive.&lt;br /&gt;
# You can use the executables without further installation. For easy use, it is recommended to add the binary to your PATH environment variable. Information on how to do this can be found below.&lt;br /&gt;
&lt;br /&gt;
Detailed information regarding different operating systems can be found here:&lt;br /&gt;
&lt;br /&gt;
* Installation on [https://rclone.org/install/#windows Windows]&lt;br /&gt;
* Installation on [https://rclone.org/install/#macos macOS]&lt;br /&gt;
** If Rclone shall be used together with sftp, the [[Data_Transfer/SSHFS#Installation | sshfs installation]] instructions must be followed after installing Rclone. &lt;br /&gt;
* Installation on [https://rclone.org/install/#script-installation Linux]&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone ==&lt;br /&gt;
&lt;br /&gt;
To use Rclone you have to define a config file. Afterwards you can connect by using the name of your configured connections. &lt;br /&gt;
&lt;br /&gt;
=== Configure Remote ===&lt;br /&gt;
&lt;br /&gt;
Before you can start using Rclone, you need to set up a remote. This means to configure a specific connection by providing authentication information, the network protocol that you want to use and a name for this configuration so that you can use it later on.&lt;br /&gt;
&lt;br /&gt;
To configure a remote for a specific service, you need the following information:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;remotehost&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;username&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;servicePassword&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you have to decide on: &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;network protocol&amp;lt;/code&amp;gt; (for example webDAV, smb, sftp)&lt;br /&gt;
* &amp;lt;code&amp;gt;remote-name&amp;lt;/code&amp;gt; (for example you can use the name of the service you want to connect to)&lt;br /&gt;
&lt;br /&gt;
You have three different options to set up a new remote as described in the following sections. It&#039;s enough to choose one of those. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Oneliner&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Open a terminal and define all parameters in one command. If a ssh key shall be used instead of a password, it might be easier to adjust the config file directly as described in the next section.  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# smb&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; smb host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; domain=&amp;lt;domain&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# sftp&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; sftp host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# webdav&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; webdav url=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Adjust Config File&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Make sure that a config file exists. Access rights for the config file are set to 600.  &lt;br /&gt;
rclone config touch&lt;br /&gt;
# Get the location of the file: &lt;br /&gt;
rclone config file &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Open the file and use one of the following snippets as template for your connection:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = smb&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
domain = &amp;lt;e.g. BWSERVICESAD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = webdav&lt;br /&gt;
url = &amp;lt;hostURL&amp;gt;&lt;br /&gt;
vendor = other&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_use_agent = false&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name-ssh-key-version&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_file = ~/.ssh/id_ed25519&lt;br /&gt;
pubkey_file = ~/.ssh/id_ed25519.pub&lt;br /&gt;
key_use_agent = true&lt;br /&gt;
shell_type = none&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To add the password, please use the following command. Make sure to keep the prepended space so that the command is not saved in your command history. &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt; rclone config update &amp;lt;remote-name&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Interactive Setup&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Execute:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;rclone config&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This will guide you through an interactive setup process. It&#039;s quite helpful for checking out which options there are and what the config file looks like after setting values that deviate from the default values. You can find detailed instructions at the website: &lt;br /&gt;
&lt;br /&gt;
* [https://rclone.org/webdav/ Connect via webdav]&lt;br /&gt;
* [https://rclone.org/smb/ Connect via smb]&lt;br /&gt;
* [https://rclone.org/sftp/ Connect via sftp]&lt;br /&gt;
&lt;br /&gt;
=== Use Remote ===&lt;br /&gt;
&lt;br /&gt;
To see all configured remotes: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone config&lt;br /&gt;
# Exit with &#039;q&#039;. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax to use Rclone is like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone [options] subcommand &amp;lt;parameters&amp;gt; &amp;amp;lt;parameters...&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
List all elements in the folder XX:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone lsf &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
# List elements from subfolders as well:&lt;br /&gt;
rclone lsf --max-depth 2 &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Copies /local/path to the remote path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;amp;lt;/local/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copies fom remote path to /local/path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt; &amp;amp;lt;/local/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Moves the contents of the source directory to the destination directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone move &amp;lt;remote-name&amp;gt;:&amp;amp;lt;source/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;destination/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
More subcommands can be found [https://rclone.org/docs/#subcommands here].&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone Mount ==&lt;br /&gt;
&lt;br /&gt;
Before you can follow the instructions in this chapter, you need to have set up a [[Data_Transfer/Rclone#Usage_Rclone | remote]].&amp;lt;/br&amp;gt;&lt;br /&gt;
More detailed information on how to use rclone mount can be found [https://rclone.org/commands/rclone_mount/ here].&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
To run rclone mount on Windows, you will need to [https://winfsp.dev/rel/ download and install WinFsp]. To mount on drive letter X or a nonexistent subdirectory, use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone mount &amp;amp;lt;remote-name&amp;amp;gt;:path/to/files X:&lt;br /&gt;
rclone mount &amp;amp;lt;remote-name&amp;amp;gt;:path/to/files C:\path\parent\mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
In contrast to Linux/Mac, there is no background mode.&lt;br /&gt;
&lt;br /&gt;
=== MacOS &amp;amp; Linux ===&lt;br /&gt;
&lt;br /&gt;
You can run mount in either foreground or background (aka daemon) mode. Mount runs in foreground mode by default. Use the &amp;lt;code&amp;gt;--daemon&amp;lt;/code&amp;gt; flag to force background mode. If this doesn&#039;t work, you can put an &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; at the end of the command instead. &lt;br /&gt;
&lt;br /&gt;
Create an empty directory on your local machine and then execute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# to mount the root folder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;amp;lt;remote-name&amp;amp;gt;: /path/to/empty/folder &lt;br /&gt;
# to mount a subfolder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;amp;lt;remote-name&amp;amp;gt;:folderX/folderY /path/to/empty/folder &lt;br /&gt;
# to unmount:&lt;br /&gt;
fusermount -uz /path/to/mounted/folder &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
Rclone has a lot of useful options. &lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
&lt;br /&gt;
To be able to utilize a larger bandwidth, it is helpful to add the following options for increased performance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--transfers &amp;lt;int&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of file transfers to run in parallel (default: 4). Depending on the local Network, read and write speeds on the file system, and current load, different values might be best. For large transfers, it is advised to test local performance with different values beforehand. &lt;br /&gt;
&lt;br /&gt;
* In our tests, we observed the best results between 8 and 32.&lt;br /&gt;
* For regular use cases, we recommend 16 as the default.&lt;br /&gt;
* Values above 64 are not recommended and degrade performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--multi-thread-streams &amp;lt;int&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of streams to use for multithreaded downloads (default: 4). Only important on very large files. This will cause multithreaded up/download on chunk-sized bits of the file.&lt;br /&gt;
&lt;br /&gt;
The optimal value is highly specific to the local network and used Hardware. For regular use cases, we recommend 4 as the default.&lt;br /&gt;
&lt;br /&gt;
=== Debugging and Statistics ===&lt;br /&gt;
To get updates on current progress, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interval between printing stats, e.g. 500ms, 60s, 5m (0 to disable) (default 1m0s).  &lt;br /&gt;
&lt;br /&gt;
To get debug information, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--log-level=DEBUG &lt;br /&gt;
--stats-log-level=DEBUG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16078</id>
		<title>Data Transfer/Rclone</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16078"/>
		<updated>2026-05-18T16:11:02Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: changed lsd to lsf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[https://rclone.org/docs/ Rclone] is a command line tool to manage files on remote systems (e.g. cloud storage systems). Rclone either synchronizes in one direction only or its mounting functionality is used with &amp;lt;code&amp;gt;rclone mount&amp;lt;/code&amp;gt;. Data can be piped between two completely remote locations, sometimes without local download. One advantage is that the transfer is multithreaded and it operates on a file level basis.  &lt;br /&gt;
&#039;&#039;&#039;Caution:&#039;&#039;&#039; You can&#039;t use Rclone with 2FA.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Rclone is a Go program and comes as a single binary file.&lt;br /&gt;
&lt;br /&gt;
# Download the relevant binary.&lt;br /&gt;
# Extract the &amp;lt;code&amp;gt;rclone&amp;lt;/code&amp;gt; executable, &amp;lt;code&amp;gt;rclone.exe&amp;lt;/code&amp;gt; on Windows, from the archive.&lt;br /&gt;
# You can use the executables without further installation. For easy use, it is recommended to add the binary to your PATH environment variable. Information on how to do this can be found below.&lt;br /&gt;
&lt;br /&gt;
Detailed information regarding different operating systems can be found here:&lt;br /&gt;
&lt;br /&gt;
* Installation on [https://rclone.org/install/#windows Windows]&lt;br /&gt;
* Installation on [https://rclone.org/install/#macos macOS]&lt;br /&gt;
** If Rclone shall be used together with sftp, the [[https://wiki.bwhpc.de/e/Data_Transfer/SSHFS#Installation | sshfs installation]] instructions must be followed after installing Rclone. &lt;br /&gt;
* Installation on [https://rclone.org/install/#script-installation Linux]&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone ==&lt;br /&gt;
&lt;br /&gt;
To use Rclone you have to define a config file. Afterwards you can connect by using the name of your configured connections. &lt;br /&gt;
&lt;br /&gt;
=== Configure Remote ===&lt;br /&gt;
&lt;br /&gt;
Before you can start using Rclone, you need to set up a remote. This means to configure a specific connection by providing authentication information, the network protocol that you want to use and a name for this configuration so that you can use it later on.&lt;br /&gt;
&lt;br /&gt;
To configure a remote for a specific service, you need the following information:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;remotehost&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;username&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;servicePassword&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you have to decide on: &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;network protocol&amp;lt;/code&amp;gt; (for example webDAV, smb, sftp)&lt;br /&gt;
* &amp;lt;code&amp;gt;remote-name&amp;lt;/code&amp;gt; (for example you can use the name of the service you want to connect to)&lt;br /&gt;
&lt;br /&gt;
You have three different options to set up a new remote as described in the following sections. It&#039;s enough to choose one of those. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Oneliner&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Open a terminal and define all parameters in one command. If a ssh key shall be used instead of a password, it might be easier to adjust the config file directly as described in the next section.  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# smb&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; smb host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; domain=&amp;lt;domain&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# sftp&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; sftp host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# webdav&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; webdav url=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Adjust Config File&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Make sure that a config file exists. Access rights for the config file are set to 600.  &lt;br /&gt;
rclone config touch&lt;br /&gt;
# Get the location of the file: &lt;br /&gt;
rclone config file &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Open the file and use one of the following snippets as template for your connection:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = smb&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
domain = &amp;lt;e.g. BWSERVICESAD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = webdav&lt;br /&gt;
url = &amp;lt;hostURL&amp;gt;&lt;br /&gt;
vendor = other&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_use_agent = false&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name-ssh-key-version&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_file = ~/.ssh/id_ed25519&lt;br /&gt;
pubkey_file = ~/.ssh/id_ed25519.pub&lt;br /&gt;
key_use_agent = true&lt;br /&gt;
shell_type = none&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To add the password, please use the following command. Make sure to keep the prepended space so that the command is not saved in your command history. &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt; rclone config update &amp;lt;remote-name&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Interactive Setup&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Execute:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;rclone config&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This will guide you through an interactive setup process. It&#039;s quite helpful for checking out which options there are and what the config file looks like after setting values that deviate from the default values. You can find detailed instructions at the website: &lt;br /&gt;
&lt;br /&gt;
* [https://rclone.org/webdav/ Connect via webdav]&lt;br /&gt;
* [https://rclone.org/smb/ Connect via smb]&lt;br /&gt;
* [https://rclone.org/sftp/ Connect via sftp]&lt;br /&gt;
&lt;br /&gt;
=== Use Remote ===&lt;br /&gt;
&lt;br /&gt;
To see all configured remotes: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone config&lt;br /&gt;
# Exit with &#039;q&#039;. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax to use Rclone is like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone [options] subcommand &amp;lt;parameters&amp;gt; &amp;amp;lt;parameters...&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
List all elements in the folder XX:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone lsf &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
# List elements from subfolders as well:&lt;br /&gt;
rclone lsf --max-depth 2 &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Copies /local/path to the remote path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;amp;lt;/local/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copies fom remote path to /local/path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt; &amp;amp;lt;/local/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Moves the contents of the source directory to the destination directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone move &amp;lt;remote-name&amp;gt;:&amp;amp;lt;source/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;destination/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
More subcommands can be found [https://rclone.org/docs/#subcommands here].&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone Mount ==&lt;br /&gt;
&lt;br /&gt;
Before you can follow the instructions in this chapter, you need to have set up a [[Data_Transfer/Rclone#Usage_Rclone | remote]].&amp;lt;/br&amp;gt;&lt;br /&gt;
More detailed information on how to use rclone mount can be found [https://rclone.org/commands/rclone_mount/ here].&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
To run rclone mount on Windows, you will need to [https://winfsp.dev/rel/ download and install WinFsp]. To mount on drive letter X or a nonexistent subdirectory, use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone mount &amp;amp;lt;remote-name&amp;amp;gt;:path/to/files X:&lt;br /&gt;
rclone mount &amp;amp;lt;remote-name&amp;amp;gt;:path/to/files C:\path\parent\mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
In contrast to Linux/Mac, there is no background mode.&lt;br /&gt;
&lt;br /&gt;
=== MacOS &amp;amp; Linux ===&lt;br /&gt;
&lt;br /&gt;
You can run mount in either foreground or background (aka daemon) mode. Mount runs in foreground mode by default. Use the &amp;lt;code&amp;gt;--daemon&amp;lt;/code&amp;gt; flag to force background mode. If this doesn&#039;t work, you can put an &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; at the end of the command instead. &lt;br /&gt;
&lt;br /&gt;
Create an empty directory on your local machine and then execute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# to mount the root folder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;amp;lt;remote-name&amp;amp;gt;: /path/to/empty/folder &lt;br /&gt;
# to mount a subfolder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;amp;lt;remote-name&amp;amp;gt;:folderX/folderY /path/to/empty/folder &lt;br /&gt;
# to unmount:&lt;br /&gt;
fusermount -uz /path/to/mounted/folder &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
Rclone has a lot of useful options. &lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
&lt;br /&gt;
To be able to utilize a larger bandwidth, it is helpful to add the following options for increased performance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--transfers &amp;lt;int&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of file transfers to run in parallel (default: 4). Depending on the local Network, read and write speeds on the file system, and current load, different values might be best. For large transfers, it is advised to test local performance with different values beforehand. &lt;br /&gt;
&lt;br /&gt;
* In our tests, we observed the best results between 8 and 32.&lt;br /&gt;
* For regular use cases, we recommend 16 as the default.&lt;br /&gt;
* Values above 64 are not recommended and degrade performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--multi-thread-streams &amp;lt;int&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of streams to use for multithreaded downloads (default: 4). Only important on very large files. This will cause multithreaded up/download on chunk-sized bits of the file.&lt;br /&gt;
&lt;br /&gt;
The optimal value is highly specific to the local network and used Hardware. For regular use cases, we recommend 4 as the default.&lt;br /&gt;
&lt;br /&gt;
=== Debugging and Statistics ===&lt;br /&gt;
To get updates on current progress, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interval between printing stats, e.g. 500ms, 60s, 5m (0 to disable) (default 1m0s).  &lt;br /&gt;
&lt;br /&gt;
To get debug information, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--log-level=DEBUG &lt;br /&gt;
--stats-log-level=DEBUG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16076</id>
		<title>Data Transfer/Rclone</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16076"/>
		<updated>2026-05-13T14:49:46Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Reordered remote setup options&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[https://rclone.org/docs/ Rclone] is a command line tool to manage files on remote systems (e.g. cloud storage systems). Rclone either synchronizes in one direction only or its mounting functionality is used with &amp;lt;code&amp;gt;rclone mount&amp;lt;/code&amp;gt;. Data can be piped between two completely remote locations, sometimes without local download. One advantage is that the transfer is multithreaded and it operates on a file level basis.  &lt;br /&gt;
&#039;&#039;&#039;Caution:&#039;&#039;&#039; You can&#039;t use Rclone with 2FA.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Rclone is a Go program and comes as a single binary file.&lt;br /&gt;
&lt;br /&gt;
# Download the relevant binary.&lt;br /&gt;
# Extract the &amp;lt;code&amp;gt;rclone&amp;lt;/code&amp;gt; executable, &amp;lt;code&amp;gt;rclone.exe&amp;lt;/code&amp;gt; on Windows, from the archive.&lt;br /&gt;
# You can use the executables without further installation. For easy use, it is recommended to add the binary to your PATH environment variable. Information on how to do this can be found below.&lt;br /&gt;
&lt;br /&gt;
Detailed information regarding different operating systems can be found here:&lt;br /&gt;
&lt;br /&gt;
* Installation on [https://rclone.org/install/#windows Windows]&lt;br /&gt;
* Installation on [https://rclone.org/install/#macos macOS]&lt;br /&gt;
** If Rclone shall be used together with sftp, the [[https://wiki.bwhpc.de/e/Data_Transfer/SSHFS#Installation | sshfs installation]] instructions must be followed after installing Rclone. &lt;br /&gt;
* Installation on [https://rclone.org/install/#script-installation Linux]&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone ==&lt;br /&gt;
&lt;br /&gt;
To use Rclone you have to define a config file. Afterwards you can connect by using the name of your configured connections. &lt;br /&gt;
&lt;br /&gt;
=== Configure Remote ===&lt;br /&gt;
&lt;br /&gt;
Before you can start using Rclone, you need to set up a remote. This means to configure a specific connection by providing authentication information, the network protocol that you want to use and a name for this configuration so that you can use it later on.&lt;br /&gt;
&lt;br /&gt;
To configure a remote for a specific service, you need the following information:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;remotehost&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;username&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;servicePassword&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you have to decide on: &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;network protocol&amp;lt;/code&amp;gt; (for example webDAV, smb, sftp)&lt;br /&gt;
* &amp;lt;code&amp;gt;remote-name&amp;lt;/code&amp;gt; (for example you can use the name of the service you want to connect to)&lt;br /&gt;
&lt;br /&gt;
You have three different options to set up a new remote as described in the following sections. It&#039;s enough to choose one of those. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Oneliner&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Open a terminal and define all parameters in one command. If a ssh key shall be used instead of a password, it might be easier to adjust the config file directly as described in the next section.  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# smb&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; smb host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; domain=&amp;lt;domain&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# sftp&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; sftp host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# webdav&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; webdav url=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Adjust Config File&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Make sure that a config file exists. Access rights for the config file are set to 600.  &lt;br /&gt;
rclone config touch&lt;br /&gt;
# Get the location of the file: &lt;br /&gt;
rclone config file &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Open the file and use one of the following snippets as template for your connection:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = smb&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
domain = &amp;lt;e.g. BWSERVICESAD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = webdav&lt;br /&gt;
url = &amp;lt;hostURL&amp;gt;&lt;br /&gt;
vendor = other&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_use_agent = false&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name-ssh-key-version&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_file = ~/.ssh/id_ed25519&lt;br /&gt;
pubkey_file = ~/.ssh/id_ed25519.pub&lt;br /&gt;
key_use_agent = true&lt;br /&gt;
shell_type = none&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To add the password, please use the following command. Make sure to keep the prepended space so that the command is not saved in your command history. &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt; rclone config update &amp;lt;remote-name&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Interactive Setup&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Execute:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;rclone config&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This will guide you through an interactive setup process. It&#039;s quite helpful for checking out which options there are and what the config file looks like after setting values that deviate from the default values. You can find detailed instructions at the website: &lt;br /&gt;
&lt;br /&gt;
* [https://rclone.org/webdav/ Connect via webdav]&lt;br /&gt;
* [https://rclone.org/smb/ Connect via smb]&lt;br /&gt;
* [https://rclone.org/sftp/ Connect via sftp]&lt;br /&gt;
&lt;br /&gt;
=== Use Remote ===&lt;br /&gt;
&lt;br /&gt;
To see all configured remotes: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;rclone config&lt;br /&gt;
# Exit with &#039;q&#039;. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax to use Rclone is like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone [options] subcommand &amp;lt;parameters&amp;gt; &amp;amp;lt;parameters...&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
List all directories/containers/buckets in the folder XX.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone lsd &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copies /local/path to the remote path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;amp;lt;/local/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copies fom remote path to /local/path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt; &amp;amp;lt;/local/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Moves the contents of the source directory to the destination directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone move &amp;lt;remote-name&amp;gt;:&amp;amp;lt;source/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;destination/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
More subcommands can be found [https://rclone.org/docs/#subcommands here].&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone Mount ==&lt;br /&gt;
&lt;br /&gt;
Before you can follow the instructions in this chapter, you need to have set up a [[Data_Transfer/Rclone#Usage_Rclone | remote]].&amp;lt;/br&amp;gt;&lt;br /&gt;
More detailed information on how to use rclone mount can be found [https://rclone.org/commands/rclone_mount/ here].&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
To run rclone mount on Windows, you will need to [https://winfsp.dev/rel/ download and install WinFsp]. To mount on drive letter X or a nonexistent subdirectory, use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone mount &amp;amp;lt;remote-name&amp;amp;gt;:path/to/files X:&lt;br /&gt;
rclone mount &amp;amp;lt;remote-name&amp;amp;gt;:path/to/files C:\path\parent\mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
In contrast to Linux/Mac, there is no background mode.&lt;br /&gt;
&lt;br /&gt;
=== MacOS &amp;amp; Linux ===&lt;br /&gt;
&lt;br /&gt;
You can run mount in either foreground or background (aka daemon) mode. Mount runs in foreground mode by default. Use the &amp;lt;code&amp;gt;--daemon&amp;lt;/code&amp;gt; flag to force background mode. If this doesn&#039;t work, you can put an &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; at the end of the command instead. &lt;br /&gt;
&lt;br /&gt;
Create an empty directory on your local machine and then execute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# to mount the root folder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;amp;lt;remote-name&amp;amp;gt;: /path/to/empty/folder &lt;br /&gt;
# to mount a subfolder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;amp;lt;remote-name&amp;amp;gt;:folderX/folderY /path/to/empty/folder &lt;br /&gt;
# to unmount:&lt;br /&gt;
fusermount -uz /path/to/mounted/folder &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
Rclone has a lot of useful options. &lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
&lt;br /&gt;
To be able to utilize a larger bandwidth, it is helpful to add the following options for increased performance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--transfers &amp;lt;int&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of file transfers to run in parallel (default: 4). Depending on the local Network, read and write speeds on the file system, and current load, different values might be best. For large transfers, it is advised to test local performance with different values beforehand. &lt;br /&gt;
&lt;br /&gt;
* In our tests, we observed the best results between 8 and 32.&lt;br /&gt;
* For regular use cases, we recommend 16 as the default.&lt;br /&gt;
* Values above 64 are not recommended and degrade performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--multi-thread-streams &amp;lt;int&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of streams to use for multithreaded downloads (default: 4). Only important on very large files. This will cause multithreaded up/download on chunk-sized bits of the file.&lt;br /&gt;
&lt;br /&gt;
The optimal value is highly specific to the local network and used Hardware. For regular use cases, we recommend 4 as the default.&lt;br /&gt;
&lt;br /&gt;
=== Debugging and Statistics ===&lt;br /&gt;
To get updates on current progress, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interval between printing stats, e.g. 500ms, 60s, 5m (0 to disable) (default 1m0s).  &lt;br /&gt;
&lt;br /&gt;
To get debug information, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--log-level=DEBUG &lt;br /&gt;
--stats-log-level=DEBUG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer&amp;diff=16075</id>
		<title>Data Transfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer&amp;diff=16075"/>
		<updated>2026-05-13T14:42:13Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added ssh key info.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Data transfer is the exchange of files between two systems. Before data transfer can happen, you need to go through the following steps:&lt;br /&gt;
&lt;br /&gt;
# Choose the two [[#Data_Storage_Systems|data storage systems]] that shall exchange data.&lt;br /&gt;
# Choose the top level ways of transfer ([[#Ways of Transfer:_Copy,_Sync,_Mount|copy, sync or mount]]) by considering your specific use case.&lt;br /&gt;
# Choose a [[#Network_Protocols_&amp;amp;_Transfer_Tools|network protocol or transfer tool]] to use for the communication between the systems.&lt;br /&gt;
&lt;br /&gt;
The recommended setup already includes these three steps. For a full overview, you can reference the tables that show [[Data_Transfer/All_Data_Transfer_Routes|all transfer routes]]. Those include all possible combinations between systems, top level way of transfer and network protocol / transfer tool.&lt;br /&gt;
&lt;br /&gt;
=== Data Storage Systems ===&lt;br /&gt;
&lt;br /&gt;
Data transfer can happen between a variety of systems. For example:&lt;br /&gt;
&lt;br /&gt;
* [[File:Notebook.svg|x20px]] Local computer or VM (virtual machine)&lt;br /&gt;
* [[File:Microscope.svg|x20px]] &amp;lt;span style=&amp;quot;margin-left:10px;&amp;quot;&amp;gt;Data producing machine (sequencer, microscope, ...)&amp;lt;span&amp;gt;&lt;br /&gt;
* [[File:Clusternodes.svg|x20px]] &amp;lt;span style=&amp;quot;margin-left:8px;&amp;quot;&amp;gt;HPC system&amp;lt;span&amp;gt;&lt;br /&gt;
* [[File:Storage_small.svg|x15px]] &amp;lt;span style=&amp;quot;margin-left:8px;&amp;quot;&amp;gt;Storage space (SDS@hd, institute server, ...)&amp;lt;span&amp;gt;&lt;br /&gt;
* [[File:Cloud.svg|x15px]] &amp;lt;span style=&amp;quot;margin-left:3px;&amp;quot;&amp;gt;Cloud resource&amp;lt;span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ways of Transfer: Copy, Sync, Mount ===&lt;br /&gt;
&lt;br /&gt;
The top level ways of transfer are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Copy:&#039;&#039;&#039; A simple copy command is the most basic way to transfer data. This is most efficient for very big data files that shall be retrieved from or moved to a remote location. And it can be most convenient, if you prefer moving your files via commandline instead of using a file browser. &amp;lt;br&amp;gt;Examples: [[Data_Transfer/SCP|scp]], [[Data_Transfer/SFTP|sftp]]&lt;br /&gt;
* &#039;&#039;&#039;Sync:&#039;&#039;&#039; If the data is intended to be kept on both systems and undergoes change on only one of the systems, it makes sense to use a synchronization command instead. This way, only the changed files in one location are updated in the other location. Good use cases are backups or data transfers that go mostly in one direction like moving data from a sequencer to a storage space. A disadvantage is that the data needs storage space on both systems. &amp;lt;br&amp;gt;Example: [[Data_Transfer/Rsync|rsync]]&lt;br /&gt;
* &#039;&#039;&#039;Mount:&#039;&#039;&#039; If the data undergoes change on both systems or is too big to store locally, then mounting is the most convenient solution. This allows you to see and work with the data as if it were stored locally on your computer while it is still placed on the remote system. All changes that you implement happen directly on the original data so that you don&#039;t need to copy or synchronize anything. Additionally, you&#039;ll see all changes that another party does to the data with just a very short delay. Disadvantages are that you need defined edit sessions starting with a mount and ending with a clean unmount of your files and with a stable network connection during the session. Also, file operations on the remote system become much slower via a remotely sshfs-mounted system. &amp;lt;br&amp;gt;Example: [[Data_Transfer/SSHFS|sshfs]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: left;&amp;quot;&amp;gt;[[File:CopySyncMount.png|x250px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: left; font-size: small; margin-top: 10px; margin-left: 255px;&amp;quot;&amp;gt;Figure 1: Top level transfer routes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Network Protocols &amp;amp; Transfer Tools ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
! Basic Network Protocol&lt;br /&gt;
! Used By Network Protocol&lt;br /&gt;
|-&lt;br /&gt;
| ssh&lt;br /&gt;
| [[Data_Transfer/SCP | scp]], [[Data_Transfer/SFTP | sftp]], [[Data_Transfer/Rsync | rsync]]&lt;br /&gt;
|-&lt;br /&gt;
| http(s)&lt;br /&gt;
| [[Data_Transfer/WebDAV | WebDAV]]&lt;br /&gt;
|-&lt;br /&gt;
| [[SDS@hd/Access/SMB | smb]]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[SDS@hd/Access/NFS | NFS]]&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
For every data transfer a network protocol to use for the communication between the systems must be chosen. The basic network protocols and the network protocols that build directly upon those are shown in the table on the right. These protocols can either be used rather directly or through tools that provide the protocol together with additional features. A tool can either mean a command line tool or a tool with a graphical user interface.&lt;br /&gt;
&lt;br /&gt;
A comprehensive overview of all transfer options (network protocols and tools) can be found on the page [[Data_Transfer/All_Data_Transfer_Routes|all data transfer routes]].&lt;br /&gt;
&lt;br /&gt;
== Recommended Setup ==&lt;br /&gt;
[[File:Bwhpc diagram simplenobox.jpg|thumb|Main routes for mounting|x150px]]&lt;br /&gt;
When you are working with a development environment that allows remote connections, this is the first choice. Otherwise, the main tools/protocols for transferring data are as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;u&amp;gt;Windows&amp;lt;/u&amp;gt;: &#039;&#039;&#039;[[Data_Transfer/Graphical_Clients#MobaXterm|MobaXterm]]&#039;&#039;&#039; is a graphical user interface that allows logging in to the cluster with ssh as well as transferring data via a file browser or using command line tools for the transfer.&lt;br /&gt;
* &amp;lt;u&amp;gt;MacOS and Linux&amp;lt;/u&amp;gt;: &lt;br /&gt;
** &#039;&#039;&#039;[[Data_Transfer/SSHFS|sshfs]]&#039;&#039;&#039; is quickly set up for mounting under stable connections. &lt;br /&gt;
** &#039;&#039;&#039;[[Data_Transfer/Rclone|Rclone]]&#039;&#039;&#039; for mount, copy and sync. An [[Registration/SSH | ssh key]] is needed when used with 2FA.&lt;br /&gt;
* &amp;lt;u&amp;gt;SDS@hd&amp;lt;/u&amp;gt;: See the [[SDS@hd/Access|SDS@hd Access]] page.&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Strong firewall restrictions&#039;&#039;&#039;&amp;lt;br /&amp;gt; -&amp;gt; Use ssh or http(s) based protocols, for example [[Data_Transfer/WebDAV|&#039;&#039;&#039;WebDav&#039;&#039;&#039;]] and [[Data_Transfer/SFTP|sftp]]. For very strict facilities, ssh based protocols might not be allowed.&lt;br /&gt;
* &#039;&#039;&#039;Share data with collaborators...&#039;&#039;&#039;&lt;br /&gt;
** ...outside of Baden-Württemberg&amp;lt;br /&amp;gt; -&amp;amp;gt; Use the [[SDS@hd|SDS@hd]] storage.&lt;br /&gt;
** ...that are less comfortable with the command line&amp;lt;br /&amp;gt; -&amp;amp;gt; Let them mount the folder.&lt;br /&gt;
* &#039;&#039;&#039;Transfer many small files&#039;&#039;&#039;&amp;lt;br /&amp;gt; -&amp;amp;gt; Compress the files to one.&lt;br /&gt;
&lt;br /&gt;
For advanced topics see [[Data_Transfer/Advanced_Data_Transfer|Advanced Data Transfer]].&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/SSHFS&amp;diff=16074</id>
		<title>Data Transfer/SSHFS</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/SSHFS&amp;diff=16074"/>
		<updated>2026-05-13T14:10:07Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Rclone link for 2fa cases.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sshfs is a network protocol for mounting data. It uses [[Data Transfer/SFTP|sftp]] under the hood.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
For the necessary installations follow this link:&amp;lt;br /&amp;gt; [https://linuxize.com/post/how-to-use-sshfs-to-mount-remote-directories-over-ssh/ How to use SSHFS to Mount Remote Directories over SSH].&amp;lt;br /&amp;gt;&lt;br /&gt;
a) &#039;&#039;&#039;MacOS after the installation&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
To enable sshfs on your Mac go to: System Preferences -&amp;amp;gt; General tab -&amp;amp;gt; Allow Extensions button&amp;lt;br /&amp;gt;&lt;br /&gt;
Then follow the instructions that pop up (make sure that you remember the instructions before shutting down your computer).&amp;lt;br /&amp;gt;&lt;br /&gt;
b) &#039;&#039;&#039;Linux installation short commands&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Debian/Ubuntu: &amp;lt;code&amp;gt;apt-get install sshfs&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CentOS/RedHat: &amp;lt;code&amp;gt;dnf install fuse-sshfs&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If you want to use /etc/fstab, you can do this with the following entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;sshfs#&amp;amp;lt;username&amp;amp;gt;@&amp;amp;lt;hostname&amp;amp;gt;:    &amp;amp;lt;your_local_mountpoint&amp;amp;gt;   fuse   defaults,user,noauto,exec,reconnect        0       0 &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&#039;&#039;Caution: sshfs on Windows doesn&#039;t work with 2FA. An alternative is [[Data_Transfer/Rclone | Rclone with sftp]] + [[Registration/SSH | ssh key]].&#039;&#039;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Go to &amp;amp;quot;This PC&amp;amp;quot; and select &amp;amp;quot;Connect network drive&amp;amp;quot; (&amp;amp;quot;Netzlaufwerk verbinden&amp;amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select a drive (W:) and click on &amp;amp;quot;connect with webpage on which you can save documents and images&amp;amp;quot; (Verbindung mit website herstellen, auf der Sie Dokumente und Bilder speichern können)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter the following as address, to connect to the home or root folder:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;\sshfs\&amp;lt;username&amp;gt;@&amp;lt;hostname&amp;gt;/&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
If you would want to go two folders up, you would add “&#039;&#039;../../&#039;&#039;” at the end.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MacOS &amp;amp; Linux ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create an empty directory. The cluster/storage folder is going to be mounted to this directory.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mount a folder from the cluster/storage:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Home folder&lt;br /&gt;
sshfs -o reconnect &amp;lt;username&amp;gt;@&amp;lt;hostname&amp;gt;: &amp;lt;localPath&amp;gt;&lt;br /&gt;
# subfolderX&lt;br /&gt;
sshfs -o reconnect &amp;lt;username&amp;gt;@&amp;lt;hostname&amp;gt;:subfolderX &amp;lt;localPath&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Undo mounting ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MacOS &amp;amp; Linux:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
If the connection to the cluster broke and you want to remount, you often have to use umount first. Try to remember to always unmount first before retrying. Otherwise it can happen that unmounting is not possible anymore by cmd. Usually the error message in this case tells you that the process is currently busy and therefore cannot umount. In this case, you have to restart the notebook which automatically unmounts everything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;```bash&lt;br /&gt;
umount -f &amp;amp;lt;localPath&amp;amp;gt;&lt;br /&gt;
# For example&lt;br /&gt;
umount -f /Users/&amp;amp;lt;username&amp;amp;gt;/Documents/mounted&lt;br /&gt;
# or use&lt;br /&gt;
fusermount -u &amp;amp;lt;localPath&amp;amp;gt;&lt;br /&gt;
```&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Access&amp;diff=16073</id>
		<title>SDS@hd/Access</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Access&amp;diff=16073"/>
		<updated>2026-05-13T13:46:42Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Clarified username and password.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides an overview on how to access data served by SDS@hd. To get an introduction to data transfer in general, see [[Data_Transfer|data transfer]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notation:&#039;&#039;&#039; Please replace all placeholder contents within guillemets &amp;lt;code&amp;gt;&amp;lt; &amp;gt;&amp;lt;/code&amp;gt; with the actual value. For example, replace &#039;&#039;&amp;lt;name_of_my_dog&amp;gt;&#039;&#039; with &#039;&#039;Fluffy&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* You need to be [[SDS@hd/Registration|registered]].&lt;br /&gt;
* You need to be in the belwue-Network. This means you have to use the VPN Service of your HomeOrganization, if you want to access SDS@hd from outside the bwHPC-Clusters (e.g. via eduroam or from your personal notebook).&lt;br /&gt;
&lt;br /&gt;
== Needed Information, independent of the chosen tool ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Username:&#039;&#039;&#039; You can look it up under your user data at [https://bwservices.uni-heidelberg.de/user/index.xhtml bwServices]. The username is &#039;&#039;&amp;lt;localPrimaryGroup&amp;gt;_&amp;lt;eduPersonPrincipalName&amp;gt;&#039;&#039; . (It is the same as for the bwHPC Clusters. Example: &#039;&#039;hd_ab123&#039;&#039;.)&lt;br /&gt;
* &#039;&#039;&#039;Password:&#039;&#039;&#039; The Service Password that you set at bwServices in the [[SDS@hd/Registration#Step_B:_Registration_for_SDS@hd_Service|registration step]].&lt;br /&gt;
* &#039;&#039;&#039;SV-Acronym:&#039;&#039;&#039; Use the lower case version of the acronym for all access options.&lt;br /&gt;
* &#039;&#039;&#039;Hostname:&#039;&#039;&#039; The hostname depends on the chosen network protocol:&lt;br /&gt;
** For [[Data_Transfer/SSHFS|SSHFS]] and [[Data_Transfer/SFTP|SFTP]]: &#039;&#039;lsdf02-sshfs.urz.uni-heidelberg.de&#039;&#039;&lt;br /&gt;
** For [[SDS@hd/Access/SMB|SMB]] and [[SDS@hd/Access/NFS|NFS]]: &#039;&#039;lsdf02.urz.uni-heidelberg.de&#039;&#039;. The domain is &#039;&#039;BWSERVICESAD&#039;&#039;.&lt;br /&gt;
** For [[Data_Transfer/WebDAV|WebDAV]] the url is: &#039;&#039;https://lsdf02-webdav.urz.uni-heidelberg.de&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Recommended Setup ==&lt;br /&gt;
The following graphic shows the recommended way for accessing SDS@hd via Windows/Mac/Linux. The table provides an overview of the most important access options and links to the related pages.&amp;lt;br /&amp;gt;&lt;br /&gt;
If you have various use cases, it is recommended to use [[Data_Transfer/Rclone|Rclone]]. You can copy, sync and mount with it. Thanks to its multithreading capability Rclone is a good fit for transferring big data.&amp;lt;br /&amp;gt;&lt;br /&gt;
For an overview of all connection possibilities, please have a look at [[Data_Transfer/All_Data_Transfer_Routes|all data transfer routes]].&lt;br /&gt;
&lt;br /&gt;
[[File:Data_transfer_diagram_simple.jpg|center|500px]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center; font-size: small; margin-top: 10px&amp;quot;&amp;gt;Figure 1: SDS@hd main transfer routes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle;&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Use Case&lt;br /&gt;
! Windows&lt;br /&gt;
! Mac&lt;br /&gt;
! Linux&lt;br /&gt;
! Possible Bandwith&lt;br /&gt;
! Firewall Ports&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_Transfer/Rclone|Rclone]] + &amp;lt;protocol&amp;gt;&lt;br /&gt;
| copy, sync and mount, multithreading&lt;br /&gt;
| ✓&lt;br /&gt;
| ✓&lt;br /&gt;
| ✓&lt;br /&gt;
| depends on used protocol&lt;br /&gt;
| depends on used protocol&lt;br /&gt;
|-&lt;br /&gt;
| [[SDS@hd/Access/SMB|SMB]]&lt;br /&gt;
| mount as network drive in file explorer or usage via Rclone&lt;br /&gt;
| [[SDS@hd/Access/SMB#Windows|✓]]&lt;br /&gt;
| [[SDS@hd/Access/SMB#Mac|✓]]&lt;br /&gt;
| [[SDS@hd/Access/SMB#Linux|✓]]&lt;br /&gt;
| up to 40 Gbit/sec&lt;br /&gt;
| 139 (netbios), 135 (rpc), 445 (smb)&lt;br /&gt;
|-&lt;br /&gt;
| [[Data_Transfer/WebDAV|WebDAV]]&lt;br /&gt;
| go to solution for restricted networks&lt;br /&gt;
| [✓]&lt;br /&gt;
| ✓&lt;br /&gt;
| ✓&lt;br /&gt;
| up to 100GBit/sec&lt;br /&gt;
| 80 (http), 443 (https)&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
| [[Data_Transfer/Graphical_Clients#MobaXterm|MobaXterm]]&lt;br /&gt;
| Graphical User Interface (GUI)&lt;br /&gt;
| [[Data_Transfer/Graphical_Clients#MobaXterm|✓]]&lt;br /&gt;
| ☓&lt;br /&gt;
| ☓&lt;br /&gt;
| see sftp&lt;br /&gt;
| see sftp&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
| [[SDS@hd/Access/NFS|NFS]]&lt;br /&gt;
| mount for multi-user environments&lt;br /&gt;
| ☓&lt;br /&gt;
| ☓&lt;br /&gt;
| [[SDS@hd/Access/NFS|✓]]&lt;br /&gt;
| up to 40 Gbit/sec&lt;br /&gt;
| -&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
| [[Data_Transfer/SSHFS|SSHFS]]&lt;br /&gt;
| mount, needs stable internet connection&lt;br /&gt;
| ☓&lt;br /&gt;
| [[Data_Transfer/SSHFS#MacOS_&amp;amp;_Linux|✓]]&lt;br /&gt;
| [[Data_Transfer/SSHFS#MacOS_&amp;amp;_Linux|✓]]&lt;br /&gt;
| see sftp&lt;br /&gt;
| see sftp&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle;&amp;quot;&lt;br /&gt;
| [[Data_Transfer/SFTP|SFTP]]&lt;br /&gt;
| interactive shell, better usability when used together with Rclone&lt;br /&gt;
| [[Data_Transfer/SFTP#Windows|✓]]&lt;br /&gt;
| [[Data_Transfer/SFTP#MacOS_&amp;amp;_Linux|✓]]&lt;br /&gt;
| [[Data_Transfer/SFTP#MacOS_&amp;amp;_Linux|✓]]&lt;br /&gt;
| up to 40 Gbit/sec&lt;br /&gt;
| 22 (ssh)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center; font-size: small; margin-top: 10px&amp;quot;&amp;gt;Table 1: SDS@hd transfer routes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Access from a bwHPC Cluster ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bwUniCluster&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
You can&#039;t mount to your $HOME directory but you can create a mount under $TMPDIR by following the instructions for [[Data_Transfer/Rclone#Usage_Rclone_Mount | Rclone mount]]. It is advised to wait a couple of seconds (&amp;lt;code&amp;gt;sleep 5&amp;lt;/code&amp;gt;) before trying to use the mounted directory. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bwForCluster Helix&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
You can directly access your storage space under &#039;&#039;/mnt/sds-hd/&#039;&#039; on all login and compute nodes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bwForCluster BinAC 2&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
You can directly access your storage space under &#039;&#039;/mnt/sds-hd/&#039;&#039; on all login and compute nodes. The prerequisites are: &lt;br /&gt;
* The SV responsible has enabled the SV on BinAC 2 once by writing to [mailto:sds-hd-support@urz.uni-heidelberg.de sds-hd-support@urz.uni-heidelberg.de]&lt;br /&gt;
* You have a valid kerberos ticket, which can be fetched with &amp;lt;code&amp;gt;kinit &amp;lt;userID&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
You can mount your SDS@hd SV on the cluster yourself by using [[Data_Transfer/Rclone | Rclone]] with the [[Data_Transfer/Rclone#Usage_Rclone_Mount | Rclone mount]] command. As transfer protocol you can use WebDAV or sftp. For a full overview please have a look at [[Data_Transfer/All_Data_Transfer_Routes | All Data Transfer Routes]].&lt;br /&gt;
&lt;br /&gt;
=== Access via Webbrowser (read-only) ===&lt;br /&gt;
&lt;br /&gt;
Visit [https://lsdf02-webdav.urz.uni-heidelberg.de/ lsdf02-webdav.urz.uni-heidelberg.de] and login with your SDS@hd username and service password. Here you can get an overview of the data in your &amp;amp;quot;Speichervorhaben&amp;amp;quot; and download single files. To be able to do more, like moving data, uploading new files, or downloading complete folders, a suitable client is needed as described above.&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Managing access rights&#039;&#039;&#039;&lt;br /&gt;
** When the SV is mounted on Windows, access rights can be adjusted in the file/folder properties menu. (Users from Heidelberg without Windows can use the [https://www.urz.uni-heidelberg.de/de/service-katalog/desktop-und-arbeitsplatz/windows-terminalserver Windows terminal server]). &lt;br /&gt;
** bwForCluster Helix users can change the access rights via Helix by using [[Workspace#Regular_Unix_Permissions | unix permissions]] or [[Workspace#ACLs:_Access_Control_Lists | access control lists]]. On non native mounts ACL changes won&#039;t work. &lt;br /&gt;
** Additionally to the already mentioned options, the SVV can take over ownership of files by opening a [[Data_Transfer/SFTP|SFTP]] shell and running &amp;lt;code&amp;gt;chown -R &amp;lt;userID&amp;gt; &amp;lt;path/to/folder&amp;gt;&amp;lt;/code&amp;gt; . &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Multiuser environment&#039;&#039;&#039; &amp;lt;br /&amp;gt; &amp;amp;rarr; Use [[SDS@hd/Access/NFS|NFS]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Maintance windows and known issues are communicated via the email list or the News section at the SDS@hd start page in the wiki. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Issue:&#039;&#039;&#039; The credentials aren&#039;t accepted &lt;br /&gt;
*: Check if your credentials work in general by trying the access via webbrowser: [https://lsdf02-webdav.urz.uni-heidelberg.de/].&lt;br /&gt;
*: If this doesn&#039;t work: &lt;br /&gt;
*:: &amp;amp;rarr; [[Registration/Login/Username| Check your Username]]&lt;br /&gt;
*:: &amp;amp;rarr; [[Registration/bwForCluster/Helix#Troubleshooting_with_the_Help_of_bwServices | Troubleshooting with bwServices]]&lt;br /&gt;
* &#039;&#039;&#039;Other Issue&#039;&#039;&#039;&lt;br /&gt;
** If available, follow the troubleshooting guide of your specific connection method.&lt;br /&gt;
** Make sure to not use LAN and WLAN at the same time to prevent connection problems.&lt;br /&gt;
** If you have an institutional account, make sure to be a fully active member of your institution.&lt;br /&gt;
If these suggestions didn&#039;t help, write to the [mailto:sds-hd-support@urz.uni-heidelberg.de support]. Provide the following information: &lt;br /&gt;
* Your operating system&lt;br /&gt;
* Does the access via webbrowser work? &lt;br /&gt;
*: If yes, provide us with detailed information on how you tried to access your SV (used access method, username, ...).&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Helix/Login&amp;diff=16063</id>
		<title>Helix/Login</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Helix/Login&amp;diff=16063"/>
		<updated>2026-05-12T10:39:53Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Replaced some points with the &amp;quot;troubleshooting with bwServices&amp;quot; link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Prerequisites =&lt;br /&gt;
* The three [[registration/bwForCluster|bwForCluster registration]] steps are completed &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;and&amp;lt;/span&amp;gt; still valid.&lt;br /&gt;
* Your IP address is within the [https://www.belwue.de BelWü] network which connects universities and other scientific institutions in Baden-Württemberg. If your computer is in your university network (e.g. at your office), you should be able to connect to bwForCluster Helix without restrictions. If you are outside the BelWü network (e.g. at home), a VPN (virtual private network) connection to your University network must be established first. Please consult the VPN documentation of your university.&lt;br /&gt;
* As credentials you need your Helix [[Helix/Login#Username|username]], [[Registration/Password|service password]] and [[Registration/2FA|2FA token]].&lt;br /&gt;
* If you encounter any issues, please have a look at the [[Helix/Login#Troubleshooting|Troubleshooting]] section.&lt;br /&gt;
&lt;br /&gt;
= Login to bwForCluster Helix =&lt;br /&gt;
&lt;br /&gt;
Login to bwForCluster Helix is only possible with a Secure Shell (SSH) client for which you must know your bwForCluster Helix credentials and the hostname of the login nodes.&lt;br /&gt;
For more general information on SSH clients, visit the [[Registration/Login/Client|SSH clients Guide]].&lt;br /&gt;
&lt;br /&gt;
== Username ==&lt;br /&gt;
&lt;br /&gt;
Your username on bwForCluster Helix consists of a prefix and your local username.&lt;br /&gt;
For prefixes please refer to the [[Registration/Login/Username|Username Guide]].&lt;br /&gt;
&lt;br /&gt;
Example: If your local username at your University is &amp;lt;code&amp;gt;ab123&amp;lt;/code&amp;gt; and you are a user from Heidelberg University, your username on the cluster is: &amp;lt;code&amp;gt;hd_ab123&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Hostnames ==&lt;br /&gt;
&lt;br /&gt;
bwForCluster Helix has two login nodes. In general, you should stay with automatic node selection, so that the connections are evenly distributed between the login nodes. To do this, we use so-called DNS round-robin scheduling which takes care of the node balancing. This means, if you open multiple SSH sessions, these sessions may run on different login nodes. Therefore, processes started in one session might not be visible in other sessions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Hostname !! Destination&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;helix.bwservices.uni-heidelberg.de&#039;&#039;&#039; || one of the two login nodes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Login with SSH command (Linux, Mac, Windows) ==&lt;br /&gt;
&lt;br /&gt;
Most Unix and Unix-like operating systems such as Linux and Mac OS as well as newer versions of MS Windows (10 and 11), have a built-in SSH client provided by the OpenSSH project.&lt;br /&gt;
If you want to use the full set of Linux commands on Windows (10 or 11), you can also install the [https://docs.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
&lt;br /&gt;
For login use one of the following ssh commands in a commandline (i.e. cmd, terminal, PowerShell):&lt;br /&gt;
&lt;br /&gt;
 ssh &amp;lt;username&amp;gt;@helix.bwservices.uni-heidelberg.de&lt;br /&gt;
 ssh -l &amp;lt;username&amp;gt; helix.bwservices.uni-heidelberg.de&lt;br /&gt;
&lt;br /&gt;
To run graphical applications on the cluster, you need to enable X11 forwarding with the &amp;lt;code&amp;gt;-X&amp;lt;/code&amp;gt; flag:&lt;br /&gt;
&lt;br /&gt;
 ssh -X -l &amp;lt;username&amp;gt; helix.bwservices.uni-heidelberg.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To make the login process faster, tell the command that no ssh key authentication is used by adding an additional parameter: &lt;br /&gt;
&lt;br /&gt;
  ssh -o PubkeyAuthentication=no &amp;lt;username&amp;gt;@helix.bwservices.uni-heidelberg.de&lt;br /&gt;
&lt;br /&gt;
== Login with graphical SSH client (Windows) ==&lt;br /&gt;
&lt;br /&gt;
For Windows we suggest using [[Data_Transfer/Graphical_Clients#MobaXterm|MobaXterm]] for login and file transfer.&lt;br /&gt;
 &lt;br /&gt;
Start MobaXterm and fill in the following fields:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Remote name              : helix.bwservices.uni-heidelberg.de&lt;br /&gt;
Specify user name        : &amp;lt;username&amp;gt;&lt;br /&gt;
Port                     : 22&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that click on &#039;ok&#039;. Then a terminal will open where you can enter your credentials.&lt;br /&gt;
&lt;br /&gt;
== Login with SSH key ==&lt;br /&gt;
&lt;br /&gt;
To set up a SSH key for your workflow, read [[Registration/SSH|Registering SSH Keys with your Cluster]].&lt;br /&gt;
To login by using the ssh key, use the following command: &lt;br /&gt;
&lt;br /&gt;
  ssh -o IdentitiesOnly=yes -i &amp;lt;path_to_private_key&amp;gt; &amp;lt;username&amp;gt;@helix.bwservices.uni-heidelberg.de &lt;br /&gt;
&lt;br /&gt;
== Login Example ==&lt;br /&gt;
&lt;br /&gt;
To login to bwForCluster Helix, proceed as follows:&lt;br /&gt;
# Login with SSH command or MoabXterm as shown above.&lt;br /&gt;
# The system will ask for a one-time password &amp;lt;code&amp;gt;Your OTP&amp;lt;/code&amp;gt; (= Smartphone Token / TAN list element/ ...) . Please enter your OTP and confirm it with Enter/Return. The OTP is not displayed when typing. If you do not have a second factor yet, please create one (see [[Registration/2FA]]).&lt;br /&gt;
# The system will ask you for your service password &amp;lt;code&amp;gt;Password:&amp;lt;/code&amp;gt;. Please enter it and confirm it with Enter/Return. The password is not displayed when typing. If you do not have a service password yet or have forgotten it, please create one (see [[Registration/Password]]).&lt;br /&gt;
# You will be greeted by the cluster with the message of the day, followed by a shell.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ssh -l hd_ab123 helix.bwservices.uni-heidelberg.de&lt;br /&gt;
Your OTP:&lt;br /&gt;
Password: &lt;br /&gt;
&lt;br /&gt;
********************************************************************************&lt;br /&gt;
*                                                                              *&lt;br /&gt;
*                     Baden-Wuerttemberg HPC Cluster for                       *&lt;br /&gt;
*              Structural and Systems Biology, Medical Science,                *&lt;br /&gt;
*                 Soft Matter, Computational Humanities, and                   *&lt;br /&gt;
*                      Mathematics and Computer Science                        *&lt;br /&gt;
*                                                                              *&lt;br /&gt;
*                                bwForCluster                                  *&lt;br /&gt;
*                        _    _          _   _                                 *&lt;br /&gt;
*                       | |  | |        | | (_)                                *&lt;br /&gt;
*                       | |__| |   ___  | |  _  __  __                         *&lt;br /&gt;
*                       |  __  |  / _ \ | | | | \ \/ /                         *&lt;br /&gt;
*                       | |  | | |  __/ | | | |  &amp;gt;  &amp;lt;                          *&lt;br /&gt;
*                       |_|  |_|  \___| |_| |_| /_/\_\                         *&lt;br /&gt;
*                                                                              *&lt;br /&gt;
*                                                                              *&lt;br /&gt;
*                   (xCAT 2.16.4 / RHEL 8.8 / GPFS 5.1.8)                      *&lt;br /&gt;
*                                                                              *&lt;br /&gt;
*                                                                              *&lt;br /&gt;
*        bwHPC Wiki : https://wiki.bwhpc.de/e/Helix                            *&lt;br /&gt;
*     Ticket System : https://www.bwhpc.de/supportportal                       *&lt;br /&gt;
*    Job Monitoring : https://helix-monitoring.bwservices.uni-heidelberg.de    *&lt;br /&gt;
*        E-learning : https://training.bwhpc.de/                               *&lt;br /&gt;
*                     -&amp;gt; &#039;Introduction to bwForCluster Helix&#039;                  *&lt;br /&gt;
*                                                                              *&lt;br /&gt;
********************************************************************************&lt;br /&gt;
&lt;br /&gt;
Last login: ...&lt;br /&gt;
[hd_ab123@login ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Allowed Activities on Login Nodes =&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;background:#deffee; width:100%;&amp;quot;&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
[[Image:Attention.svg|center|25px]]&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
To guarantee usability for all users you must not run your compute jobs on the login nodes.&lt;br /&gt;
Compute jobs must be submitted as batch jobs.&lt;br /&gt;
Any compute job running on the login nodes will be terminated without notice.&lt;br /&gt;
Long-running compilation or long-running pre- or post-processing tasks must also be submitted as batch jobs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The login nodes are the access points to the compute system, your &amp;lt;code&amp;gt;$HOME&amp;lt;/code&amp;gt; directory and your workspaces.&lt;br /&gt;
These nodes are shared with all users. Hence, your activities on the login nodes are primarily limited to setting up your batch jobs.&lt;br /&gt;
Your activities may also be:&lt;br /&gt;
* quick compilation of program code or&lt;br /&gt;
* quick pre- and post-processing of results from batch jobs.&lt;br /&gt;
&lt;br /&gt;
We advise to use [[Helix/Slurm#Interactive_Jobs|interactive batch jobs]] for compute and memory intensive compilation and pre- and post-processing tasks.&lt;br /&gt;
&lt;br /&gt;
= Related Information =&lt;br /&gt;
&lt;br /&gt;
* If you want to register a new token for the two factor authentication (2FA), consult the [[Registration/2FA|2FA Guide]].&lt;br /&gt;
* If you want to de-register, consult the [[Registration/Deregistration|De-registration Guide]].&lt;br /&gt;
* If you need an SSH key for your workflow, read [[Registration/SSH|Registering SSH Keys with your Cluster]].&lt;br /&gt;
* Configuring your shell: [[.bashrc Do&#039;s and Don&#039;ts]]&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Login Problems&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you encounter login problems, please double check the prerequisites. If those are valid, it is fastest to first check the following points before contacting the support at the [https://www.bwhpc.de/supportportal.php|bwhpc Suppport Portal].&lt;br /&gt;
If there are known issues with the cluster, we&#039;ll inform you via e-mail or in the message of the day at the cluster.&lt;br /&gt;
&lt;br /&gt;
* Make sure to not use LAN and WLAN at the same time to prevent connection problems.&lt;br /&gt;
* Do [[Registration/bwForCluster/Helix#Troubleshooting_with_the_Help_of_bwServices | troubleshooting with bwServices]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lost Token&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To reset your token you have to visit the IT-Service to validate your identity.&lt;br /&gt;
Mention that you want a reset of your Helix 2FA token. It is important to emphasize that the token reset is for bwForCluster Helix to avoid confusion with the token that is specific to members/students of the university of Heidelberg.&lt;br /&gt;
&lt;br /&gt;
You can visit the IT service point of the URZ in person at INF 330, 69120 Heidelberg. Or you can use the video call service. It is recommended to use the Chrome browser for doing the video call. Please have on official identification ready in any case (Führerschein / Personalausweis) .&lt;br /&gt;
For further information please see here: https://it-service.uni-heidelberg.de.&lt;br /&gt;
&lt;br /&gt;
To be on the safe side, it is advised to create a [[Registration/2FA#Backup_TAN_List|backup TAN list]] additionally to the smartphone token.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster/Helix&amp;diff=16062</id>
		<title>Registration/bwForCluster/Helix</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster/Helix&amp;diff=16062"/>
		<updated>2026-05-12T10:34:50Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added too many failed login attempts issue.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
Steps A + B in the [[Registration/bwForCluster | registration process]] must be finished. &lt;br /&gt;
&lt;br /&gt;
== Registration Steps ==&lt;br /&gt;
&lt;br /&gt;
# Visit the bwForCluster Helix &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de registration page bwServices]&#039;&#039;&#039;.&lt;br /&gt;
#: [[File:bwServices_chooseHomeOrganisation.png|right|300px|thumb|Select your home organization]]&lt;br /&gt;
# &#039;&#039;&#039;Select your home organization&#039;&#039;&#039; from the list on the main page and click Proceed/Fortfahren. You will be directed to the &#039;&#039;Identity Provider&#039;&#039; of your home organization.&lt;br /&gt;
# Enter the &#039;&#039;&#039;username and password&#039;&#039;&#039; of your home organization (usually these credentials are also used for other services like email) and click Login/Einloggen.&lt;br /&gt;
# When you log in to bwServices for the first time, an overview will appear, with the account information that your home institution submits to the system. Please verify that all data is valid and then click &#039;&#039;Continue/Weiter&#039;&#039;.&lt;br /&gt;
#  You will be redirected back to the bwServices main page. It shows all the statewide services you have access to. Click &#039;&#039;&#039;Register/Registrieren&#039;&#039;&#039; under the field labeled &#039;&#039;bwForCluster Helix&#039;&#039;.&lt;br /&gt;
#: [[File:BwIDM-reg.png|center|frame|Register for Helix]]&lt;br /&gt;
# bwForCluster Helix uses a &#039;&#039;&#039;2-factor authentication&#039;&#039;&#039; (2FA) mechanism to increase security.&lt;br /&gt;
#: If you have never registered a 2FA token on bwIDM, the following error message will appear:&lt;br /&gt;
#: [[File:Bwidm-3-red.png|center|600px|thumb|Second factor missing.]]&lt;br /&gt;
#: Use this &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de/user/twofa.xhtml link]&#039;&#039;&#039; or select &#039;&#039;&#039;My Tokens&#039;&#039;&#039; in the main menu.&lt;br /&gt;
#: To register a new token, please follow these &#039;&#039;&#039;[[Registration/2FA|instructions]]&#039;&#039;&#039;.&lt;br /&gt;
#: Please complete this step before continuing.&lt;br /&gt;
# Read the Terms of Use / Nutzungsbedingungen, place a check mark next to &#039;&#039;I have read and accepted the terms of use&#039;&#039; and click &#039;&#039;Register/Registrieren&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Set a service password&#039;&#039;&#039; for bwForCluster Helix and click &#039;&#039;Save/Speichern&#039;&#039;.&lt;br /&gt;
#: Be sure to use a secure password that is different from any other passwords you currently use or have used on other systems.&lt;br /&gt;
[[File:BwIDM-passwd.png|center|600px|thumb|Set service password]]&lt;br /&gt;
{|style=&amp;quot;background:#deffee; width:70%; margin: auto;&amp;quot;&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
[[Image:Attention.svg|center|25px]]&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
The service password is your private password for accessing the bwForCluster Helix. Don&#039;t ever share it with anyone!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Registration Website bwServices ==&lt;br /&gt;
The registration website &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de bwServices]&#039;&#039;&#039; offers the following functionality: &lt;br /&gt;
* Register for the service.&lt;br /&gt;
* Set or change your service password.&lt;br /&gt;
* Review your registration details under &amp;quot;Registry Info&amp;quot;. This includes your account status (active/lost_access).&lt;br /&gt;
* bwServices triggers an update of your user information upon login.&lt;br /&gt;
* Registering an [[Registration/SSH | SSH key]]. It can be used for login to &#039;&#039;bwForCluster Helix&#039;&#039;. &lt;br /&gt;
* Creating tokens for logins that need 2-factor authentication ([[Registration/2FA |2FA]]) like &#039;&#039;bwForCluster Helix&#039;&#039; and &#039;&#039;bwVisu&#039;&#039;.&lt;br /&gt;
* De-register from the service.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting with the Help of bwServices ===&lt;br /&gt;
When encountering connection issues with a service, the bwServices website is a good starting point for troubleshooting: &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Expired contract&#039;&#039;&#039; or inactive student id: &lt;br /&gt;
** No access to state services like the bwHPC clusters or SDS@hd is possible.&lt;br /&gt;
** You can see that this is the issue when the login to bwServices via your identity provider is not possible. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Recently (re)activated uni-id:&#039;&#039;&#039; Your id at your home organization was (re)activated a short time ago but this change didn&#039;t get through to the bwHPC cluster or SDS@hd service. &lt;br /&gt;
** Login to bwServices. This triggers an update of your user information. Some minutes later, the connection to the service should work. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Entitlement / RV missing:&#039;&#039;&#039; Prerequisites like entitlement ownership or RV membership aren&#039;t met (anymore). &lt;br /&gt;
** You can see the concrete issue and advice on how to move forward when looking at the registry info of the service on the bwServices website.&lt;br /&gt;
** When the issue is solved, the account status changes from LOST_ACCESS to ACTIVE. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Service Password:&#039;&#039;&#039; When trying to connect to the service, the service password is not accepted. &lt;br /&gt;
** Set a [[#Setting_a_New_Service_Password | new password]].&lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; OTP:&#039;&#039;&#039; In the case of login issues with a service that uses 2FA, you can check if you&#039;re OTP is working by going in the menu to &#039;&#039;Index&#039;&#039; -&amp;gt; &#039;&#039;My Tokens&#039;&#039;. &lt;br /&gt;
** If you&#039;re token is not working, you might have had too many failed login attempts. You can request a reset of the error counter from the support. &lt;br /&gt;
** If the token needs to be reset, please follow the instructions for a [[Helix/Login#Troubleshooting | Lost Token]].&lt;br /&gt;
&lt;br /&gt;
=== Setting a New Service Password === &lt;br /&gt;
&lt;br /&gt;
At any time, you can set a new service password via [https://bwservices.uni-heidelberg.de/ bwServices] by carrying out the following steps:&lt;br /&gt;
# Visit [https://bwservices.uni-heidelberg.de/ bwServices] and select your home organization. &lt;br /&gt;
# Authenticate yourself via your home-organizational user id / username and your home-organizational password.&lt;br /&gt;
# Find your service and select &#039;&#039;&#039;Set Service Password&#039;&#039;&#039;.&lt;br /&gt;
# Set new service password, repeat it and click the &#039;&#039;&#039;Save&#039;&#039;&#039; button. Use a secure password that is different from any other passwords you currently use or have used on other systems.&lt;br /&gt;
# The page answers e.g. &amp;quot;password has been changed&amp;quot;.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Helix/bwVisu/JupyterLab&amp;diff=16045</id>
		<title>Helix/bwVisu/JupyterLab</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Helix/bwVisu/JupyterLab&amp;diff=16045"/>
		<updated>2026-05-07T14:32:03Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added hint to load modules first.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://jupyter.org/ JupyterLab] is an integrated development environment (IDE) that provides a flexible and scalable interface for the Jupyter Notebook system. It supports interactive data science and scientific computing across over 40 programming languages (including Python, Julia, and R).&lt;br /&gt;
&lt;br /&gt;
== Change Python Version ==&lt;br /&gt;
&lt;br /&gt;
The default python version can be seen by running &amp;lt;code&amp;gt;python --version&amp;lt;/code&amp;gt; in the terminal. &lt;br /&gt;
&lt;br /&gt;
A different python version can be installed into a new virtual environment and then registered as IPython kernel for the usage in JupyterLab. This is explained in the chapter [[#Add_packages_via_conda_environments | add packages via conda environments]].&lt;br /&gt;
&lt;br /&gt;
== Install Python Packages ==&lt;br /&gt;
&lt;br /&gt;
Python packages can be added by installing them into a virtual environment and then creating an IPython kernel from the virtual environment. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Kernels can be shared&amp;lt;/u&amp;gt;. See the notes below. &amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to move a virtual environment, it is adivsed to recreate it in the new place. Otherwise, dependencies based on relative paths will break. &lt;br /&gt;
&lt;br /&gt;
# Create a virtual environment with...&lt;br /&gt;
#* [[#Add_packages_via_venv_virtual_environments | ...venv]] or&lt;br /&gt;
#* [[#Add_packages_via_Conda_virtual_environments | ...conda]] (choose this option if you want to install a different python version) or &lt;br /&gt;
#* ...[https://docs.astral.sh/uv/getting-started/ uv] if you want to install a different python version but don&#039;t want to use conda. &lt;br /&gt;
# [[#Create_an_IPython_Kernel | Create an IPython kernel]] from the virtual environment&lt;br /&gt;
# Use the kernel within JupyterLab&lt;br /&gt;
#* By default new kernels are saved under &amp;lt;code&amp;gt;~/.local/share/jupyter&amp;lt;/code&amp;gt; and this location is automatically detected. Therefore, new kernels are directly available. &lt;br /&gt;
#*:[[File:BwVisu JuypterLab KernelPath.png|In the JupyterLab job configuration form, a custom kernel path can be provided.|right|thumb|x150px]]&lt;br /&gt;
#* If the kernel is saved somewhere else, the path can be provided in the &amp;quot;Kernel path&amp;quot; field when configuring the JupyterLab job (see image). For a kernel placed under &amp;lt;code&amp;gt;path_to_parent_dir/share/jupyter/kernels/my_kernel&amp;lt;/code&amp;gt; the needed &amp;quot;Kernel path&amp;quot; would be &amp;lt;code&amp;gt;path_to_parent_dir/share/jupyter&amp;lt;/code&amp;gt;. &lt;br /&gt;
# When the kernel is used the first time, the file &amp;lt;code&amp;gt;notebook_secrets&amp;lt;/code&amp;gt; is created automatically. It can be found under &amp;quot;Kernel path&amp;quot;. For others to use the kernel, they must have read access to this file. The command &amp;lt;code&amp;gt;chmod 750 notebook_secrets&amp;lt;/code&amp;gt; would for example allow the whole SDS@hd SV read access. For the access management in workspaces, please see [[Workspace#Setting_Permissions_for_Sharing_Files| Wokspace Permissions]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Notes regarding the sharing of IPython kernels&amp;lt;/u&amp;gt;&lt;br /&gt;
* The virtual environment and the kernel need to be placed in a shared directory. For example at SDS@hd.&lt;br /&gt;
* There could be a subdirectory for the virtual environments and one for the kernels. &lt;br /&gt;
* The path to the kernels is saved in the environment variable $JUPYTER_DATA_DIR. Jupyter relevant paths can be seen with &amp;lt;code&amp;gt;jupyter --paths&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add packages via &#039;&#039;venv&#039;&#039; virtual environments ===&lt;br /&gt;
More information about venv or other python virtual environments can be found at the [[Development/Python | Python]] page. &lt;br /&gt;
&lt;br /&gt;
Steps for creating a &#039;&#039;&#039;venv&#039;&#039;&#039; virtual environment:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open a terminal.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a new virtual evironment: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;python3 -m venv &amp;lt;env_parent_dir&amp;gt;/&amp;lt;env_name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;env_parent_dir&amp;lt;/code&amp;gt; is the path to the folder where the virtual environment shall be created. Relative paths can be used.&lt;br /&gt;
* Caution: If you you want to share the environment with others, make sure to already create it in the shared place. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Activate the environment:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;source &amp;lt;env_parent_dir&amp;gt;/&amp;lt;env_name&amp;gt;/bin/activate&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Update pip and install packages:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;pip install -U pip --no-user&lt;br /&gt;
# when the environment is installed in home&lt;br /&gt;
pip install &amp;lt;packagename&amp;gt;&lt;br /&gt;
# when the environment is installed somewhere else and shall not have dependencies in home so that others can access it as well&lt;br /&gt;
pip install &amp;lt;packagename&amp;gt; --no-user&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[#Create_an_IPython_Kernel | Create an IPython kernel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add packages via Conda virtual environments ===&lt;br /&gt;
More information about using conda can be found at the [[Development/Conda | Conda]] page. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Load the miniforge module by clicking first on the blue hexagon icon on the left-hand side of Jupyter&#039;s start page and then on the &amp;amp;quot;load&amp;amp;quot; button right of the entry for miniforge in the software module menu. &lt;br /&gt;
&amp;lt;li&amp;gt;Open a terminal.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a new virtual environment: &lt;br /&gt;
* If you are the only person using the environment, you can install it in your home directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;conda create --name &amp;lt;env_name&amp;gt; python=&amp;lt;python version&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* If you want to install it into a different directory, for example a shared place:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;conda create --prefix &amp;lt;path_to_shared_directory&amp;gt;/&amp;lt;env_name&amp;gt; python=&amp;lt;python version&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Activate your environment:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;conda activate &amp;lt;myenv&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install your packages:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;conda install &amp;lt;mypackage&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[#Create_an_IPython_Kernel | Create an IPython kernel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create an IPython Kernel ==&lt;br /&gt;
&lt;br /&gt;
Python kernels are implementations of the Jupyter notebook environment for different languages or virtual environments. You can switch between kernels easily, allowing you to use the best tool for a specific task.&lt;br /&gt;
conda_kernels&lt;br /&gt;
&lt;br /&gt;
=== Create a kernel from a virtual environment ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Activate the virtual environment.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the ipykernel package:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;pip install ipykernel&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Register the virtual environment as custom kernel to Jupyter. &lt;br /&gt;
* If you are the only person using the environment:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;python3 -m ipykernel install --user --name=&amp;lt;kernel_name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The kernel can be found under &amp;lt;code&amp;gt;~/.local/share/jupyter/kernels/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you installed the environment in a shared place and want to have the kernel there as well: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;python3 -m ipykernel install --prefix &amp;lt;path_to_kernel_folder&amp;gt; --name=&amp;lt;kernel_name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The kernel can then be found under &amp;lt;code&amp;gt;path_to_kernel_folder/share/jupyter/kernels/&amp;lt;kernel_name&amp;gt;&amp;lt;/code&amp;gt;. As long as the same &amp;lt;code&amp;gt;path_to_kernel_folder&amp;lt;/code&amp;gt; is used, all kernels will be saved next to each other in &amp;quot;kernels&amp;quot;. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multi-Language Support ===&lt;br /&gt;
&lt;br /&gt;
JupyterLab supports over 40 programming languages including Python, R, Julia, and Scala. This is achieved through the use of different kernels.&lt;br /&gt;
&lt;br /&gt;
==== R Kernel ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the cluster:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ module load math/R&lt;br /&gt;
$ R&lt;br /&gt;
&amp;amp;gt; install.packages(&#039;IRkernel&#039;)&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On bwVisu:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Jupyter App&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In left menu: load math/R&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open Console:&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ R&lt;br /&gt;
&amp;amp;gt; IRkernel::installspec(displayname = &#039;R 4.2&#039;)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Start kernel &#039;R 4.2&#039; as console or notebook&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Julia Kernel ====&lt;br /&gt;
&lt;br /&gt;
Load the math/julia module. Open the Terminal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
julia&lt;br /&gt;
]&lt;br /&gt;
add IJulia&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that, Julia is available as a kernel.&lt;br /&gt;
&lt;br /&gt;
== Interactive Widgets ==&lt;br /&gt;
&lt;br /&gt;
JupyterLab supports interactive widgets that can create UI controls for interactive data visualization and manipulation within the notebooks. Example of using an interactive widget:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;{.python&amp;quot;&amp;gt;from ipywidgets import IntSlider&lt;br /&gt;
slider = IntSlider()&lt;br /&gt;
display(slider)&amp;lt;/pre&amp;gt;&lt;br /&gt;
These widgets can be sliders, dropdowns, buttons, etc., which can be connected to Python code running in the backend.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;&#039;&#039;&#039;How can I use bwForCluster Helix software modules?&#039;&#039;&#039;&amp;lt;/br&amp;gt;&lt;br /&gt;
First click on the blue hexagon icon on the left-hand side of Jupyter&#039;s start page. Then load a module by clicking on the &amp;quot;load&amp;quot; button next to the corresponding module entry.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;My virtual environment works on Helix but not in the bwVisu JupyterLab job.&#039;&#039;&#039;&amp;lt;/br&amp;gt;&lt;br /&gt;
If the environment uses Helix modules, you have to load the modules in the bwVisu job first. For example, when you used the python 3.13 module for creating the environment, the path to this python version is saved in the environment. When the module is not loadedin bwVisu, the path is not available and you might get an error like &amp;quot;&#039;&#039;[...]/bin/python: error while loading shared libraries: libpython3.13.so.1.0: cannot open shared object file: No such file or directory&#039;&#039;&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;How can I navigate to my SDS@hd folder in the file browser?&#039;&#039;&#039;&amp;lt;/br&amp;gt;&lt;br /&gt;
Please see the instructions at the [[Helix/bwVisu/Usage#Files | Usage]] page.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;I prefer VSCode over JupyterLab. Can I start a JupyterLab job and then connect with it via VSCode?&#039;&#039;&#039;&amp;lt;/br&amp;gt;&lt;br /&gt;
This is not possible. Please start the job directly on Helix instead. You can find the instructions at the [[Development/VS_Code#Connect_to_Remote_Jupyter_Kernel | VSCode page]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;My conda commands are interrupted with message &#039;Killed&#039;.&#039;&#039;&#039;&amp;lt;/br&amp;gt;&lt;br /&gt;
Request more memory when starting Jupyter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Jupyterlab doesn&#039;t let me in but asks for a password.&#039;&#039;&#039;&amp;lt;/br&amp;gt;&lt;br /&gt;
Try using more memory for the job. If this doesn&#039;t help, try using the inkognito mode of your browser as the browser cache might be the problem.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd&amp;diff=16037</id>
		<title>SDS@hd</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd&amp;diff=16037"/>
		<updated>2026-05-06T13:52:17Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added account management link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:sds-hd-logo.png|350px]]&lt;br /&gt;
&lt;br /&gt;
SDS@hd is a central service for securely storing scientific data (Scientific Data Storage). The service is provided as a state service to researchers of higher education institutions of Baden-Württemberg. It is intended to be used for data that is frequently accessed (&#039;hot data&#039;).&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;  background:#FEF4AB; width:100%;&amp;quot; &lt;br /&gt;
| style=&amp;quot;padding:8px; background:#FFE856; font-size:120%; font-weight:bold;  text-align:left&amp;quot; | News&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* November 2022: No special entitlement is needed anymore to participate in an existing storage project.&lt;br /&gt;
* September 2023: Service has now been opened for DFN AAI &amp;amp; eduGAIN federation members to participate on existing storage projects.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;  background:#eeeefe; width:100%;&amp;quot; &lt;br /&gt;
| style=&amp;quot;padding:8px; background:#dedefe; font-size:120%; font-weight:bold;  text-align:left&amp;quot; | Training &amp;amp; Support&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* [https://www.urz.uni-heidelberg.de/en/service-catalogue/storage/sdshd-scientific-data-storage Service description &amp;amp; FAQ]&lt;br /&gt;
* [mailto:sds-hd-support@urz.uni-heidelberg.de Submit a Ticket]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;  background:#ffeaef; width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:8px; background:#f5dfdf; font-size:120%; font-weight:bold;  text-align:left&amp;quot; | User Documentation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[SDS@hd/Registration|Registration]] ([[SDS@hd/SV_Management|SV Management]], [[Registration/bwForCluster/Helix#Registration_Website_bwServices|Account Management]])&lt;br /&gt;
* [[SDS@hd/Access|Access]]&lt;br /&gt;
* [[SDS@hd/Security|Data Security]]&lt;br /&gt;
* [[Helix/bwVisu|bwVisu]] for visualization and interactive data analysis&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;  background:#e6e9eb; width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:8px; background:#d1dadf; font-size:120%; font-weight:bold;  text-align:left&amp;quot; | Storage Funding&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Please [[SDS@hd/Acknowledgement|acknowledge]] SDS@hd in your publications.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Helix&amp;diff=16035</id>
		<title>Helix</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Helix&amp;diff=16035"/>
		<updated>2026-05-06T13:50:59Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added account management link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Helix-logo.png|300px]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;bwForCluster Helix&#039;&#039;&#039; is dedicated to research in the bwHPC domains Structural and Systems Biology, Medical Science, Soft Matter, Computational Humanities, and Mathematics and Computer Science.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;  background:#FEF4AB; width:100%;&amp;quot; &lt;br /&gt;
| style=&amp;quot;padding:8px; background:#FFE856; font-size:120%; font-weight:bold;  text-align:left&amp;quot; | News&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;!--* August 2022: Start of bwForCluster Helix--&amp;gt;&lt;br /&gt;
&amp;lt;!--* Oktober 2023: Extension with additional compute nodes: 84x cpu nodes and 1x gpu8 node--&amp;gt;&lt;br /&gt;
&amp;lt;!--* April 2024: Extension with additional compute nodes: 23x cpu nodes--&amp;gt;&lt;br /&gt;
&amp;lt;!--* Job monitoring portal: https://helix-monitoring.bwservices.uni-heidelberg.de--&amp;gt;&lt;br /&gt;
&amp;lt;!--* July 2024: Cluster extension with 1x gpu8 node--&amp;gt;&lt;br /&gt;
&amp;lt;!--* 1. October 2024: Cluster Maintenance--&amp;gt;&lt;br /&gt;
&amp;lt;!--* 17.06.2025 08:00h - 18.06.2025 18:00h: &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Cluster Maintenance&amp;lt;/span&amp;gt;--&amp;gt;&lt;br /&gt;
* June 2025: [https://www.bwhpc.de/897.php Important notice regarding the use of MathWorks products]&lt;br /&gt;
* April 2025: Cluster extension with 3x gpu8 nodes (Nvidia H200)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;  background:#eeeefe; width:100%;&amp;quot; &lt;br /&gt;
| style=&amp;quot;padding:8px; background:#dedefe; font-size:120%; font-weight:bold;  text-align:left&amp;quot; | Training &amp;amp; Support&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* [[Helix/Getting Started|Getting Started]]&lt;br /&gt;
* E-Learning Course [https://training.bwhpc.de/goto.php/crs/695 Introduction to bwForCluster Helix]&lt;br /&gt;
&amp;lt;!--* [[Helix/Migration Guide|Migration Guide for users of bwForCluster MLS&amp;amp;WISO]]--&amp;gt;&lt;br /&gt;
* [https://www.bwhpc.de/supportportal.php Submit a Ticket] to support unit &#039;bwHPC - Support &amp;gt; bwForCluster Helix&#039;&lt;br /&gt;
&amp;lt;!--* [[Helix/ChangeLog|ChangeLog]]--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;  background:#deffee; width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:8px; background:#cef2e0; font-size:120%; font-weight:bold;  text-align:left&amp;quot; | User Documentation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[Registration/bwForCluster|Registration]] ([[Registration/bwForCluster/RV/Management|RV Management]], [[Registration/bwForCluster/Helix#Registration_Website_bwServices|Account Management]])&lt;br /&gt;
* [[Helix/Login|Login]]&lt;br /&gt;
* [[Helix/Hardware|Hardware and Architecture]]&lt;br /&gt;
* [[Helix/Filesystems|File Systems and Workspaces]] &lt;br /&gt;
* [[Helix/Software|Cluster Specific Software]]&lt;br /&gt;
* [[Helix/Slurm|Batch System (Slurm)]] &lt;br /&gt;
* [[Helix/bwVisu|bwVisu]] for visualization and interactive applications&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;  background:#e6e9eb; width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:8px; background:#d1dadf; font-size:120%; font-weight:bold;  text-align:left&amp;quot; | Cluster Funding&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Please [[Helix/Acknowledgement|acknowledge]] the cluster in your publications.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16034</id>
		<title>Data Transfer/Rclone</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Data_Transfer/Rclone&amp;diff=16034"/>
		<updated>2026-05-06T11:26:59Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added smb to oneliner and config file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[https://rclone.org/docs/ Rclone] is a command line tool to manage files on remote systems (e.g. cloud storage systems). Rclone either synchronizes in one direction only or its mounting functionality is used with &amp;lt;code&amp;gt;rclone mount&amp;lt;/code&amp;gt;. Data can be piped between two completely remote locations, sometimes without local download. One advantage is that the transfer is multithreaded and it operates on a file level basis.  &lt;br /&gt;
&#039;&#039;&#039;Caution:&#039;&#039;&#039; You can&#039;t use Rclone with 2FA.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Rclone is a Go program and comes as a single binary file.&lt;br /&gt;
&lt;br /&gt;
# Download the relevant binary.&lt;br /&gt;
# Extract the &amp;lt;code&amp;gt;rclone&amp;lt;/code&amp;gt; executable, &amp;lt;code&amp;gt;rclone.exe&amp;lt;/code&amp;gt; on Windows, from the archive.&lt;br /&gt;
# You can use the executables without further installation. For easy use, it is recommended to add the binary to your PATH environment variable. Information on how to do this can be found below.&lt;br /&gt;
&lt;br /&gt;
Detailed information regarding different operating systems can be found here:&lt;br /&gt;
&lt;br /&gt;
* Installation on [https://rclone.org/install/#windows Windows]&lt;br /&gt;
* Installation on [https://rclone.org/install/#macos macOS]&lt;br /&gt;
* Installation on [https://rclone.org/install/#script-installation Linux]&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone ==&lt;br /&gt;
&lt;br /&gt;
To use Rclone you have to define a config file. Afterwards you can connect by using the name of your configured connections. &lt;br /&gt;
&lt;br /&gt;
=== Configure Remote ===&lt;br /&gt;
&lt;br /&gt;
Before you can start using Rclone, you need to set up a remote. This means to configure a specific connection by providing authentication information, the network protocol that you want to use and a name for this configuration so that you can use it later on.&lt;br /&gt;
&lt;br /&gt;
To configure a remote for a specific service, you need the following information:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;remotehost&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;username&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;servicePassword&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you have to decide on: &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;network protocol&amp;lt;/code&amp;gt; (for example webDAV, smb, sftp)&lt;br /&gt;
* &amp;lt;code&amp;gt;remote-name&amp;lt;/code&amp;gt; (for example you can use the name of the service you want to connect to)&lt;br /&gt;
&lt;br /&gt;
You have three different options to set up a new remote which are explained by the following sections. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Interactive Setup&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Execute:&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone config&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will guide you through an interactive setup process. You can find detailed instructions at the website: &lt;br /&gt;
&lt;br /&gt;
* [https://rclone.org/webdav/ Connect via webdav]&lt;br /&gt;
* [https://rclone.org/smb/ Connect via smb]&lt;br /&gt;
* [https://rclone.org/sftp/ Connect via sftp]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Oneliner&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Define all parameters in one command. For example:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# smb&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; smb host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; domain=&amp;lt;domain&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# sftp&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; sftp host=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
# webdav&lt;br /&gt;
rclone config create &amp;lt;remote-name&amp;gt; webdav url=&amp;lt;remotehost&amp;gt; user=&amp;lt;username&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.1em; text-decoration: underline;&amp;quot;&amp;gt;&#039;&#039;&#039;Adjust Config File&#039;&#039;&#039; &amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Make sure that a config file exists. Access rights for the config file are set to 600.  &lt;br /&gt;
rclone config touch&lt;br /&gt;
# Get the location of the file: &lt;br /&gt;
rclone config file &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
You can use the following snippet as template for your connections.  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = smb&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
domain = &amp;lt;e.g. BWSERVICESAD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = webdav&lt;br /&gt;
url = &amp;lt;hostURL&amp;gt;&lt;br /&gt;
vendor = other&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_use_agent = false&lt;br /&gt;
&lt;br /&gt;
[&amp;lt;remote-name-ssh-version&amp;gt;]&lt;br /&gt;
type = sftp&lt;br /&gt;
host = &amp;lt;hostname&amp;gt;&lt;br /&gt;
user = &amp;lt;userID&amp;gt;&lt;br /&gt;
key_file = ~/.ssh/id_ed25519&lt;br /&gt;
pubkey_file = ~/.ssh/id_ed25519.pub&lt;br /&gt;
key_use_agent = true&lt;br /&gt;
shell_type = none&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To add the password, please use the following command. Make sure to keep the prepended space so that the command is not saved in your command history. &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt; rclone config update &amp;lt;remote-name&amp;gt; pass=&amp;lt;password&amp;gt; --obscure&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use Remote ===&lt;br /&gt;
&lt;br /&gt;
The syntax to use Rclone is like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone [options] subcommand &amp;lt;parameters&amp;gt; &amp;amp;lt;parameters...&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
List all directories/containers/buckets in the folder XX.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone lsd &amp;lt;remote-name&amp;gt;:XX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copies /local/path to the remote path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;amp;lt;/local/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copies fom remote path to /local/path&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone copy &amp;lt;remote-name&amp;gt;:&amp;amp;lt;remote/path&amp;amp;gt; &amp;amp;lt;/local/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Moves the contents of the source directory to the destination directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone move &amp;lt;remote-name&amp;gt;:&amp;amp;lt;source/path&amp;amp;gt; &amp;lt;remote-name&amp;gt;:&amp;amp;lt;destination/path&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
More subcommands can be found [https://rclone.org/docs/#subcommands here].&lt;br /&gt;
&lt;br /&gt;
== Usage Rclone Mount ==&lt;br /&gt;
&lt;br /&gt;
Before you can follow the instructions in this chapter, you need to have set up a [[Data_Transfer/Rclone#Usage_Rclone | remote]].&lt;br /&gt;
Detailed information on how to use rclone mount can be found [https://rclone.org/commands/rclone_mount/ here].&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
To run rclone mount on Windows, you will need to [https://winfsp.dev/rel/ download and install WinFsp]. To mount on drive letter X or a nonexistent subdirectory, use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rclone mount &amp;amp;lt;remote-name&amp;amp;gt;:path/to/files X:&lt;br /&gt;
rclone mount &amp;amp;lt;remote-name&amp;amp;gt;:path/to/files C:\path\parent\mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
In contrast to Linux/Mac, there is no background mode.&lt;br /&gt;
&lt;br /&gt;
=== MacOS &amp;amp; Linux ===&lt;br /&gt;
&lt;br /&gt;
You can run mount in either foreground or background (aka daemon) mode. Mount runs in foreground mode by default. Use the &amp;lt;code&amp;gt;--daemon&amp;lt;/code&amp;gt; flag to force background mode. If this doesn&#039;t work, you can put an &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; at the end of the command instead. &lt;br /&gt;
&lt;br /&gt;
Create an empty directory on your local machine and then execute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# to mount the root folder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;amp;lt;remote-name&amp;amp;gt;: /path/to/empty/folder &lt;br /&gt;
# to mount a subfolder:&lt;br /&gt;
rclone mount --vfs-cache-mode full &amp;amp;lt;remote-name&amp;amp;gt;:folderX/folderY /path/to/empty/folder &lt;br /&gt;
# to unmount:&lt;br /&gt;
fusermount -uz /path/to/mounted/folder &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
Rclone has a lot of useful options. &lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
&lt;br /&gt;
To be able to utilize a larger bandwidth, it is helpful to add the following options for increased performance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--transfers &amp;lt;int&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of file transfers to run in parallel (default: 4). Depending on the local Network, read and write speeds on the file system, and current load, different values might be best. For large transfers, it is advised to test local performance with different values beforehand. &lt;br /&gt;
&lt;br /&gt;
* In our tests, we observed the best results between 8 and 32.&lt;br /&gt;
* For regular use cases, we recommend 16 as the default.&lt;br /&gt;
* Values above 64 are not recommended and degrade performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--multi-thread-streams &amp;lt;int&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of streams to use for multithreaded downloads (default: 4). Only important on very large files. This will cause multithreaded up/download on chunk-sized bits of the file.&lt;br /&gt;
&lt;br /&gt;
The optimal value is highly specific to the local network and used Hardware. For regular use cases, we recommend 4 as the default.&lt;br /&gt;
&lt;br /&gt;
=== Debugging and Statistics ===&lt;br /&gt;
To get updates on current progress, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Interval between printing stats, e.g. 500ms, 60s, 5m (0 to disable) (default 1m0s).  &lt;br /&gt;
&lt;br /&gt;
To get debug information, use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--log-level=DEBUG &lt;br /&gt;
--stats-log-level=DEBUG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Helix/bwVisu/Getting_Started&amp;diff=16033</id>
		<title>Helix/bwVisu/Getting Started</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Helix/bwVisu/Getting_Started&amp;diff=16033"/>
		<updated>2026-05-06T10:50:22Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motivation ==&lt;br /&gt;
&lt;br /&gt;
When large quantities of scientific data is created (for example, from simulations), it is often necessary to employ hardware for further processing that is just as powerful as e.g. the HPC cluster that created the data in the first place. Transferring the data to a local workstation for visualization and analysis is typically not only time-consuming because of the data transfer itself, but the workstation may be ill-equipped to handle the workload. For such scenarios, remote solutions are needed, that employ powerful hardware and bring the applications to the data - and not vice versa.&lt;br /&gt;
&lt;br /&gt;
bwVisu provides such a remote service. The user can log in to an intuitive web frontend which manages interactive jobs running on bwForCluster Helix. Once a job has been started, the user can connect to it such that the application appears in a browser window with full 3D hardware acceleration provided by the cluster. The only requirement on the client side is that the browser must support HTML5.&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
&lt;br /&gt;
In order to use bwVisu, it is required to be a user of the [https://wiki.bwhpc.de/e/Registration/bwForCluster bwForCluster Helix] or a user of [https://wiki.bwhpc.de/e/SDS@hd/Registration SDS@hd].&lt;br /&gt;
# Register for the service bwVisu at [http://bwservices.uni-heidelberg.de bwServices].&lt;br /&gt;
# bwVisu uses a 2-factor authentication (2FA) mechanism to increase security. If you have not registered a 2FA token at bwServices, an error message will appear. Use this &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de/user/twofa.xhtml link]&#039;&#039;&#039; or select &#039;&#039;&#039;My Tokens&#039;&#039;&#039; in the main menu of bwServices. To register a new token, please follow these &#039;&#039;&#039;[[Registration/2FA|instructions]]&#039;&#039;&#039;. Please complete this step before continuing.&lt;br /&gt;
# Once your registration has been completed, your user account will be set up. This can take up to 10 minutes, so please wait for around ten minutes before proceeding.&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
&lt;br /&gt;
# Go to the bwVisu web frontend at [https://bwvisu.bwservices.uni-heidelberg.de/ bwvisu.bwservices.uni-heidelberg.de].&lt;br /&gt;
# Login with the credentials of your home university and provide a 2FA token.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
[[File:Bwvisu2-gui.png|x150px|right|bwVisu Workflow]]&lt;br /&gt;
As shown in the image, the usual workflow consists of three steps: You choose an application, define the needed job resources and then connect to the job as soon as it is running. Detailed instructions are [[Helix/bwVisu/Usage|here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technical Information ==&lt;br /&gt;
&lt;br /&gt;
=== Data storage ===&lt;br /&gt;
&lt;br /&gt;
bwVisu provides no storage space. For data storage you have access to the filesystems of bwForCluster Helix and to SDS@hd.&lt;br /&gt;
&lt;br /&gt;
=== Open OnDemand ===&lt;br /&gt;
&lt;br /&gt;
bwVisu is based on [https://openondemand.org Open OnDemand] an open-source software platform designed to provide easy and streamlined access to high-performance computing (HPC) resources. Developed by the Ohio Supercomputer Center, it allows users to access HPC resources via a standard web browser, eliminating the need for a traditional command line interface.&lt;br /&gt;
&lt;br /&gt;
The platform provides a range of tools and features. bwVisu uses it to provide the following features:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Web-based Access:&#039;&#039;&#039; Users can manage jobs, files, and data directly through their browser.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Interactive Applications:&#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It supports GUI-based applications like Jupyter Notebooks and RStudio, enabling interactive computing and visualization.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For most bwVisu applications you can connect to a running job with your browser.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Some applications may require a dedicated desktop client.&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Job Management:&#039;&#039;&#039; Users can easily submit and manage their interactive computing jobs on HPC resources. For members of bwForCluster Helix, the jobs can be monitored via the [https://helix-monitoring.bwservices.uni-heidelberg.de/ monitoring portal].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;File Management:&#039;&#039;&#039; Provides a file browser that allows users to upload and manage their data files without needing to use command-line tools.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Helix/bwVisu/Usage&amp;diff=16032</id>
		<title>Helix/bwVisu/Usage</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Helix/bwVisu/Usage&amp;diff=16032"/>
		<updated>2026-05-06T10:34:45Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added output.log information, formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basic Navigation ==&lt;br /&gt;
&lt;br /&gt;
bwVisu is quite simple and intuitively designed to make launching apps on the cluster as user-friendly as possible. Once you have successfully logged into bwVisu, the first thing you see is a list of pinned apps. These are the available apps that you can launch as a job on the cluster.&lt;br /&gt;
&lt;br /&gt;
In the navigation bar, the user has the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Files&amp;lt;/code&amp;gt; — &amp;lt;code&amp;gt;Interactive Apps&amp;lt;/code&amp;gt; — &amp;lt;code&amp;gt;My Interactive Sessions&amp;lt;/code&amp;gt; — &amp;lt;code&amp;gt;Shell&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
Here, you can access your home directory on Helix. In a graphical user interface, files can be downloaded and uploaded, and new files and folders can be created. You will encounter an error message if you try to see data that you have no access to.&lt;br /&gt;
&lt;br /&gt;
In the Home Directory the results and logs from the apps are stored. You get the following interface:&lt;br /&gt;
&lt;br /&gt;
[[File:BwVisuFiles.png|bwVisu-files|center|x300px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;For SDS@hd users:&amp;lt;/u&amp;gt;&#039;&#039;&#039; Data on SDS@hd (under /mnt/sds-hd) can only be accessed from within jobs. Therefore, you need to open a terminal (within a JupyterLab or Rstudio job or directly on Helix) and set a symbolic link to your SDS@hd folder in your home directory. For example like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $HOME&lt;br /&gt;
mkdir sds-hd&lt;br /&gt;
cd sds-hd&lt;br /&gt;
ln -s /mnt/sds-hd/sd16a001 sd16a001&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interactive Apps ===&lt;br /&gt;
&lt;br /&gt;
This displays the apps that the user can run on the cluster, possibly across multiple nodes. These apps initiate an interactive session which the user can directly connect to and, depending on the app, receive a graphical interface.&lt;br /&gt;
&lt;br /&gt;
=== My Interactive Sessions ===&lt;br /&gt;
&lt;br /&gt;
At bwVisu, it is possible to start several interactive apps simultaneously. Here, one can view an overview of currently running interactive apps and completed sessions. It is also possible to view the log for each session. As soon as one starts an interactive app, one is automatically redirected here. Even if you log out of bwVisu and log back in, you can still see the information and logs from the finished interactive apps here until you delete it.&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
For bwForCluster Helix users only: After entering your OTP and password a shell on the login node of bwForCluster Helix opens. This way, you can for example create workspaces when you need more space. Please look up the details under [[Helix/Filesystems#Workspaces | Helix Workspaces]]. They can&#039;t be seen in the File Viewer but are available within the bwVisu jobs.&lt;br /&gt;
&lt;br /&gt;
== Start a Job ==&lt;br /&gt;
[[File:bwVisuConcept.png|center|x170px]]&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt; At the start page of the web frontend, you can start a new job by clicking on an application version in the list of pinned apps.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see the application description and options to adjust the job resources.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; To find the best resource settings for your jobs, please have a look at the [https://helix-monitoring.bwservices.uni-heidelberg.de/ bwForCluster Helix monitoring portal] . There, you can see how much of the requested resources where actually used by your jobs.&lt;br /&gt;
&amp;lt;li&amp;gt; At the bottom of the page, beneath the &amp;lt;code&amp;gt;Launch&amp;lt;/code&amp;gt; button, you can find a link for accessing the logs/session data of all your jobs.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The interface can differ per app because each app can have individual configuration options. &amp;lt;/li&amp;gt;&lt;br /&gt;
[[File:bwVisuRStudio.png|bwVisu-rstudio|center|x200px]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the &amp;lt;code&amp;gt;Launch&amp;lt;/code&amp;gt; button to start a new job with this application. You can&#039;t start two jobs with the same application. Launching an app can take some time depending on the requested resources and cluster utilization.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;Interactive Sessions&amp;lt;/code&amp;gt; page opens with the details of your job.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Host:&#039;&#039;&#039; Indicates on which nodes the application is running.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Time Remaining:&#039;&#039;&#039; Each application is given a time limit, which can also be set in advance. In this example, the application is supposed to run for one hour.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Session ID:&#039;&#039;&#039; This is a link that leads to the folder of the session. Among other things, application logs are displayed here, which can be viewed in the UI.&lt;br /&gt;
[[File:BwVisuRstudioRun.png|bwVisu-rstudio-run|center|x200px]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Connect to the job with your browser by clicking &amp;lt;code&amp;gt;connect to &amp;amp;lt;application&amp;amp;gt;&amp;lt;/code&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adjust noVNC Applications ==&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block; vertical-align: middle; float: right;&amp;quot;&amp;gt; [[File:bwVisu Fiji noVNCMenu.png|thumb|none|x200px|noVNC menu within Fiji]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block; vertical-align: top; float: right;&amp;quot;&amp;gt; [[File:bwVisu_Fiji_Running.png|thumb|none|x200px|Job details view of a running Fiji Job]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
noVNC is an open-source VNC browser client. Some bwVisu applications use noVNC and therefore, come with additional options in the view of the job details and an additional menu within the running application.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Running Job View&#039;&#039;&#039; on the interactive sessions page&lt;br /&gt;
** Compression slider: Before opening the application, you can choose the compression level to use. 0 means no compression while 9 offers the best compression but uses more CPU resources on the cluster which can be slower. &lt;br /&gt;
** Image Quality slider: Before opening the application, you can choose the image quality level. With this you can control the desired JPEG quality.&lt;br /&gt;
** View Only (Share-able Link) button: By clicking this button the application opens in view only mode. You can share this link with collaborators or students while you launch your noVNC application normally for yourself. This way, others can follow what you are doing. For every job you need to generate a new link. &lt;br /&gt;
* &#039;&#039;&#039;noVNC menu&#039;&#039;&#039; within the running application&lt;br /&gt;
** When you open the application you can see an additional menu on the left with options. For the ones using the application in view-only mode it is helpful to select the option to show a dot instead of not showing the mouse cursor at all. Therefore go to &amp;quot;Options&amp;quot; and then &amp;quot;Expand&amp;quot;. &lt;br /&gt;
** For copying data, you need to use the clipboard. When copying something locally, you need to put it into the clipboard before you can use it within the application. The same goes the other way around.&lt;br /&gt;
* &#039;&#039;&#039;Adjust window size&#039;&#039;&#039; and position of the app by executing a right click at the edge of the app window frame, so that a menu shows up.&lt;br /&gt;
&lt;br /&gt;
== Terminate a Job ==&lt;br /&gt;
&lt;br /&gt;
The job will terminate when the job runtime requested in the job submission form has expired To terminate an application yourself, you can click the delete button or end the application in the interactive session. If the app is terminated in the interactive session, the window no longer shows &amp;lt;code&amp;gt;Running&amp;lt;/code&amp;gt; but &amp;lt;code&amp;gt;Completed&amp;lt;/code&amp;gt;. With the &amp;lt;code&amp;gt;Delete&amp;lt;/code&amp;gt; button, you end the session and also remove the list entry from &amp;lt;code&amp;gt;My Interactive Sessions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
Maintance windows and known issues are communicated via the email list or the &#039;&#039;News&#039;&#039; section at the bwVisu start page in the wiki. &lt;br /&gt;
* Depending on the problem, it can help to look up the related bwForCluster Helix wiki pages. For example: &lt;br /&gt;
*: &#039;&#039;&#039;Error:&#039;&#039;&#039; Disk space exceeded &amp;amp;rarr; &#039;&#039;&#039;[https://wiki.bwhpc.de/e/Helix/Filesystems#Troubleshooting Filesystems: Troubleshooting]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Issue:&#039;&#039;&#039; The webservice is not accessible. &lt;br /&gt;
*: If you&#039;re a bwForCluster Helix user, you need to have logged in to Helix at least once so that you&#039;re home directory gets created. Afterwards, the webservice page should be accessible. &lt;br /&gt;
* &#039;&#039;&#039;Issue:&#039;&#039;&#039; The bwVisu job fails or doesn&#039;t start.&lt;br /&gt;
*: You can try to look for the issue yourself: &lt;br /&gt;
*:* Reload the page without using the cache: &amp;lt;code&amp;gt;Strg+Shift+R&amp;lt;/code&amp;gt; (Windows/Linux) or &amp;lt;code&amp;gt;Cmd+Shift+R&amp;lt;/code&amp;gt; (Mac)&lt;br /&gt;
*:* Empty the browser cache:&lt;br /&gt;
*:** Chrome/Edge: &amp;lt;code&amp;gt;Strg+Shift+Entf&amp;lt;/code&amp;gt; → choose timeframe all → choose &#039;&#039;Images and Files in Cache&#039;&#039; → choose &#039;&#039;Delete Files&#039;&#039;&lt;br /&gt;
*:** Firefox: &amp;lt;code&amp;gt;Strg+Shift+Entf&amp;lt;/code&amp;gt; → choose timeframe all → choose &#039;&#039;Cache&#039;&#039; → choose &#039;&#039;Delete Files&#039;&#039;&lt;br /&gt;
*:* Test alternative browser (Firefox, Chrome, Edge, ...)&lt;br /&gt;
*:* Use a private session (without saved cookies and cache): &amp;lt;code&amp;gt;Strg+Shift+N&amp;lt;/code&amp;gt; (Chrome) or &amp;lt;code&amp;gt;Strg+Shift+P&amp;lt;/code&amp;gt; (Firefox).&lt;br /&gt;
* &#039;&#039;&#039;Support:&#039;&#039;&#039; If you can&#039;t solve the issue, write to the support and provide the following information: &lt;br /&gt;
** Date and time of the issue. &lt;br /&gt;
** Job-id (the number in brackets after the jobname)&lt;br /&gt;
** The &amp;lt;code&amp;gt;output.log&amp;lt;/code&amp;gt; file that you can find when following the session id link. &lt;br /&gt;
** Please report patterns that you recognize. For example: &lt;br /&gt;
*** The issue happens around a specific time of day. &lt;br /&gt;
*** The issue is connected to the duration of usage (e.g. happens always after ca. one hour). &lt;br /&gt;
*** The issue appears after specific user interactions (using a specific method, opening the terminal, clicking a specific button, ...)&lt;br /&gt;
: You might be asked for further information: &lt;br /&gt;
:* The internet browser that you user and its version. For example Firefox 128. &lt;br /&gt;
:* Provide more information about network traffic via a HAR-file. First start a job and open the application. Then follow he instructions below: &lt;br /&gt;
:** Instructions for Chrome/Edge:&lt;br /&gt;
:**# Open developer tools with &amp;lt;code&amp;gt;F12&amp;lt;/code&amp;gt; or right click -&amp;gt; &#039;&#039;Inspect&#039;&#039; Then choose the tab &#039;&#039;Network&#039;&#039;.&lt;br /&gt;
:**# Activate the checkbox &#039;&#039;Preserve log&#039;&#039;.&lt;br /&gt;
:**# Reproduce the issue in the current tab. &lt;br /&gt;
:**# After the problem happened again: Click the export symbol (⬇️) in the menu of the network-tabs and choose &#039;&#039;Export HAR...&#039;&#039;.&lt;br /&gt;
:** Instructions for Firefox:&lt;br /&gt;
:**# Open developer tools with &amp;lt;code&amp;gt;F12&amp;lt;/code&amp;gt; and choose the tab &#039;&#039;Network analysis&#039;&#039;.&lt;br /&gt;
:**# Click the settings symbol (⚙️) and activate &#039;&#039;Continuous Protocol&#039;&#039;.&lt;br /&gt;
:**# Reproduce the issue in the current tab.&lt;br /&gt;
:**# After the problem happened again: Click the settings symbol again (⚙️) and choose &#039;&#039;Save everything as HAR&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster&amp;diff=16031</id>
		<title>Registration/bwForCluster</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster&amp;diff=16031"/>
		<updated>2026-05-05T17:43:47Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Used same formatting as for bwUniCluster&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registration bwForCluster =&lt;br /&gt;
&lt;br /&gt;
A bwForCluster is a cluster for a specific [https://www.bwhpc.de/cluster.php research area].&lt;br /&gt;
You can apply for a bwForCluster and the &amp;quot;cluster assignment team&amp;quot; will assign you to the appropriate cluster for your research area, taking into account your specific hardware/software needs.&lt;br /&gt;
bwForClusters are funded by the German Research Foundation (DFG) and the Ministry of Science, Research and the Arts of Baden-Württemberg on the basis of grant applications (cf. proposals application guidelines according to Art. 91b GG).&lt;br /&gt;
&lt;br /&gt;
All members of the universities in Baden-Württemberg can apply for an account.&lt;br /&gt;
&lt;br /&gt;
The use of the bwForClusters is free of charge.&lt;br /&gt;
&lt;br /&gt;
== Three Steps for Registration ==&lt;br /&gt;
&lt;br /&gt;
[[File:bwForCluster-Registration.png|thumb|right|upright=1.2|bwForCluster Registration Process]]&lt;br /&gt;
The registration process for a bwForCluster is divided into three steps, whereby step A+B can be performed in parallel.&lt;br /&gt;
When both are completed, you can perform step C.&lt;br /&gt;
&lt;br /&gt;
To which cluster you get access depends on your research area and will be decided in step B.&lt;br /&gt;
&lt;br /&gt;
* Step A: You need to get the &#039;&#039;&#039;bwForCluster Entitlement&#039;&#039;&#039; from your university/college.&amp;lt;br /&amp;gt;&amp;amp;rarr; &#039;&#039;&#039;[[Registration/bwForCluster/Entitlement|bwForCluster User Access Step A]]&#039;&#039;&#039;&lt;br /&gt;
* Step B: You need to &#039;&#039;&#039;apply for or join a Rechenvorhaben/project&#039;&#039;&#039; on the &amp;quot;central application site&amp;quot; (ZAS).&amp;lt;br /&amp;gt;&amp;amp;rarr; &#039;&#039;&#039;[[Registration/bwForCluster/RV|bwForCluster User Access Step B]]&#039;&#039;&#039;&lt;br /&gt;
* Step C: You need to &#039;&#039;&#039;register for a bwForCluster&#039;&#039;&#039; (create an account on the cluster).&amp;lt;br /&amp;gt;&amp;amp;rarr; &#039;&#039;&#039;[[Registration/bwForCluster/Service|bwForCluster User Access Step C]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After finishing Step C, you are done with registration. &lt;br /&gt;
&lt;br /&gt;
* To &#039;&#039;&#039;login&#039;&#039;&#039; to one of the bwForClusters, please refer to the general &amp;lt;br /&amp;gt; &amp;amp;rarr; &#039;&#039;&#039;[[Registration/Login|Login Guide]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Information for registered users ==&lt;br /&gt;
&lt;br /&gt;
* If you want to check if your &#039;&#039;&#039;account&#039;&#039;&#039; is still valid on one of the bwForClusters, please refer to the general &amp;lt;br /&amp;gt; &amp;amp;rarr; &#039;&#039;&#039;[[Registration/Account|Account Guide]]&#039;&#039;&#039;&lt;br /&gt;
* If you want to &#039;&#039;&#039;create a second factor&#039;&#039;&#039;, please refer to &amp;lt;br /&amp;gt; &amp;amp;rarr; &#039;&#039;&#039;[[Registration/2FA|Generate a Second Factor (2FA)]]&#039;&#039;&#039; (Justus 2, Helix, NEMO2)&lt;br /&gt;
* If you need to &#039;&#039;&#039;change or forgot your password&#039;&#039;&#039; for a bwForCluster, please refer to the general &amp;lt;br /&amp;gt; &amp;amp;rarr; &#039;&#039;&#039;[[Registration/Password|Password Guide]]&#039;&#039;&#039;&lt;br /&gt;
* If you want to &#039;&#039;&#039;use SSH keys&#039;&#039;&#039; on a bwForCluster, please refer to &amp;lt;br /&amp;gt; &amp;amp;rarr; &#039;&#039;&#039;[[Registration/SSH|Registering SSH Keys with your Cluster]]&#039;&#039;&#039;&lt;br /&gt;
* If you want do &#039;&#039;&#039;de-register your user account&#039;&#039;&#039; from a bwForCluster, please refer to the general &amp;lt;br /&amp;gt;&amp;amp;rarr; &#039;&#039;&#039;[[Registration/Deregistration|De-registration Guide]]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Helix/bwVisu/Usage&amp;diff=16030</id>
		<title>Helix/bwVisu/Usage</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Helix/bwVisu/Usage&amp;diff=16030"/>
		<updated>2026-05-05T15:39:06Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added things to try and information to report.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basic Navigation ==&lt;br /&gt;
&lt;br /&gt;
bwVisu is quite simple and intuitively designed to make launching apps on the cluster as user-friendly as possible. Once you have successfully logged into bwVisu, the first thing you see is a list of pinned apps. These are the available apps that you can launch as a job on the cluster.&lt;br /&gt;
&lt;br /&gt;
In the navigation bar, the user has the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Files&amp;lt;/code&amp;gt; — &amp;lt;code&amp;gt;Interactive Apps&amp;lt;/code&amp;gt; — &amp;lt;code&amp;gt;My Interactive Sessions&amp;lt;/code&amp;gt; — &amp;lt;code&amp;gt;Shell&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
Here, you can access your home directory on Helix. In a graphical user interface, files can be downloaded and uploaded, and new files and folders can be created. You will encounter an error message if you try to see data that you have no access to.&lt;br /&gt;
&lt;br /&gt;
In the Home Directory the results and logs from the apps are stored. You get the following interface:&lt;br /&gt;
&lt;br /&gt;
[[File:BwVisuFiles.png|bwVisu-files|center|x300px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;For SDS@hd users:&amp;lt;/u&amp;gt;&#039;&#039;&#039; Data on SDS@hd (under /mnt/sds-hd) can only be accessed from within jobs. Therefore, you need to open a terminal (within a JupyterLab or Rstudio job or directly on Helix) and set a symbolic link to your SDS@hd folder in your home directory. For example like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $HOME&lt;br /&gt;
mkdir sds-hd&lt;br /&gt;
cd sds-hd&lt;br /&gt;
ln -s /mnt/sds-hd/sd16a001 sd16a001&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interactive Apps ===&lt;br /&gt;
&lt;br /&gt;
This displays the apps that the user can run on the cluster, possibly across multiple nodes. These apps initiate an interactive session which the user can directly connect to and, depending on the app, receive a graphical interface.&lt;br /&gt;
&lt;br /&gt;
=== My Interactive Sessions ===&lt;br /&gt;
&lt;br /&gt;
At bwVisu, it is possible to start several interactive apps simultaneously. Here, one can view an overview of currently running interactive apps and completed sessions. It is also possible to view the log for each session. As soon as one starts an interactive app, one is automatically redirected here. Even if you log out of bwVisu and log back in, you can still see the information and logs from the finished interactive apps here until you delete it.&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
For bwForCluster Helix users only: After entering your OTP and password a shell on the login node of bwForCluster Helix opens. This way, you can for example create workspaces when you need more space. Please look up the details under [[Helix/Filesystems#Workspaces | Helix Workspaces]]. They can&#039;t be seen in the File Viewer but are available within the bwVisu jobs.&lt;br /&gt;
&lt;br /&gt;
== Start a Job ==&lt;br /&gt;
[[File:bwVisuConcept.png|center|x170px]]&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt; At the start page of the web frontend, you can start a new job by clicking on an application version in the list of pinned apps.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see the application description and options to adjust the job resources.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; To find the best resource settings for your jobs, please have a look at the [https://helix-monitoring.bwservices.uni-heidelberg.de/ bwForCluster Helix monitoring portal] . There, you can see how much of the requested resources where actually used by your jobs.&lt;br /&gt;
&amp;lt;li&amp;gt; At the bottom of the page, beneath the &amp;lt;code&amp;gt;Launch&amp;lt;/code&amp;gt; button, you can find a link for accessing the logs/session data of all your jobs.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The interface can differ per app because each app can have individual configuration options. &amp;lt;/li&amp;gt;&lt;br /&gt;
[[File:bwVisuRStudio.png|bwVisu-rstudio|center|x200px]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the &amp;lt;code&amp;gt;Launch&amp;lt;/code&amp;gt; button to start a new job with this application. You can&#039;t start two jobs with the same application. Launching an app can take some time depending on the requested resources and cluster utilization.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;Interactive Sessions&amp;lt;/code&amp;gt; page opens with the details of your job.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Host:&#039;&#039;&#039; Indicates on which nodes the application is running.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Time Remaining:&#039;&#039;&#039; Each application is given a time limit, which can also be set in advance. In this example, the application is supposed to run for one hour.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Session ID:&#039;&#039;&#039; This is a link that leads to the folder of the session. Among other things, application logs are displayed here, which can be viewed in the UI.&lt;br /&gt;
[[File:BwVisuRstudioRun.png|bwVisu-rstudio-run|center|x200px]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Connect to the job with your browser by clicking &amp;lt;code&amp;gt;connect to &amp;amp;lt;application&amp;amp;gt;&amp;lt;/code&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adjust noVNC Applications ==&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block; vertical-align: middle; float: right;&amp;quot;&amp;gt; [[File:bwVisu Fiji noVNCMenu.png|thumb|none|x200px|noVNC menu within Fiji]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block; vertical-align: top; float: right;&amp;quot;&amp;gt; [[File:bwVisu_Fiji_Running.png|thumb|none|x200px|Job details view of a running Fiji Job]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
noVNC is an open-source VNC browser client. Some bwVisu applications use noVNC and therefore, come with additional options in the view of the job details and an additional menu within the running application.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Running Job View&#039;&#039;&#039; on the interactive sessions page&lt;br /&gt;
** Compression slider: Before opening the application, you can choose the compression level to use. 0 means no compression while 9 offers the best compression but uses more CPU resources on the cluster which can be slower. &lt;br /&gt;
** Image Quality slider: Before opening the application, you can choose the image quality level. With this you can control the desired JPEG quality.&lt;br /&gt;
** View Only (Share-able Link) button: By clicking this button the application opens in view only mode. You can share this link with collaborators or students while you launch your noVNC application normally for yourself. This way, others can follow what you are doing. For every job you need to generate a new link. &lt;br /&gt;
* &#039;&#039;&#039;noVNC menu&#039;&#039;&#039; within the running application&lt;br /&gt;
** When you open the application you can see an additional menu on the left with options. For the ones using the application in view-only mode it is helpful to select the option to show a dot instead of not showing the mouse cursor at all. Therefore go to &amp;quot;Options&amp;quot; and then &amp;quot;Expand&amp;quot;. &lt;br /&gt;
** For copying data, you need to use the clipboard. When copying something locally, you need to put it into the clipboard before you can use it within the application. The same goes the other way around.&lt;br /&gt;
* &#039;&#039;&#039;Adjust window size&#039;&#039;&#039; and position of the app by executing a right click at the edge of the app window frame, so that a menu shows up.&lt;br /&gt;
&lt;br /&gt;
== Terminate a Job ==&lt;br /&gt;
&lt;br /&gt;
The job will terminate when the job runtime requested in the job submission form has expired To terminate an application yourself, you can click the delete button or end the application in the interactive session. If the app is terminated in the interactive session, the window no longer shows &amp;lt;code&amp;gt;Running&amp;lt;/code&amp;gt; but &amp;lt;code&amp;gt;Completed&amp;lt;/code&amp;gt;. With the &amp;lt;code&amp;gt;Delete&amp;lt;/code&amp;gt; button, you end the session and also remove the list entry from &amp;lt;code&amp;gt;My Interactive Sessions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
Maintance windows and known issues are communicated via the email list or the News section at the bwVisu start page in the wiki. &lt;br /&gt;
* Depending on the problem, it can help to look up the related bwForCluster Helix wiki pages. For example: &lt;br /&gt;
*: &#039;&#039;&#039;Error:&#039;&#039;&#039; Disk space exceeded &amp;amp;rarr; &#039;&#039;&#039;[https://wiki.bwhpc.de/e/Helix/Filesystems#Troubleshooting Filesystems: Troubleshooting]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Issue:&#039;&#039;&#039; The webservice is not accessible. &lt;br /&gt;
*: If you&#039;re a bwForCluster Helix user, you need to have logged in to Helix at least once so that you&#039;re home directory gets created. Afterwards, the webservice page should be accessible. &lt;br /&gt;
* &#039;&#039;&#039;Issue:&#039;&#039;&#039; The bwVisu job fails or doesn&#039;t start.&lt;br /&gt;
*: You can try to look for the issue yourself: &lt;br /&gt;
*:* Reload the page without using the cache: `Strg+Shift+R` (Windows/Linux) or `Cmd+Shift+R` (Mac)&lt;br /&gt;
*:* Empty the browser cache:&lt;br /&gt;
*:** Chrome/Edge: `Strg+Shift+Entf` → choose timeframe all → choose &amp;quot;Images and Files in Cache&amp;quot; → choose &amp;quot;Delete Files&amp;quot;&lt;br /&gt;
*:** Firefox: `Strg+Shift+Entf` → choose timeframe all → choose &amp;quot;Cache&amp;quot; → choose &amp;quot;Delete Files&amp;quot;&lt;br /&gt;
*:** Test alternative browser (Firefox, Chrome, Edge, ...)&lt;br /&gt;
*:** Use a private session (without saved cookies and cache): `Strg+Shift+P` (Firefox) or `Strg+Shift+N` (Chrome).&lt;br /&gt;
*: If this doesn&#039;t help, write to the support and provide the following information: &lt;br /&gt;
*:* Date and time of the issue. &lt;br /&gt;
*:* Job-id&lt;br /&gt;
*:* Please report patterns that you recognize. For example: &lt;br /&gt;
*:** The issue happens around a specific time of day. &lt;br /&gt;
*:** The issue is connected to the duration of usage (e.g. happens always after ca. one hour). &lt;br /&gt;
*:** The issue appears after specific user interactions (using a specific method, opening the terminal, clicking a specific button, ...)&lt;br /&gt;
*: You might be asked for further information: &lt;br /&gt;
*:* The internet browser that you user and its version. For example Firefox 128. &lt;br /&gt;
*:* Provide more information about network traffic via a HAR-file. &lt;br /&gt;
*:** Instructions for Chrome/Edge:&lt;br /&gt;
*:**# Open developer tools with `F12` or right click -&amp;gt; &amp;quot;Inspect&amp;quot;&lt;br /&gt;
*:**# Choose the tab &amp;quot;Network&amp;quot; &lt;br /&gt;
*:**# Activate the checkbox &amp;quot;Preserve log&amp;quot;&lt;br /&gt;
*:**# Reproduce the issue (open new terminal)&lt;br /&gt;
*:**# After the problem happened again: Click the Export-Symbol (⬇️) in the menu of the network-tabs and choose &amp;quot;Export HAR...&amp;quot;&lt;br /&gt;
*:** Instructions for Firefox:&lt;br /&gt;
*:**# Open developer tools with `F12`&lt;br /&gt;
*:**# Choose the tab &amp;quot;Network analysis&amp;quot;&lt;br /&gt;
*:**# Click the options symbol (⚙️) an activate &amp;quot;Continuous Protocol&amp;quot;&lt;br /&gt;
*:**# Reproduce the issue (open new terminal)&lt;br /&gt;
*:**# After the problem happened again: Click the option symbol again (⚙️) and choose &amp;quot;Save everything as HAR&amp;quot;.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Helix/bwVisu/JupyterLab&amp;diff=16029</id>
		<title>Helix/bwVisu/JupyterLab</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Helix/bwVisu/JupyterLab&amp;diff=16029"/>
		<updated>2026-05-05T11:24:22Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Added instructions for using Helix modules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://jupyter.org/ JupyterLab] is an integrated development environment (IDE) that provides a flexible and scalable interface for the Jupyter Notebook system. It supports interactive data science and scientific computing across over 40 programming languages (including Python, Julia, and R).&lt;br /&gt;
&lt;br /&gt;
== Change Python Version ==&lt;br /&gt;
&lt;br /&gt;
The default python version can be seen by running &amp;lt;code&amp;gt;python --version&amp;lt;/code&amp;gt; in the terminal. &lt;br /&gt;
&lt;br /&gt;
A different python version can be installed into a new virtual environment and then registered as IPython kernel for the usage in JupyterLab. This is explained in the chapter [[#Add_packages_via_conda_environments | add packages via conda environments]].&lt;br /&gt;
&lt;br /&gt;
== Install Python Packages ==&lt;br /&gt;
&lt;br /&gt;
Python packages can be added by installing them into a virtual environment and then creating an IPython kernel from the virtual environment. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Kernels can be shared&amp;lt;/u&amp;gt;. See the notes below. &amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to move a virtual environment, it is adivsed to recreate it in the new place. Otherwise, dependencies based on relative paths will break. &lt;br /&gt;
&lt;br /&gt;
# Create a virtual environment with...&lt;br /&gt;
#* [[#Add_packages_via_venv_virtual_environments | ...venv]] or&lt;br /&gt;
#* [[#Add_packages_via_Conda_virtual_environments | ...conda]] (choose this option if you want to install a different python version) or &lt;br /&gt;
#* ...[https://docs.astral.sh/uv/getting-started/ uv] if you want to install a different python version but don&#039;t want to use conda. &lt;br /&gt;
# [[#Create_an_IPython_Kernel | Create an IPython kernel]] from the virtual environment&lt;br /&gt;
# Use the kernel within JupyterLab&lt;br /&gt;
#* By default new kernels are saved under &amp;lt;code&amp;gt;~/.local/share/jupyter&amp;lt;/code&amp;gt; and this location is automatically detected. Therefore, new kernels are directly available. &lt;br /&gt;
#*:[[File:BwVisu JuypterLab KernelPath.png|In the JupyterLab job configuration form, a custom kernel path can be provided.|right|thumb|x150px]]&lt;br /&gt;
#* If the kernel is saved somewhere else, the path can be provided in the &amp;quot;Kernel path&amp;quot; field when configuring the JupyterLab job (see image). For a kernel placed under &amp;lt;code&amp;gt;path_to_parent_dir/share/jupyter/kernels/my_kernel&amp;lt;/code&amp;gt; the needed &amp;quot;Kernel path&amp;quot; would be &amp;lt;code&amp;gt;path_to_parent_dir/share/jupyter&amp;lt;/code&amp;gt;. &lt;br /&gt;
# When the kernel is used the first time, the file &amp;lt;code&amp;gt;notebook_secrets&amp;lt;/code&amp;gt; is created automatically. It can be found under &amp;quot;Kernel path&amp;quot;. For others to use the kernel, they must have read access to this file. The command &amp;lt;code&amp;gt;chmod 750 notebook_secrets&amp;lt;/code&amp;gt; would for example allow the whole SDS@hd SV read access. For the access management in workspaces, please see [[Workspace#Setting_Permissions_for_Sharing_Files| Wokspace Permissions]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Notes regarding the sharing of IPython kernels&amp;lt;/u&amp;gt;&lt;br /&gt;
* The virtual environment and the kernel need to be placed in a shared directory. For example at SDS@hd.&lt;br /&gt;
* There could be a subdirectory for the virtual environments and one for the kernels. &lt;br /&gt;
* The path to the kernels is saved in the environment variable $JUPYTER_DATA_DIR. Jupyter relevant paths can be seen with &amp;lt;code&amp;gt;jupyter --paths&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add packages via &#039;&#039;venv&#039;&#039; virtual environments ===&lt;br /&gt;
More information about venv or other python virtual environments can be found at the [[Development/Python | Python]] page. &lt;br /&gt;
&lt;br /&gt;
Steps for creating a &#039;&#039;&#039;venv&#039;&#039;&#039; virtual environment:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open a terminal.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a new virtual evironment: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;python3 -m venv &amp;lt;env_parent_dir&amp;gt;/&amp;lt;env_name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;env_parent_dir&amp;lt;/code&amp;gt; is the path to the folder where the virtual environment shall be created. Relative paths can be used.&lt;br /&gt;
* Caution: If you you want to share the environment with others, make sure to already create it in the shared place. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Activate the environment:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;source &amp;lt;env_parent_dir&amp;gt;/&amp;lt;env_name&amp;gt;/bin/activate&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Update pip and install packages:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;pip install -U pip --no-user&lt;br /&gt;
# when the environment is installed in home&lt;br /&gt;
pip install &amp;lt;packagename&amp;gt;&lt;br /&gt;
# when the environment is installed somewhere else and shall not have dependencies in home so that others can access it as well&lt;br /&gt;
pip install &amp;lt;packagename&amp;gt; --no-user&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[#Create_an_IPython_Kernel | Create an IPython kernel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add packages via Conda virtual environments ===&lt;br /&gt;
More information about using conda can be found at the [[Development/Conda | Conda]] page. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Load the miniforge module by clicking first on the blue hexagon icon on the left-hand side of Jupyter&#039;s start page and then on the &amp;amp;quot;load&amp;amp;quot; button right of the entry for miniforge in the software module menu. &lt;br /&gt;
&amp;lt;li&amp;gt;Open a terminal.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a new virtual environment: &lt;br /&gt;
* If you are the only person using the environment, you can install it in your home directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;conda create --name &amp;lt;env_name&amp;gt; python=&amp;lt;python version&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* If you want to install it into a different directory, for example a shared place:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;conda create --prefix &amp;lt;path_to_shared_directory&amp;gt;/&amp;lt;env_name&amp;gt; python=&amp;lt;python version&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Activate your environment:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;conda activate &amp;lt;myenv&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install your packages:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;conda install &amp;lt;mypackage&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[#Create_an_IPython_Kernel | Create an IPython kernel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create an IPython Kernel ==&lt;br /&gt;
&lt;br /&gt;
Python kernels are implementations of the Jupyter notebook environment for different languages or virtual environments. You can switch between kernels easily, allowing you to use the best tool for a specific task.&lt;br /&gt;
conda_kernels&lt;br /&gt;
&lt;br /&gt;
=== Create a kernel from a virtual environment ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Activate the virtual environment.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the ipykernel package:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;pip install ipykernel&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Register the virtual environment as custom kernel to Jupyter. &lt;br /&gt;
* If you are the only person using the environment:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;python3 -m ipykernel install --user --name=&amp;lt;kernel_name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The kernel can be found under &amp;lt;code&amp;gt;~/.local/share/jupyter/kernels/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you installed the environment in a shared place and want to have the kernel there as well: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;python3 -m ipykernel install --prefix &amp;lt;path_to_kernel_folder&amp;gt; --name=&amp;lt;kernel_name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The kernel can then be found under &amp;lt;code&amp;gt;path_to_kernel_folder/share/jupyter/kernels/&amp;lt;kernel_name&amp;gt;&amp;lt;/code&amp;gt;. As long as the same &amp;lt;code&amp;gt;path_to_kernel_folder&amp;lt;/code&amp;gt; is used, all kernels will be saved next to each other in &amp;quot;kernels&amp;quot;. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multi-Language Support ===&lt;br /&gt;
&lt;br /&gt;
JupyterLab supports over 40 programming languages including Python, R, Julia, and Scala. This is achieved through the use of different kernels.&lt;br /&gt;
&lt;br /&gt;
==== R Kernel ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the cluster:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ module load math/R&lt;br /&gt;
$ R&lt;br /&gt;
&amp;amp;gt; install.packages(&#039;IRkernel&#039;)&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On bwVisu:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Jupyter App&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In left menu: load math/R&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open Console:&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ R&lt;br /&gt;
&amp;amp;gt; IRkernel::installspec(displayname = &#039;R 4.2&#039;)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Start kernel &#039;R 4.2&#039; as console or notebook&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Julia Kernel ====&lt;br /&gt;
&lt;br /&gt;
Load the math/julia module. Open the Terminal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
julia&lt;br /&gt;
]&lt;br /&gt;
add IJulia&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that, Julia is available as a kernel.&lt;br /&gt;
&lt;br /&gt;
== Interactive Widgets ==&lt;br /&gt;
&lt;br /&gt;
JupyterLab supports interactive widgets that can create UI controls for interactive data visualization and manipulation within the notebooks. Example of using an interactive widget:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;{.python&amp;quot;&amp;gt;from ipywidgets import IntSlider&lt;br /&gt;
slider = IntSlider()&lt;br /&gt;
display(slider)&amp;lt;/pre&amp;gt;&lt;br /&gt;
These widgets can be sliders, dropdowns, buttons, etc., which can be connected to Python code running in the backend.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;&#039;&#039;&#039;How can I use bwForCluster Helix software modules?&#039;&#039;&#039;&amp;lt;/br&amp;gt;&lt;br /&gt;
First click on the blue hexagon icon on the left-hand side of Jupyter&#039;s start page. Then load a module by clicking on the &amp;quot;load&amp;quot; button next to the corresponding module entry.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;How can I navigate to my SDS@hd folder in the file browser?&#039;&#039;&#039;&amp;lt;/br&amp;gt;&lt;br /&gt;
Open a terminal and set a symbolic link to your SDS@hd folder in your home directory. For example:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $HOME&lt;br /&gt;
mkdir sds-hd&lt;br /&gt;
cd sds-hd&lt;br /&gt;
ln -s /mnt/sds-hd/sd16a001 sd16a001&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;I prefer VSCode over JupyterLab. Can I start a JupyterLab job and then connect with it via VSCode?&#039;&#039;&#039;&amp;lt;/br&amp;gt;&lt;br /&gt;
This is not possible. Please start the job directly on Helix instead. You can find the instructions at the [[Development/VS_Code#Connect_to_Remote_Jupyter_Kernel | VSCode page]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;My conda commands are interrupted with message &#039;Killed&#039;.&#039;&#039;&#039;&amp;lt;/br&amp;gt;&lt;br /&gt;
Request more memory when starting Jupyter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Jupyterlab doesn&#039;t let me in but asks for a password.&#039;&#039;&#039;&amp;lt;/br&amp;gt;&lt;br /&gt;
Try using more memory for the job. If this doesn&#039;t help, try using the inkognito mode of your browser as the browser cache might be the problem.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=File:Bwvisu2-gui.png&amp;diff=16012</id>
		<title>File:Bwvisu2-gui.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=File:Bwvisu2-gui.png&amp;diff=16012"/>
		<updated>2026-04-28T08:25:36Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster/Helix&amp;diff=16011</id>
		<title>Registration/bwForCluster/Helix</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster/Helix&amp;diff=16011"/>
		<updated>2026-04-24T11:51:42Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: bwServices functionality: added ssh key and token&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
Steps A + B in the [[Registration/bwForCluster | registration process]] must be finished. &lt;br /&gt;
&lt;br /&gt;
== Registration Steps ==&lt;br /&gt;
&lt;br /&gt;
# Visit the bwForCluster Helix &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de registration page bwServices]&#039;&#039;&#039;.&lt;br /&gt;
#: [[File:bwServices_chooseHomeOrganisation.png|right|300px|thumb|Select your home organization]]&lt;br /&gt;
# &#039;&#039;&#039;Select your home organization&#039;&#039;&#039; from the list on the main page and click Proceed/Fortfahren. You will be directed to the &#039;&#039;Identity Provider&#039;&#039; of your home organization.&lt;br /&gt;
# Enter the &#039;&#039;&#039;username and password&#039;&#039;&#039; of your home organization (usually these credentials are also used for other services like email) and click Login/Einloggen.&lt;br /&gt;
# When you log in to bwServices for the first time, an overview will appear, with the account information that your home institution submits to the system. Please verify that all data is valid and then click &#039;&#039;Continue/Weiter&#039;&#039;.&lt;br /&gt;
#  You will be redirected back to the bwServices main page. It shows all the statewide services you have access to. Click &#039;&#039;&#039;Register/Registrieren&#039;&#039;&#039; under the field labeled &#039;&#039;bwForCluster Helix&#039;&#039;.&lt;br /&gt;
#: [[File:BwIDM-reg.png|center|frame|Register for Helix]]&lt;br /&gt;
# bwForCluster Helix uses a &#039;&#039;&#039;2-factor authentication&#039;&#039;&#039; (2FA) mechanism to increase security.&lt;br /&gt;
#: If you have never registered a 2FA token on bwIDM, the following error message will appear:&lt;br /&gt;
#: [[File:Bwidm-3-red.png|center|600px|thumb|Second factor missing.]]&lt;br /&gt;
#: Use this &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de/user/twofa.xhtml link]&#039;&#039;&#039; or select &#039;&#039;&#039;My Tokens&#039;&#039;&#039; in the main menu.&lt;br /&gt;
#: To register a new token, please follow these &#039;&#039;&#039;[[Registration/2FA|instructions]]&#039;&#039;&#039;.&lt;br /&gt;
#: Please complete this step before continuing.&lt;br /&gt;
# Read the Terms of Use / Nutzungsbedingungen, place a check mark next to &#039;&#039;I have read and accepted the terms of use&#039;&#039; and click &#039;&#039;Register/Registrieren&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Set a service password&#039;&#039;&#039; for bwForCluster Helix and click &#039;&#039;Save/Speichern&#039;&#039;.&lt;br /&gt;
#: Be sure to use a secure password that is different from any other passwords you currently use or have used on other systems.&lt;br /&gt;
[[File:BwIDM-passwd.png|center|600px|thumb|Set service password]]&lt;br /&gt;
{|style=&amp;quot;background:#deffee; width:70%; margin: auto;&amp;quot;&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
[[Image:Attention.svg|center|25px]]&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
The service password is your private password for accessing the bwForCluster Helix. Don&#039;t ever share it with anyone!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Registration Website bwServices ==&lt;br /&gt;
The registration website &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de bwServices]&#039;&#039;&#039; offers the following functionality: &lt;br /&gt;
* Register for the service.&lt;br /&gt;
* Set or change your service password.&lt;br /&gt;
* Review your registration details under &amp;quot;Registry Info&amp;quot;. This includes your account status (active/lost_access).&lt;br /&gt;
* bwServices triggers an update of your user information upon login.&lt;br /&gt;
* Registering an [[Registration/SSH | SSH key]]. It can be used for login to &#039;&#039;bwForCluster Helix&#039;&#039;. &lt;br /&gt;
* Creating tokens for logins that need 2-factor authentication ([[Registration/2FA |2FA]]) like &#039;&#039;bwForCluster Helix&#039;&#039; and &#039;&#039;bwVisu&#039;&#039;.&lt;br /&gt;
* De-register from the service.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting with the Help of bwServices ===&lt;br /&gt;
When encountering connection issues with a service, the bwServices website is a good starting point for troubleshooting: &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Expired contract&#039;&#039;&#039; or inactive student id: &lt;br /&gt;
** No access to state services like the bwHPC clusters or SDS@hd is possible.&lt;br /&gt;
** You can see that this is the issue when the login to bwServices via your identity provider is not possible. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Recently (re)activated uni-id:&#039;&#039;&#039; Your id at your home organization was (re)activated a short time ago but this change didn&#039;t get through to the bwHPC cluster or SDS@hd service. &lt;br /&gt;
** Login to bwServices. This triggers an update of your user information. Some minutes later, the connection to the service should work. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Entitlement / RV missing:&#039;&#039;&#039; Prerequisites like entitlement ownership or RV membership aren&#039;t met (anymore). &lt;br /&gt;
** You can see the concrete issue and advice on how to move forward when looking at the registry info of the service on the bwServices website.&lt;br /&gt;
** When the issue is solved, the account status changes from LOST_ACCESS to ACTIVE. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Service Password:&#039;&#039;&#039; When trying to connect to the service, the service password is not accepted. &lt;br /&gt;
** At bwServices a [[#Setting_a_New_Service_Password | new password]] can be set for the service. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; OTP:&#039;&#039;&#039; In the case of login issues with a service that uses 2FA, you can check if you&#039;re OTP is working by going in the menu to &#039;&#039;Index&#039;&#039; -&amp;gt; &#039;&#039;My Tokens&#039;&#039;. &lt;br /&gt;
** If you&#039;re token is not working, please follow the instructions for a [[Helix/Login#Troubleshooting | Lost Token]].&lt;br /&gt;
&lt;br /&gt;
=== Setting a New Service Password === &lt;br /&gt;
&lt;br /&gt;
At any time, you can set a new service password via [https://bwservices.uni-heidelberg.de/ bwServices] by carrying out the following steps:&lt;br /&gt;
# Visit [https://bwservices.uni-heidelberg.de/ bwServices] and select your home organization. &lt;br /&gt;
# Authenticate yourself via your home-organizational user id / username and your home-organizational password.&lt;br /&gt;
# Find your service and select &#039;&#039;&#039;Set Service Password&#039;&#039;&#039;.&lt;br /&gt;
# Set new service password, repeat it and click the &#039;&#039;&#039;Save&#039;&#039;&#039; button.&lt;br /&gt;
# The page answers e.g. &amp;quot;password has been changed&amp;quot;.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster/Helix&amp;diff=16010</id>
		<title>Registration/bwForCluster/Helix</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=Registration/bwForCluster/Helix&amp;diff=16010"/>
		<updated>2026-04-24T11:40:25Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: Reformatting, added token issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
Steps A + B in the [[Registration/bwForCluster | registration process]] must be finished. &lt;br /&gt;
&lt;br /&gt;
== Registration Steps ==&lt;br /&gt;
&lt;br /&gt;
# Visit the bwForCluster Helix &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de registration page bwServices]&#039;&#039;&#039;.&lt;br /&gt;
#: [[File:bwServices_chooseHomeOrganisation.png|right|300px|thumb|Select your home organization]]&lt;br /&gt;
# &#039;&#039;&#039;Select your home organization&#039;&#039;&#039; from the list on the main page and click Proceed/Fortfahren. You will be directed to the &#039;&#039;Identity Provider&#039;&#039; of your home organization.&lt;br /&gt;
# Enter the &#039;&#039;&#039;username and password&#039;&#039;&#039; of your home organization (usually these credentials are also used for other services like email) and click Login/Einloggen.&lt;br /&gt;
# When you log in to bwServices for the first time, an overview will appear, with the account information that your home institution submits to the system. Please verify that all data is valid and then click &#039;&#039;Continue/Weiter&#039;&#039;.&lt;br /&gt;
#  You will be redirected back to the bwServices main page. It shows all the statewide services you have access to. Click &#039;&#039;&#039;Register/Registrieren&#039;&#039;&#039; under the field labeled &#039;&#039;bwForCluster Helix&#039;&#039;.&lt;br /&gt;
#: [[File:BwIDM-reg.png|center|frame|Register for Helix]]&lt;br /&gt;
# bwForCluster Helix uses a &#039;&#039;&#039;2-factor authentication&#039;&#039;&#039; (2FA) mechanism to increase security.&lt;br /&gt;
#: If you have never registered a 2FA token on bwIDM, the following error message will appear:&lt;br /&gt;
#: [[File:Bwidm-3-red.png|center|600px|thumb|Second factor missing.]]&lt;br /&gt;
#: Use this &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de/user/twofa.xhtml link]&#039;&#039;&#039; or select &#039;&#039;&#039;My Tokens&#039;&#039;&#039; in the main menu.&lt;br /&gt;
#: To register a new token, please follow these &#039;&#039;&#039;[[Registration/2FA|instructions]]&#039;&#039;&#039;.&lt;br /&gt;
#: Please complete this step before continuing.&lt;br /&gt;
# Read the Terms of Use / Nutzungsbedingungen, place a check mark next to &#039;&#039;I have read and accepted the terms of use&#039;&#039; and click &#039;&#039;Register/Registrieren&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Set a service password&#039;&#039;&#039; for bwForCluster Helix and click &#039;&#039;Save/Speichern&#039;&#039;.&lt;br /&gt;
#: Be sure to use a secure password that is different from any other passwords you currently use or have used on other systems.&lt;br /&gt;
[[File:BwIDM-passwd.png|center|600px|thumb|Set service password]]&lt;br /&gt;
{|style=&amp;quot;background:#deffee; width:70%; margin: auto;&amp;quot;&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
[[Image:Attention.svg|center|25px]]&lt;br /&gt;
|style=&amp;quot;padding:5px; background:#cef2e0; text-align:left&amp;quot;|&lt;br /&gt;
The service password is your private password for accessing the bwForCluster Helix. Don&#039;t ever share it with anyone!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Registration Website bwServices ==&lt;br /&gt;
The registration website &#039;&#039;&#039;[https://bwservices.uni-heidelberg.de bwServices]&#039;&#039;&#039; offers the following functionality: &lt;br /&gt;
* Register for the service&lt;br /&gt;
* Set or change your service password&lt;br /&gt;
* Review your registration details under &amp;quot;Registry Info&amp;quot;. This includes your account status (active/lost_access).&lt;br /&gt;
* Triggers an update of your user information upon login.&lt;br /&gt;
* De-register from the service&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting with the Help of bwServices ===&lt;br /&gt;
When encountering connection issues with a service, the bwServices website is a good starting point for troubleshooting: &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Expired contract&#039;&#039;&#039; or inactive student id: &lt;br /&gt;
** No access to state services like the bwHPC clusters or SDS@hd is possible.&lt;br /&gt;
** You can see that this is the issue when the login to bwServices via your identity provider is not possible. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Recently (re)activated uni-id:&#039;&#039;&#039; Your id at your home organization was (re)activated a short time ago but this change didn&#039;t get through to the bwHPC cluster or SDS@hd service. &lt;br /&gt;
** Login to bwServices. This triggers an update of your user information. Some minutes later, the connection to the service should work. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Entitlement / RV missing:&#039;&#039;&#039; Prerequisites like entitlement ownership or RV membership aren&#039;t met (anymore). &lt;br /&gt;
** You can see the concrete issue and advice on how to move forward when looking at the registry info of the service on the bwServices website.&lt;br /&gt;
** When the issue is solved, the account status changes from LOST_ACCESS to ACTIVE. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; Service Password:&#039;&#039;&#039; When trying to connect to the service, the service password is not accepted. &lt;br /&gt;
** At bwServices a [[#Setting_a_New_Service_Password | new password]] can be set for the service. &lt;br /&gt;
* &amp;lt;ins&amp;gt;&#039;&#039;&#039;Issue:&amp;lt;/ins&amp;gt; OTP:&#039;&#039;&#039; In the case of login issues with a service that uses 2FA, you can check if you&#039;re OTP is working by going in the menu to &#039;&#039;Index&#039;&#039; -&amp;gt; &#039;&#039;My Tokens&#039;&#039;. &lt;br /&gt;
** If you&#039;re token is not working, please follow the instructions for a [[Helix/Login#Troubleshooting | Lost Token]].&lt;br /&gt;
&lt;br /&gt;
=== Setting a New Service Password === &lt;br /&gt;
&lt;br /&gt;
At any time, you can set a new service password via [https://bwservices.uni-heidelberg.de/ bwServices] by carrying out the following steps:&lt;br /&gt;
# Visit [https://bwservices.uni-heidelberg.de/ bwServices] and select your home organization. &lt;br /&gt;
# Authenticate yourself via your home-organizational user id / username and your home-organizational password.&lt;br /&gt;
# Find your service and select &#039;&#039;&#039;Set Service Password&#039;&#039;&#039;.&lt;br /&gt;
# Set new service password, repeat it and click the &#039;&#039;&#039;Save&#039;&#039;&#039; button.&lt;br /&gt;
# The page answers e.g. &amp;quot;password has been changed&amp;quot;.&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Registration&amp;diff=16009</id>
		<title>SDS@hd/Registration</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Registration&amp;diff=16009"/>
		<updated>2026-04-23T16:18:50Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: fixed link, reformatting, added link from step A to B&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Registration Steps ==&lt;br /&gt;
&lt;br /&gt;
The registration consists of two steps: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Step A:&#039;&#039;&#039; Membership in Storage Project (Speichervorhaben/&#039;&#039;&#039;SV&#039;&#039;&#039;). There are two options: &lt;br /&gt;
*: &#039;&#039;&#039;a)&#039;&#039;&#039; &amp;amp;rarr;[[SDS@hd/Registration#a)_Join_existing_SV | Join existing SV]]&lt;br /&gt;
*: &#039;&#039;&#039;b)&#039;&#039;&#039; &amp;amp;rarr;[[SDS@hd/Registration#b)_Apply_for_new_SV | Apply for new SV]] (only possible for [https://www.bwidm.de/hochschulen.php bwIDM members])&lt;br /&gt;
* &#039;&#039;&#039;Step B:&#039;&#039;&#039; &amp;amp;rarr;[[SDS@hd/Registration#Step_B:_Registration_for_SDS@hd_Service |Registration for SDS@hd Service]]&lt;br /&gt;
&lt;br /&gt;
After finishing the registration, the &amp;lt;span id=&amp;quot;sds_registration_nextSteps&amp;quot;&amp;gt;&#039;&#039;&#039;next steps&#039;&#039;&#039;&amp;lt;/span&amp;gt; are: &lt;br /&gt;
* Check which management options there are for your respective role in the SV &amp;amp;rarr; [[SDS@hd/SV_Management |SV Management]]&lt;br /&gt;
* See how to access and use your storage space &amp;amp;rarr; [[SDS@hd/Access | Access]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SDS@hd_Registration.png|center|x500px|upright|SDS@hd Registration Process]]&lt;br /&gt;
&lt;br /&gt;
=== Step A: SV Membership ===&lt;br /&gt;
&lt;br /&gt;
You can either join an existing SV or start a new one. &lt;br /&gt;
&lt;br /&gt;
==== a) Join existing SV ====&lt;br /&gt;
To join an existing SV as a coworker: &lt;br /&gt;
# Get the following information from the SV responsible:&lt;br /&gt;
#:* SV acronym&lt;br /&gt;
#:* SV password&lt;br /&gt;
# Fill in and submit the [https://sds-hd.urz.uni-heidelberg.de/management/shib/sds_collaboration.php SV collaboration form] after logging in to the SDS@hd Managementtool. &lt;br /&gt;
#: You are now a member of the SV. The SV owner (and SV managers) will be notified automatically. &lt;br /&gt;
&amp;amp;rarr; [[SDS@hd/Registration#Step_B:_Registration_for_SDS@hd_Service | Go on with Step B]] if you are using SDS@hd for the first time.&lt;br /&gt;
&lt;br /&gt;
==== b) Apply for new SV ====&lt;br /&gt;
&lt;br /&gt;
This is typically done only by the leader of a scientific work group or the senior scientist of a research group/collaboration.&lt;br /&gt;
Any amount of co-workers can join your SV without having to register another project. You just need to provide them with the SV acronym and SV password. You&#039;ll receive this information via e-mail as soon as the SV application was successful. &lt;br /&gt;
&lt;br /&gt;
There are two steps: &lt;br /&gt;
# &#039;&#039;&#039;Get the permission / entitlement:&#039;&#039;&#039;. Your institution has to grant you the permission to start an SDS@hd storage project (&amp;quot;SDS@hd SV entitlement&amp;quot;). Please follow the procedure specific to your institution:&lt;br /&gt;
#: &amp;amp;rarr; see [[SDS@hd/Registration/Entitlement | Entitlement]].&lt;br /&gt;
# &#039;&#039;&#039;Apply for a new SV:&#039;&#039;&#039; &lt;br /&gt;
#: &amp;amp;rarr; Fill in the form at the [https://sds-hd.urz.uni-heidelberg.de/management SDS@hd Managementtool].&lt;br /&gt;
&amp;amp;rarr; [[SDS@hd/Registration#Step_B:_Registration_for_SDS@hd_Service | Go on with Step B]] if you are using SDS@hd for the first time.&lt;br /&gt;
&lt;br /&gt;
If you register your own SV, you will be:&lt;br /&gt;
* ...responsibe for providing new members with the necessary information to join the SV&lt;br /&gt;
*: &amp;amp;rarr; see [[SDS@hd/SV_Management#SV_Responsible_(SVV) | SV Responsible (SVV)]]&lt;br /&gt;
* ...held accountable for the co-workers in the SV&lt;br /&gt;
* ...asked to provide information for the two reports required by the DFG for their funding of SDS@hd&lt;br /&gt;
* ...likely asked for a contribution to a future DFG grant proposal for an extension of the storage system in your area of research (&amp;quot;wissenschaftliches Beiblatt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== Step B: Registration for SDS@hd Service ===&lt;br /&gt;
[[File:bwServices_chooseHomeOrganisation.png|right|300px|thumb|Select your home organization]]&lt;br /&gt;
&lt;br /&gt;
After step A you have to register your personal account on the storage system and set a service password.&lt;br /&gt;
&lt;br /&gt;
* Visit the registration website &#039;&#039;&#039;bwServices&#039;&#039;&#039;: [https://bwservices.uni-heidelberg.de/ https://bwservices.uni-heidelberg.de] &lt;br /&gt;
*# Select your home organization from the list and click &#039;&#039;Proceed&#039;&#039;&lt;br /&gt;
*#: You will be directed to the &#039;&#039;Identity Provider&#039;&#039; of your home organisation  &lt;br /&gt;
*# Enter your home-organisational user ID / username  and your home-organisational password and click &#039;&#039;Login&#039;&#039; button&lt;br /&gt;
*#: You will be redirected back to bwServices&lt;br /&gt;
* &#039;&#039;&#039;Register&#039;&#039;&#039; for the SDS@hd service:&lt;br /&gt;
*# Under &#039;&#039;The following services are available&#039;&#039; select the service &#039;&#039;SDS@hd - Scientific Data Storage&#039;&#039;. &lt;br /&gt;
*# Click &#039;&#039;Register&#039;&#039;&lt;br /&gt;
* Set your personal &#039;&#039;&#039;service password&#039;&#039;&#039; for SDS@hd. This is used for accessing SVs.&lt;br /&gt;
* The registration is finished.&lt;br /&gt;
*: &amp;amp;rarr; [[#sds_registration_nextSteps|next steps]]&lt;br /&gt;
&lt;br /&gt;
=== Change Service Password at bwServices ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; &#039;&#039;&#039;[[Registration/bwForCluster/Helix#Setting_a_New_Service_Password | Setting a New Service Password]]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Registration&amp;diff=16008</id>
		<title>SDS@hd/Registration</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=SDS@hd/Registration&amp;diff=16008"/>
		<updated>2026-04-23T12:16:49Z</updated>

		<summary type="html">&lt;p&gt;H Schumacher: fixed link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Registration Steps ==&lt;br /&gt;
&lt;br /&gt;
The registration consists of two steps: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Step A:&#039;&#039;&#039; Membership in Storage Project (Speichervorhaben/&#039;&#039;&#039;SV&#039;&#039;&#039;). There are two options: &lt;br /&gt;
*: &#039;&#039;&#039;a)&#039;&#039;&#039; &amp;amp;rarr;[[SDS@hd/Registration#a)_Join_existing_SV | Join existing SV]]&lt;br /&gt;
*: &#039;&#039;&#039;b)&#039;&#039;&#039; &amp;amp;rarr;[[SDS@hd/Registration#b)_Apply_for_new_SV | Apply for new SV]] (only possible for [https://www.bwidm.de/hochschulen.php bwIDM members])&lt;br /&gt;
* &#039;&#039;&#039;Step B:&#039;&#039;&#039; &amp;amp;rarr;[[SDS@hd/Registration#Step_B:_Registration_for_SDS@hd_Service |Registration for SDS@hd Service]]&lt;br /&gt;
&lt;br /&gt;
After finishing the registration, the next steps are: &lt;br /&gt;
* Check which management options there are for your respective role in the SV &amp;amp;rarr; [[SDS@hd/SV_Management |SV Management]]&lt;br /&gt;
* See how to access and use your storage space &amp;amp;rarr; [[SDS@hd/Access | Access]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SDS@hd_Registration.png|center|x500px|upright|SDS@hd Registration Process]]&lt;br /&gt;
&lt;br /&gt;
=== Step A: SV Membership ===&lt;br /&gt;
&lt;br /&gt;
You can either join an existing SV or start a new one. &lt;br /&gt;
&lt;br /&gt;
==== a) Join existing SV ====&lt;br /&gt;
To join an existing SV as a coworker: &lt;br /&gt;
# Your advisor (the SV responsible) will provide you with the following data on the SV:&lt;br /&gt;
#:* acronym&lt;br /&gt;
#:* password&lt;br /&gt;
# Login at the SDS@hd Managementtool and fill in the [https://sds-hd.urz.uni-heidelberg.de/management/shib/sds_collaboration.php SV collaboration form]&lt;br /&gt;
#: Provide the SV acronym and SV password.  &lt;br /&gt;
# After submitting the request, you will be assigned to the SV as a member and receive an email with the next steps. The SV owner (and SV managers) will be notified automatically.&lt;br /&gt;
&lt;br /&gt;
==== b) Apply for new SV ====&lt;br /&gt;
&lt;br /&gt;
This is typically done only by the leader of a scientific work group or the senior scientist of a research group/collaboration.&lt;br /&gt;
Any amount of co-workers can join your SV without having to register another project. You just need to provide them with the SV acronym and SV password. You&#039;ll receive this information via e-mail as soon as the SV application was successful. &lt;br /&gt;
&lt;br /&gt;
There are two steps: &lt;br /&gt;
# &#039;&#039;&#039;Get the permission / entitlement:&#039;&#039;&#039;. Your institution has to grant you the permission to start an SDS@hd storage project (&amp;quot;SDS@hd SV entitlement&amp;quot;). Please follow the procedure specific to your institution:&lt;br /&gt;
#: &amp;amp;rarr; see [[SDS@hd/Registration/Entitlement | Entitlement]].&lt;br /&gt;
# &#039;&#039;&#039;Apply for a new SV:&#039;&#039;&#039; &lt;br /&gt;
#: &amp;amp;rarr; Fill in the form at the [https://sds-hd.urz.uni-heidelberg.de/management SDS@hd Managementtool].&lt;br /&gt;
&lt;br /&gt;
If you register your own SV, you will be:&lt;br /&gt;
* ...responsibe for providing new members with the necessary information to join the SV&lt;br /&gt;
*: &amp;amp;rarr; see [[#SV_Responsible:_Manage_the_SV_and_its_Members | SV Responsible: Manage the SV and its Members]]&lt;br /&gt;
* ...held accountable for the co-workers in the SV&lt;br /&gt;
* ...asked to provide information for the two reports required by the DFG for their funding of SDS@hd&lt;br /&gt;
* ...likely asked for a contribution to a future DFG grant proposal for an extension of the storage system in your area of research (&amp;quot;wissenschaftliches Beiblatt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step B: Registration for SDS@hd Service ===&lt;br /&gt;
[[File:bwServices_chooseHomeOrganisation.png|right|300px|thumb|Select your home organization]]&lt;br /&gt;
&lt;br /&gt;
After step 1 you have to register your personal account on the storage system and set a service password.&lt;br /&gt;
Please visit: &lt;br /&gt;
* [https://bwservices.uni-heidelberg.de/ https://bwservices.uni-heidelberg.de] &lt;br /&gt;
*# Select your home organization from the list and click &#039;&#039;&#039;Proceed&#039;&#039;&#039;&lt;br /&gt;
*# You will be directed to the &#039;&#039;Identity Provider&#039;&#039; of your home organisation  &lt;br /&gt;
*# Enter your home-organisational user ID / username  and your home-organisational password and click &#039;&#039;&#039;Login&#039;&#039;&#039; button&lt;br /&gt;
*# You will be redirected back to the registration website [https://bwservices.uni-heidelberg.de/ https://bwservices.uni-heidelberg.de/] &lt;br /&gt;
*# &amp;lt;div&amp;gt;Select unter &#039;&#039;&#039;The following services are available&#039;&#039;&#039; the service &#039;&#039;&#039;SDS@hd - Scientific Data Storage&#039;&#039;&#039; &lt;br /&gt;
*# Click &#039;&#039;&#039;Register&#039;&#039;&#039;&lt;br /&gt;
*# Finally, set a service password for authentication on SDS@hd&lt;br /&gt;
&lt;br /&gt;
=== Change Service Password at bwServices ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;rarr; &#039;&#039;&#039;[[Registration/bwForCluster/Helix#Setting_a_New_Service_Password | Setting a New Service Password]]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>H Schumacher</name></author>
	</entry>
</feed>