Glossary¶
This page defines the terms and abbreviations used throughout the cookbook. All entries are highlighted with tooltips wherever they appear. Hover over a term on any page to see its definition.
- BLAS — Basic Linear Algebra Subprograms
- A standard interface for low-level linear algebra routines (matrix multiply, dot products, etc.). NumPy and SciPy delegate heavy math to a BLAS implementation (OpenBLAS or Intel MKL) that runs in native threads, bypassing Python's GIL. Control thread count with
OMP_NUM_THREADS. - CI/CD — Continuous Integration / Continuous Deployment
- Automated build, test, and deployment pipelines.
- Compute Node
- A node dedicated to running jobs — where your code actually executes.
- Core
- A general-purpose processor. A modern CPU contains many cores, each capable of running work independently. In HPC contexts (and throughout this cookbook), "CPU" and "core" are used interchangeably to mean one unit of processing power. When you request "4 CPUs" for a job, you're asking for 4 cores.
- CPU — Central Processing Unit
- A general-purpose processor. A modern CPU contains many cores, each capable of running work independently. In HPC contexts (and throughout this cookbook), "CPU" and "core" are used interchangeably to mean one unit of processing power. When you request "4 CPUs" for a job, you're asking for 4 cores.
- CUDA — Compute Unified Device Architecture
- NVIDIA's GPU programming toolkit.
- Dependency
- Something your program depends on. This could be a Python package (like numpy), a shared library (like GDAL), or anything else that exists outside your own source code. If something works on your computer, but not on a different computer (like an HPC system), it's most likely because of a missing or mismatched dependency.
- Distributed Memory
- An architecture where many nodes each have private memory, communicating over a high-speed network.
- Embarrassingly Parallel
- A type of problem where the work can be divided into completely independent tasks that require no communication or coordination between them. Processing 1,000 images with the same filter is a classic example: each image can be handled separately without any information from the others.
- GSSAPI — Generic Security Services Application Program Interface
- An authentication mechanism that works with institutional credentials to enable passwordless logins to HPC systems. Some clusters use SSH keys instead.
- GPU — Graphics Processing Unit
- Used for parallel computation and AI/ML.
- Headless
- A system with no physical display attached. Cluster nodes are headless, which is why graphical applications need a remote display path, typically a web portal like Open OnDemand, X11 forwarding, or saving figures to files.
- Host
- A computer on a network, identified by its hostname. When you're logged into an HPC cluster, the hostname in your shell prompt tells you which host you're on.
- HPC — High-Performance Computing
- The practice of aggregating computing power for large-scale workloads.
- Lmod
- A Lua-based module system for managing software environments on HPC clusters. Lmod provides commands like
module load,module avail, andmodule listto load and switch between software versions. - MGHPCC — Massachusetts Green High Performance Computing Center
- A data center in Holyoke, MA that hosts shared HPC infrastructure for a consortium of universities, including the Unity cluster.
- I/O — Input/Output
- Abbreviation for data input and output processes, like reading/writing to a file or database.
- JIT — Just-In-Time compilation
- A technique where code is compiled to machine instructions at runtime rather than ahead of time. Numba uses JIT compilation to turn Python functions into fast native code on first call.
- Joblib
- A Python library for lightweight pipelining and parallel execution. scikit-learn uses Joblib internally when you set
n_jobson an estimator. Its default backend (loky) spawns worker processes similar tomultiprocessing. - Job
- A unit of work that a user submits to a scheduler. A job script specifies what to run and what resources are needed.
- LAPACK — Linear Algebra PACKage
- A library of routines for solving systems of linear equations, eigenvalue problems, and singular value decompositions. NumPy and SciPy call LAPACK through the BLAS implementation (OpenBLAS or MKL) for operations like
np.linalg.svd()andnp.linalg.eig(). - LAPACK — Linear Algebra PACKage
- A library of routines for solving systems of linear equations, eigenvalue problems, and singular value decompositions. NumPy and SciPy call LAPACK through the BLAS implementation (OpenBLAS or MKL) for operations like
np.linalg.svd()andnp.linalg.eig(). - Login Node
- The node you connect to via SSH — used for preparing and submitting jobs, not running them.
- Memory
- The fast but volatile working memory (RAM) available to a node, used by running processes to hold data and code while a job executes. Memory is different from storage because it is cleared when power is removed, but is much faster to access for the CPU or GPU.
- MPI — Message Passing Interface
- A standard for writing programs that run as many simultaneous processes spread across multiple nodes, communicating by sending messages over the network. Each process has its own private memory and a unique integer ID called a rank. Open MPI is the most common implementation on HPC clusters.
- MKL — Intel Math Kernel Library
- Intel's optimized implementation of BLAS and LAPACK, used by NumPy and SciPy on systems with Intel CPUs. Thread count is controlled by
MKL_NUM_THREADS. - Open Mpi
- A widely used open-source implementation of the MPI standard, available on Unity. Provides the mpicc compiler wrapper (which links the MPI libraries into your program) and the mpirun launcher (which starts your processes across allocated nodes).
- Rank
- A unique integer ID assigned to each process in an MPI job, starting at 0. If you launch 8 MPI processes, they are numbered rank 0 through 7. Rank 0 is conventionally used as the "root" for coordination tasks like gathering results from all other ranks.
- Node
- An individual machine within a cluster. Each node has its own CPUs, memory, and (sometimes) GPUs.
- OOD — Open OnDemand
- Web portal for cluster access.
- OOM — Out of Memory
- When a job exceeds its allocated memory.
- Openblas
- An open-source implementation of BLAS and LAPACK, commonly used as the linear algebra backend for NumPy on Linux. Thread count is controlled by
OPENBLAS_NUM_THREADS. - Partition
- A logical grouping of nodes, often organized by hardware type or intended use (e.g., standard CPU nodes, GPU nodes).
- PBS — Portable Batch System
- A legacy job scheduler (this site uses Slurm).
- Pickle
- Python's built-in serialization format for converting objects to a byte stream and back. The
multiprocessingmodule uses pickle to send functions and data to worker processes. Lambdas, nested functions, and some complex objects can't be pickled, which causesPicklingErrorwhen used withmultiprocessingorconcurrent.futures. - Process
- A running instance of a program, with its own process ID (PID) and memory. A single program can spawn multiple processes — for example, an MPI job launches one process per rank.
- Netid
- A unique campus username assigned to each member of the Dartmouth community, used for authentication across university systems including HPC.
- QOS — Quality of Service
- Slurm mechanism for priority and limits.
- Quota
- A limit on how much storage space a user or directory can consume. Quotas prevent any one user or program from using more than their fair share of shared storage resources.
- Scheduler
- A program that receives job submissions from users, keeps track of the cluster's available resources, and decides when and where each job should run. This site's cluster uses Slurm.
- Shared Memory
- An architecture where all processors share a single pool of RAM, like in a regular laptop computer.
- SIF — Singularity Image Format
- Container image format used by Apptainer.
- SLURM — Simple Linux Utility for Resource Management
- The job scheduler used on the Unity cluster.
- Slurm — Simple Linux Utility for Resource Management
- The job scheduler used on the Unity cluster.
- SSH — Secure Shell
- Encrypted protocol for remote access.
- Scratch
- High-speed temporary storage on the cluster, optimized for the heavy read/write patterns of running jobs. Files on scratch are not backed up and may be purged automatically after a period of inactivity.
- Scratch Storage
- High-speed temporary storage on the cluster, optimized for the heavy read/write patterns of running jobs. Files on scratch are not backed up and may be purged automatically after a period of inactivity.
- Storage
- The persistent, non-volatile data repositories that jobs read from and write to. This includes parallel file systems (e.g., Lustre, GPFS) shared across many nodes, local scratch disks on individual nodes, and longer-term archives. Unlike memory, storage retains its contents after power is removed.
- Home Directory
- A small, persistent, backed-up personal directory on the cluster (typically accessed as ~). Intended for scripts, configuration files, and small personal files — not for large datasets or heavy job I/O.
- VPN — Virtual Private Network
- Software that creates a secure, encrypted connection to a campus network from an off-campus location, enabling access to resources that are restricted to on-campus use.
- venv — Python virtual environment
- A bundle of Python packages of specific versions.
- Huggingface Hub
- The online model registry at huggingface.co where researchers publish pre-trained model weights, tokenizers, and datasets. The
transformerslibrary downloads from the Hub on first use and caches the files locally under$HF_HOME. - Device_Map
- An
acceleratefeature that automatically partitions a model's layers across all available GPUs (and CPU/disk if needed) so that large models exceeding a single GPU's memory can still run. Enabled by passingdevice_map="auto"toAutoModel.from_pretrained(). - Accelerate
- A HuggingFace library that abstracts multi-GPU and mixed-precision training and inference. Required for
device_map="auto"intransformers. - Amdahl'S Law
- A formula predicting the maximum speedup from parallelizing a program: S = 1 / (1 − P + P/n), where P is the fraction that can be parallelized and n is the number of processors. The serial portion of your code sets a hard ceiling on how much faster you can go, no matter how many processors you add.
- Concurrency
- Executing multiple tasks in overlapping time periods, potentially on a single processor. Tasks make progress by interleaving — not necessarily by running simultaneously. Useful for I/O-bound workloads where tasks spend time waiting for external resources.
- Coroutine
- A function that can pause its execution (yield control) and resume later. Used in async/concurrent programming to allow cooperative multitasking within a single thread.
- Cpu-Bound
- A workload whose execution time is dominated by computation rather than waiting for I/O. CPU-bound tasks benefit from parallel execution on multiple cores.
- Event Loop
- A programming construct that waits for tasks to become ready and dispatches them for execution. The core mechanism behind concurrent/async programming — it switches between tasks when one begins waiting for I/O, keeping the processor busy.
- GIL — Global Interpreter Lock
- A mutex in CPython that allows only one thread to execute Python bytecode at a time. This limits the effectiveness of thread-based parallelism for CPU-bound Python code; use multiple processes instead.
- I/O-Bound
- A workload whose execution time is dominated by waiting for input/output operations (network requests, disk reads, database queries) rather than computation. I/O-bound tasks benefit from concurrent execution.
- Message Passing
- A communication model where processes exchange data by explicitly sending and receiving messages rather than sharing memory. MPI is the dominant standard for message passing in HPC.
- Oversubscription
- Running more processes or threads than available physical CPU cores, forcing the operating system to time-share them. Can degrade performance due to context-switching overhead.
- Parallelism
- Executing multiple tasks at the exact same time on separate physical processors. Unlike concurrency (which interleaves tasks on one core), parallelism requires multi-core or multi-node hardware.
- Race Condition
- A bug that occurs when multiple threads or processes access shared data simultaneously and the outcome depends on the unpredictable timing of their execution. Avoiding race conditions is a central challenge in shared-memory parallel programming.
- Speedup
- The ratio of sequential execution time to parallel execution time. A speedup of 4× means the parallel version runs four times faster than the sequential one.
- Thread
- An execution flow within a process that shares the parent process's memory space. Threads are lightweight to create and destroy, but concurrent access to shared memory introduces the risk of race conditions.