2026 DSS Bootcamp
The Duke Compute Cluster is a general purpose high performance/high-throughput installation, and it is fitted with software used for a broad array of scientific projects. With a few notable exceptions, applications on the cluster are generally Free and Open Source Software.
Quick facts:
1360 nodes which combined have more than 45,000 vCPUs, 1,000 GPUs and 270TB of RAM
Interconnects are 10 Gbps or 40 Gbps
Utilizes a 7 Petabyte Isilon file system
Runs Alma 9 and SLURM is the job scheduler
The DCC exists to support the research mission of Duke University, and users agree to only run jobs related to that mission.
Use of the cluster for any of the following is prohibited:
Financial gain
Commercial or business use
Unauthorized use or storage of copyright-protected or proprietary resources
Unauthorized mining of data on or off campus (including many web scraping techniques)
The DCC is a shared environment and all users are expected to follow some basic best practices:
All computational work must be submitted through the SLURM scheduler. Running jobs on the login nodes is considered an abuse of the system.
Use common partition resources judiciously, only request the CPUs, memory, and time your job actually needs.
Long running jobs are discouraged on the common and scavenger partitions. Save intermediate results (checkpoint) so an interrupted job does not mean starting over.
Shared storage is for data under active computation, not long term storage. Clean up and remove your data when your computation concludes.
Research Computing now has a policy on AI use on the cluster, some highlights:
AI use must be consistent with Duke’s research, instructional, and administrative purposes, must respect data classification requirements, and must not interfere with other users or the security of the system.
AI-assisted development and research workflows are appropriate when run transparently, within your resource allocations, and with normal user oversight.
Do not give agentic AI tools broad, unattended control over files, shell commands, network access, credentials, or job submission. Unsafe permission bypass modes (e.g. --dangerously-skip-permissions, “YOLO mode”, blanket tool approval) are strongly discouraged.
OpenClaw is not permitted anywhere on the DCC.
You are responsible for all activity from your account. Only use AI tools in ways you can supervise, explain, and defend.
As a shared resource, privacy on the cluster is constrained:
Cluster support staff have access to all data on the cluster and may inspect elements of the system from time to time.
Metadata and utilization by group (and sometimes user) are made available to all cluster users and Duke stakeholders.
Duke classifies all university data into three levels based on risk, and that classification determines where data may be stored and processed.
Sensitive - data that Duke is either required by law to protect, or which Duke protects to mitigate institutional risk. Explicit institutional approval is needed to access Sensitive data.
Restricted - data that is not necessarily for public consumption, but also does not fit into the Sensitive category. Disclosure would not significantly harm the university.
Public - all other data, which can be accessible to the general public.
If data has not been classified, it defaults to Restricted, so when in doubt treat data as Restricted until its data steward tells you otherwise.
| Level | Examples |
|---|---|
| Sensitive | Social security numbers, credit card numbers, health records (HIPAA / PHI), student records (FERPA), donor information, research data with contractual or regulatory protections |
| Restricted | Unpublished research data, non-public financial records, data covered by NDAs, library transaction records |
| Public | Published research, university websites, campus maps, directory listings |
The DCC’s security and compliance provisions are sufficient for Public and Restricted data only.
Sensitive data (e.g. legally protected data such as PHI or FERPA) and data bound by certain restrictions in data use agreements are not allowed on the cluster.
Appropriately de-identified or obfuscated data can potentially be used on the cluster, but confirm with your IRB protocol or data use agreement first.
If your project involves Sensitive data it needs to live in an environment designed for it (e.g. the Protected Research Data Network), talk to your advisor and see Regulated Research Data Support.
Before putting data on any Duke service, check the Duke Services and Data Classification chart for what is approved at each level.
Duke’s data protections do not follow your data - Restricted or Sensitive data should only go into a third party service if Duke has a data protection agreement (or similar contract) in place with that vendor.
A useful rule of thumb: if you did not log in with your NetID via Duke’s Shibboleth SSO, the service very likely does not have such an agreement.
It is your responsibility to know what services you are using and what data you are sharing with them. Getting this wrong can have real consequences for both you and Duke.
For example, uploading your PIs unpublished research data or student records to a personal ChatGPT or Claude account is not ok - use Duke’s AI tools (ChatGPT for Education, DukeGPT, the AI Gateway) instead, which are covered by Duke agreements.
Data classification governs data handling
Users are accountable for outputs they adopt
Attribution follows the norms of the venue
Credentials and authentication secrets stay out of Generative AI tools
Agents and automated workflows require architectural constraints
Understand third-party terms.
| Path | Size | Description | Backups |
|---|---|---|---|
/work/<netid> |
650 TB | Unpartitioned, high speed volume, shared across all users | None |
/cwork/<netid> |
830 TB | High speed volume, available to all users | None |
/hpc/home/<netid> |
25 GB | Personal scripts, and other environment setup | None |
/hpc/group/<groupname> |
1 TB (expandable) | Private to each lab group | 7-day snapshot |
/hpc/dctrl/<netid> |
500 GB | Private to each PhD student | 7-day snapshot |
/datacommons/<groupname> |
Fee-based | Archival storage | Optional 30-day backup |
/home - personal scripts and configuration files, environment setup information
/group - software installations, lab specific scripts, moderately sized data sets or intermediate results that are needed for longer than 75 days.
/work, /cwork - large data sets under analysis, intermediate results. Files older than 75 days are automatically purged!
/datacommons - long term storage for source data and results data
/scratch - node specific high speed storage, data must be deleted when job is complete. Sizes vary by node, use with caution.
Since you’ve been added to the statdept group you will have access /hpc/group/statdept - this is a shared resource across the department use sparringly. If you have heavier needs you should be working with a PI - use their group’s allocation.
All access to the DCC compute nodes is managed through the SLURM job scheduler.
Traditionally, users would log in to the cluster via SSH and then submit jobs to the scheduler.
This is still the preferred approach for large scale jobs but is beyond the scope of today’s workshop.
If this is of interest to you, I strongly recommend RC training.
For interactive use the current recommended approach is to use the OnDemand web-based interface.
Open OnDemand gives access to tools like Jupyter Lab, RStudio, Positron, and VS Code on the DCC through your browser
Currently there are two flavors of OnDemand available:
Your account will belong to different groups and those groups will have access to different partitions on the DCC.
OnDemand generally will let you know which partitions you have access to, but this is a common reason a job may fail to run.
General use partitions:
Interactive partition:
All other partitions (limit total for all jobs):
Stats OnDemand has been customized and looks a little bit different but the core job details are basically the same.
After account and partition, the other important job options are:
Session duration - how long the job will run before it is killed, better to pick longer than you think you need and then cancel the job if you finish early.
Session size - how many CPUs and GBs of memory to ask for. Keep in mind partition limits and larger jobs may take longer to schedule. We’ve provided defaults that should work for most use cases, but custom values can be set under “Advanced Options”.
This is another advanced option - for all of the tools provided we have pre-built containers with a preconfigured environment that includes Python, R, and Julia (along with common packages).
The hope is that these will meet most of your needs, but you can also create your own containers if something more specialized is needed.
If you would like to explore this see RC Containers documentation for details or come chat with me.