Working with HCC Clusters¶
The Holland Computing Center (HCC) provides high-performance computing (HPC) resources for research at the University of Nebraska. This guide will help you get started using HCC clusters for computational work.
What is HCC?¶
HCC (Holland Computing Center) is a computing facility that provides:
- High-performance computing clusters: Powerful computers for running large computational jobs
- Cloud computing resources: Virtual machines for various computing needs
- Storage: Large amounts of data storage for research projects
- Specialized software: Pre-installed scientific and research software
Why Use HCC Clusters?¶
- More computing power: Run jobs that need more resources than your laptop
- Parallel processing: Run many tasks simultaneously
- Long-running jobs: Jobs can run for days or weeks without interruption
- Specialized software: Access to software that's difficult to install locally
- Large storage: Store and process large datasets
When to Use HCC vs. Your Computer¶
Use HCC when: - Your job needs more memory than your computer has - Your job will run for hours or days - You need to run many jobs in parallel - You need specialized scientific software - You're working with very large datasets
Use your local computer when: - Quick tests or small jobs - Interactive development - Jobs that finish in minutes - Working with small datasets
Getting Started¶
Step 1: Create an HCC Account¶
- Apply for an account at the HCC website, join group
yesselmanlab - Wait for approval (usually quick for University of Nebraska affiliates)
- Set up your password when you receive account information
- Set up Duo two-factor authentication (required for security)
Step 2: Connect to a Cluster¶
Once you have an account, you can connect to HCC clusters using SSH (Secure Shell).
Basic connection command:
Replace your-username with your HCC username.
First time connecting: - You'll be asked to accept the host key (type yes) - Enter your password - Complete Duo authentication
Step 3: Understand the Cluster Structure¶
When you connect, you're on a login node. This is NOT for running jobs - it's only for: - Managing files - Editing scripts - Submitting jobs - Light testing
Important: Never run heavy computations on login nodes! Always submit jobs to compute nodes.
Basic Linux Commands¶
Since HCC clusters run Linux, you'll need to know basic Linux/Unix commands to navigate and work with files.
Learn Linux Commands
For a comprehensive guide to Linux/Unix commands, see the Command Line Guide. This guide covers all the essential commands you'll need for working on HCC clusters, including: - Navigation commands (cd, ls, pwd) - File management (cp, mv, rm, mkdir) - Text editing (nano, vim) - Viewing files (cat, less, head, tail) - Getting help (man, --help) - And much more!
File Storage on HCC¶
Home Directory (~)¶
- Location:
/home/your-username - Size limit: Usually 10-50GB
- Backed up: Yes
- Best for: Scripts, configuration files, small data
Work Directory (/work)¶
- Location:
/work/your-username - Size limit: Much larger (check current limits)
- Backed up: No (be careful!)
- Best for: Large datasets, job outputs, temporary files
Scratch Space¶
- Location:
/scratch/your-usernameor node-specific - Size: Very large but temporary
- Backed up: No
- Best for: Temporary files during job execution
- Important: Files may be deleted after a period of inactivity
Storage Best Practices¶
- Keep scripts in home directory (backed up)
- Use work directory for large data (not backed up, but persistent)
- Use scratch for temporary job files (may be deleted)
- Transfer important results back to your computer regularly 5 Back stuff up on $NRDSTOR which is free storage that everyone has access to.
Transferring Files¶
Using SCP (Command Line)¶
SCP (Secure Copy Protocol) allows you to transfer files from the command line. For detailed SCP usage and examples, see the Command Line Guide.
Basic usage: - Upload: scp filename.txt your-username@login.swan.unl.edu:~/ - Download: scp your-username@login.swan.unl.edu:~/filename.txt ./ - Transfer directory: scp -r directoryname your-username@login.swan.unl.edu:~/
Using Cyberduck (GUI - Mac/Windows)¶
- Download Cyberduck from cyberduck.io
- Open Cyberduck and click "Open Connection"
- Select "SFTP (SSH File Transfer Protocol)"
- Enter connection details:
- Server:
login.swan.unl.edu - Username: Your HCC username
- Password: Your HCC password
- Click "Connect"
Using WinSCP (Windows)¶
- Download WinSCP from winscp.net
- Open WinSCP and enter connection details:
- File protocol: SFTP
- Host name:
login.swan.unl.edu - Username: Your HCC username
- Password: Your HCC password
- Click "Login"
Using Globus (Large Files)¶
For very large files or many files, use Globus:
- Go to globus.org
- Sign in with your university credentials
- Set up endpoints for HCC and your computer
- Transfer files through the web interface
Running Jobs on HCC¶
HCC uses SLURM (Simple Linux Utility for Resource Management) to manage jobs. You don't run jobs directly - you submit them to a queue, and SLURM runs them when resources are available.
Understanding Job Submission¶
- Create a job script (tells SLURM what to run)
- Submit the job to the queue
- SLURM schedules your job when resources are available
- Your job runs on compute nodes
- Results are saved to output files
Basic Job Script Example¶
Create a file called myjob.sh:
#!/bin/bash
#SBATCH --job-name=myjob # Job name
#SBATCH --output=myjob.out # Output file
#SBATCH --error=myjob.err # Error file
#SBATCH --time=01:00:00 # Time limit (1 hour)
#SBATCH --nodes=1 # Number of nodes
#SBATCH --ntasks-per-node=1 # Tasks per node
#SBATCH --mem=4G # Memory needed
# Your commands here
echo "Hello from HCC!"
python myscript.py
Submitting a Job¶
# Submit your job
sbatch myjob.sh
# Check job status
squeue -u your-username
# Cancel a job
scancel jobid
Monitoring Jobs¶
# See your jobs
squeue -u your-username
# See detailed job information
scontrol show job jobid
# See job history
sacct -u your-username
Interactive Jobs¶
Sometimes you want to interact with a job directly:
# Request an interactive session
srun --pty bash
# Request with specific resources
srun --time=01:00:00 --mem=8G --pty bash
Use interactive jobs for: - Testing code - Debugging - Exploring data - Running interactive software
Using Software on HCC¶
Module System¶
HCC uses a module system to manage software. Instead of installing software yourself, you load pre-installed modules.
Common module commands:
# See available software
module avail
# Search for software
module avail python
# Load a module
module load python/3.9
# See loaded modules
module list
# Unload a module
module unload python/3.9
# Unload all modules
module purge
Example: Using Python¶
# Load Python module
module load python/3.9
# Check Python version
python --version
# Run Python script
python myscript.py
Example: Using Conda¶
# Load conda module
module load anaconda
# Create environment
conda create -n myenv python=3.9
# Activate environment
conda activate myenv
# Install packages
conda install numpy pandas
Finding Software¶
-
Check available modules:
-
Check HCC documentation for specific software guides
-
Ask HCC support if software isn't available
Common Workflows¶
Workflow 1: Running a Python Script¶
-
Transfer your script to HCC using SCP or a GUI tool (see Transferring Files section)
-
Connect to HCC:
-
Create job script (
run_python.sh) with a text editor: -
Submit job:
-
Check status:
-
View results using text viewing commands (see Command Line Guide)
Workflow 2: Running Multiple Jobs (Job Arrays)¶
If you need to run the same job with different parameters:
#!/bin/bash
#SBATCH --job-name=array_job
#SBATCH --output=array_%A_%a.out
#SBATCH --array=1-10
#SBATCH --time=01:00:00
# SLURM_ARRAY_TASK_ID will be 1, 2, 3, ..., 10
python myscript.py --input data_${SLURM_ARRAY_TASK_ID}.txt
Workflow 3: Using Jupyter Notebooks¶
HCC supports running Jupyter notebooks on compute nodes:
-
Submit interactive job with Jupyter:
-
Load Python module:
-
Start Jupyter:
-
Set up SSH tunnel from your computer:
-
Open browser to
localhost:8888
Best Practices¶
Do's¶
✅ Do submit jobs instead of running on login nodes - Login nodes are shared - heavy computation slows things down for everyone
✅ Do request appropriate resources - Request enough time, memory, and CPUs for your job - Requesting too much wastes resources; too little causes job failures
✅ Do test with small jobs first - Make sure your code works before submitting large jobs
✅ Do clean up temporary files - Delete files you don't need to save storage space
✅ Do use work directory for large files - Home directory has size limits
✅ Do check job output files - Look at .out and .err files to see what happened
Don'ts¶
❌ Don't run heavy computations on login nodes - Always submit jobs to compute nodes
❌ Don't request excessive resources - Request what you need, not everything available
❌ Don't store large files in home directory - Use work or scratch directories
❌ Don't submit thousands of tiny jobs - Batch similar jobs together when possible
❌ Don't ignore error messages - Check .err files to understand failures
Getting Help¶
HCC Documentation¶
- Main documentation: https://hcc.unl.edu/docs/
- Software guides: Check the "Running Applications" section
- Job submission: Check the "Submitting Jobs" section
HCC Support¶
- Email: hcc-support@unl.edu
- Help tickets: Submit through HCC website
- Office hours: Check HCC website for current hours
Common Issues¶
Problem: Job won't start - Check if you requested too many resources - Check partition availability - Check job script for errors
Problem: Job runs out of memory - Increase --mem in your job script - Check if your code has memory leaks
Problem: Job takes too long - Increase --time in your job script - Optimize your code if possible
Problem: Can't connect to cluster - Check your internet connection - Verify your username and password - Check if Duo authentication is working
Quick Reference¶
Connection Commands¶
Job Management¶
# Submit job
sbatch jobscript.sh
# Check job status
squeue -u your-username
# Cancel job
scancel jobid
# See job details
scontrol show job jobid
File Transfer¶
For detailed file transfer commands, see the Command Line Guide.
Basic SCP commands: - Upload: scp file.txt your-username@login.swan.unl.edu:~/ - Download: scp your-username@login.swan.unl.edu:~/file.txt ./ - Upload directory: scp -r directory your-username@login.swan.unl.edu:~/
Module Commands¶
# List available
module avail
# Load module
module load software/version
# List loaded
module list
# Unload all
module purge
Next Steps¶
- Get an HCC account if you don't have one
- Connect to Swan cluster and explore
- Try a simple job to get familiar with SLURM
- Read HCC documentation for your specific software needs
- Ask for help if you get stuck
Related Guides¶
- Command Line Guide - Learn terminal basics (essential before using HCC)
- Development Tools Overview - Other development tools
- HCC Official Documentation - Complete HCC documentation
Last updated: November 23, 2025