NERSCPowering Scientific Discovery Since 1974

Running Jobs

For the latest information on running jobs and examples see:


Cori, like most supercomputers, is a distributed-memory, massively parallel processor (MPP) machine. The system consists of many independent nodes, each having  processor cores, memory, and a network interface. Memory on each node is only directly addressable by cores on that node. See Cori Configuration for more information. 

Most codes run on Cori in parallel using SPMD (single program, multiple data) mode, where a single binary executable is broadcast to each node and executed independently by each parallel task (more information can be found in the pages below). If a processor needs data that resides in the memory of a different node, programs typically use the Message Passing Interface (MPI) to transfer data from one node to another.

Most jobs are run in batch mode, although interactive computing is available for code development and testing using a small number of nodes for a short time. In batch mode, the user prepares a text script file – usually a shell script – that contains batch directives and LINUX commands. The batch directives tell the batch system how to run the job (see Batch Jobs below). The batch system software used at NERSC is called SLURM.

Batch Jobs

How to run batch jobs on Cori. Read More »

General Running Jobs Recommendations

This page provides general running MPI and hybrid MPI/OpenMP jobs recommendations to achieve optimal process and thread affinity on Haswell and KNL compute nodes. Read More »

Running Jobs on Cori FAQ

Refer to this page for some frequently asked questions for running jobs on Cori. Read More »

Example Batch Scripts

Use these batch script examples as templates to get started. Read More »

Example Batch Scripts for KNL

Use these batch script examples as templates to get started on KNL. Read More »

Advanced Running Jobs Options

Scripts for more complex job submission. Read More »

Interactive Jobs

Learn how to run interactive jobs on Cori. Read More »

Monitoring Jobs

Learn commands to query, hold, submit and monitor jobs on Cori. Read More »

Specifying Required File Systems

Users can now specify the filesystems required for their jobs by requesting “licenses” for them in their batch scripts. This will protect your jobs from failures or decreased performance from known issues. Read More »

Cori Queues and Policies

Queue limits, policies and tips for getting your job through the queue faster. Read More »

Changes for Running on Haswell Nodes

October 31, 2016

After the merge of Cori Phase 1 Haswell and Phase 2 KNL cabinets, running jobs on Haswell for getting the process and thread affinity has changed from before the merge. Read More »

SLURM at NERSC Overview

Introduction to native SLURM. Advantages and available SLURM features on Cori. Also pointers to more NERSC documentations on SLURM. Read More »

Processor Frequency on the Cori Data Partition

The Haswell processors in Cori's data partition have a "Turbo Boost" feature to dynamically adjust CPU frequency and achieve the maximum possible performance. When Turbo Boost is enabled, the processor operates at the maximum frequency allowed by the available power and thermal limits. Further, on Cori (unlike Edison), each core can operate at a different frequency. The instantaneous turbo frequency could be above or below the nominal 2.3 GHz frequency depending on the number of active cores… Read More »

Cori for Edison Users

The Cori Haswell nodes are very similar to those on Edison. Read More »