====== Accessing the Cluster ======
Caviness currently features two //login nodes// through which users interact with the cluster. The host name ''caviness.hpc.udel.edu'' will connect you to one of those two nodes((//Round-robin DNS load balancing// returns multiple IP addresses when the name ''caviness.hpc.udel.edu'' is looked-up, in random order. Your SSH client will use the first IP address returned.)). For example, from a terminal window on a Mac or Linux client:
localhost$ ssh «username»@caviness.hpc.udel.edu
:
[«username»@login01 ~]$
The default shell prompt on Caviness displays the name of the login node. If a user must connect to a specific login node, use that node's full domain name:
localhost$ ssh «username»@login00.caviness.hpc.udel.edu
:
[«username»@login00 ~]$
When reporting connection problems, please include the ''-vvv'' flag in your ''ssh'' command to produce verbose output and include that output in your help ticket.
**Do not run the ''ssh-keygen'' command on Caviness.** This command can destroy your account's ability to login to compute nodes without requesting a password. If you do this by mistake, you can either:
* recover an older copy of ''~/.ssh'' from your home directory's [[abstract:zfs-snapshots|ZFS snapshots]]
* execute ''mv ~/.ssh ~/.ssh.bak'', logout and log in to Caviness again (the system will generate a new key pair for you)
===== Workgroups =====
Each entity that invests in the Caviness cluster is given a //workgroup// which encompasses sponsored user accounts, on-cluster storage, and purchased compute resources. The workgroup name (referenced as **«workgroup»** in this documentation) can refer to
* The Unix group to which all sponsored user accounts are members
* The [[caviness:resources#workgroup_directories|shared storage]] allocated to the workgroup
* The Slurm:
* Account to which jobs are submitted
* Partition which grants priority-access to purchased compute resources
The default workgroup for all users is **everyone**; this workgroup has no Slurm partitions available to it and no shared storage space. To change your shell to a specific workgroup, use the ''workgroup'' command:
[«username»@login00 ~]$ workgroup -g «workgroup»
[(«workgroup»:«username»)@login00 ~]$
The ''workgroup'' command is often the first command you will issue after logging-in to the cluster, since it prepares the shell for work within a specific workgroup context((The workgroup's VALET package definitions will become available to you, and the ''$WORKDIR'' environment variable will point to the shared storage. Also, the Slurm ''sbatch''/''srun''/''salloc'' commands will default to using the «workgroup» account for job submission.)).
Workgroups can create a ''$WORKDIR/sw/bin'' directory and add executables to it. If that directory exists, it is automatically prepended to a sponsored user's ''$PATH'' when using the ''workgroup'' command to enter that workgroup.
Thereafter, the ''exit'' command will return you to your original login shell:
[(«workgroup»:«username»)@login00 ~]$ exit
[«username»@login00 ~]$
==== Workgroup queries ====
The ''workgroup'' command also allows you to query to which workgroups you belong:
[«username»@login00 ~]$ workgroup --query workgroups
1001 workgroup1
1010 workgroup10
All available options are summarized using the ''workgroup --help'' command.
===== Shell customization =====
**Alteration of your ''.bashrc'' and ''.bash_profile'' files is strongly discouraged.** Adding directories to the ''PATH'', ''LD_LIBRARY_PATH'', and ''PYTHONPATH'' environment variables is best done using VALET packages and **not** by adding code to your ''.bashrc'' file. Keeping ''.bashrc'' and ''.bash_profile'' as close to pristine as possible often prevents difficult-to-debug problems from occurring when running jobs on the cluster.
The ''.bash_udit'' file in your home directory controls shell customizations offered by UD IT:
^Variable^Description^
|''IT_WANT_ENV_EXTENSIONS''|Set to ''yes'' to enable the effects of the other variables|
|''IT_SET_WORKGROUP_ON_LOGIN''|Set to ''yes'' to automatically change to your default workgroup at login|
|''IT_DEFAULT_WORKGROUP''|The name of the workgroup to use by default; if unspecified, then the first workgroup listed by the ''workgroup --query workgroups'' command|
|''IT_WORKGROUP_CHDIR''|Change to the workgroup's ''$WORKDIR'' by default|
For example, if the user edits ''.bash_udit'' to set:
IT_WANT_ENV_EXTENSIONS="yes"
IT_DEFAULT_WORKGROUP="«workgroup»"
IT_WORKGROUP_CHDIR="yes"
IT_SET_WORKGROUP_ON_LOGIN="no"
then the shell and ''workgroup'' command will behave as follows:
localhost$ ssh «username»@caviness.hpc.udel.edu
:
[«username»@login01 ~]$ workgroup
WARNING: Your working directory has been changed to /work/«workgroup»
[(«workgroup»:«username»)@login01 «workgroup»]$
All additional adjustments to the shell environment should be handled using [[caviness:valet|VALET]].