diff --git a/docs/getting_started/faq.md b/docs/getting_started/faq.md index 9ee8fa12..3eb408d8 100644 --- a/docs/getting_started/faq.md +++ b/docs/getting_started/faq.md @@ -351,6 +351,18 @@ Before submitting a software installation request, please review our [Software i For individuals who need to install Python libraries not included in our base Python or Anaconda modules, we recommend using Conda environments through the Anaconda module. Instructions for creating a custom Conda environment can be found on our [Python and R with Anaconda](../software/python.md) documentation page. :::: +### Which NVIDIA SDK version should I use on Alpine GPUs? +::::{dropdown} Show +:icon: note + +Our recommendation is to use >= `nvhpc_sdk/2025.251` on all GPUs. If you require more specific information on the CUDA versions a given GPU architecture will support, please see the [NVIDIA Toolkit, Driver and Architecture Matrix](https://docs.nvidia.com/datacenter/tesla/drivers/cuda-toolkit-driver-and-architecture-matrix.html), noting the following architectures available on Alpine: + +* A100: Ampere +* L40: Ada +* H200: Hopper +* RTX Pro 6000: Blackwell +:::: + ## Alpine ### Why do I get an `Invalid Partition` error when running an Alpine job? diff --git a/docs/programming/profiling-nvidia-gpu-performance.md b/docs/programming/profiling-nvidia-gpu-performance.md index 406c8f32..c6923404 100644 --- a/docs/programming/profiling-nvidia-gpu-performance.md +++ b/docs/programming/profiling-nvidia-gpu-performance.md @@ -1,6 +1,10 @@ # Profiling NVIDIA GPU Performance -The NVIDIA Performance Counters provide low-level metrics on GPU usage, enabling users to understand how efficiently their code uses the GPU. This is especially important for optimizing workloads on Alpine’s A100 GPU nodes, where GPU time is a valuable and shared resource. +```{warning} +Ensure you are using a CUDA version compatible with the GPU you are using. For more information, see our FAQ on [Which NVIDIA SDK version should I use on Alpine GPUs?](../getting_started/faq.md#which-nvidia-sdk-version-should-i-use-on-alpine-gpus) +``` + +The NVIDIA Performance Counters provide low-level metrics on GPU usage, enabling users to understand how efficiently their code uses the GPU. Optimizing workloads on Alpine’s GPU nodes is important due to the high demand for these valuable shared resources. The following tools are available for interacting with performance counters: @@ -241,7 +245,7 @@ Example output of `nvidia-smi` on the `aa100` partition using [matrixMultiply.cu ### nvidia-smi on MIG-Enabled GPUs -Some A100 GPUs on our systems are MIG-enabled (Multi-Instance GPU). On these nodes, `nvidia-smi` shows a different output format, displaying information for both full GPUs and individual MIG instances. +Some GPUs on our systems are MIG-enabled (Multi-Instance GPU). On these nodes, `nvidia-smi` shows a different output format, displaying information for both full GPUs and individual MIG instances. Here's an example output from a MIG-enabled A100 node: ``` @@ -370,7 +374,7 @@ NVIDIA Nsight Compute is a command-line CUDA kernel profiler that provides detai ### Why do these metrics matter? -Modern GPUs, such as the NVIDIA A100, have hundreds of compute units (Streaming Multiprocessors or SMs). To fully exploit this parallel architecture, your kernel must be configured to launch enough threads and blocks to keep these units busy. +Modern GPUs have hundreds of compute units (Streaming Multiprocessors or SMs). To fully exploit this parallel architecture, your kernel must be configured to launch enough threads and blocks to keep these units busy. Key Features: @@ -386,6 +390,10 @@ Collecting performance data using `ncu` can incur significant runtime overhead. ### Getting Started +```{attention} +`ncu` is not compatible with MIG-enabled GPUs. Ensure you run `ncu` only on GPU nodes without MIG. +``` + To use `ncu`, first load the appropriate CUDA module: ``` @@ -406,9 +414,6 @@ $ ncu --set full --target-processes all ./vectorAdd - `--target-processes all`: Profiles all child processes (useful for multi-threaded applications). -```{note} -`ncu` is not compatible with MIG-enabled GPUs. Ensure you run `ncu` only on A100 nodes without MIG. -``` ::::{dropdown} Click here to view the full `ncu` report :icon: note @@ -1154,4 +1159,4 @@ Time (%) Total Time (ns) Num Calls Name This output means that most of the runtime was spent in system calls like `poll` and `ioctl`, which are unrelated to the kernel execution. This suggests the application is not compute-bound, and system overhead is prominent due to the small workload. ```` -````` \ No newline at end of file +````` diff --git a/docs/software/alphafold.md b/docs/software/alphafold.md index 05f9e29c..6eb17c51 100644 --- a/docs/software/alphafold.md +++ b/docs/software/alphafold.md @@ -10,6 +10,10 @@ AlphaFold is a program that predicts the three-dimensional structure of proteins ````{tab-item} AlphaFold 2 :sync: batch-scripting-ex1 +```{attention} +AlphaFold 2 is supported on A100 and L40 GPUs, but **not on H200 and RTX Pro 6000 GPUs**. +``` + Load the default AlphaFold 2 module: ``` module load alphafold/2.3.1 @@ -86,9 +90,14 @@ AlphaFold 3 has a substantially updated diffusion-based architecture that is cap On CURC’s Alpine system, AlphaFold 3 is available as a containerized module. It uses Apptainer/Singularity under the hood and is fully self-contained except for the separately downloaded model parameters (required). #### AlphaFold 3 Module +```{attention} +AlphaFold 3 versions 3.0.0 and 3.0.1 are supported on A100, L40, and H200 GPUs, but **not on RTX Pro 6000 GPUs**. +AlphaFold 3 version 3.0.3 is supported on **all NVIDIA GPU types** on Alpine. +``` + Load AlphaFold 3 module: ``` -module load alphafold/3.0.0 +module load alphafold/3.0.3 ``` View run options: ``` @@ -103,7 +112,7 @@ Loading the AlphaFold 3 module does the following: - redirects temporary files to `/scratch/alpine/$USER` - you can override this path by resetting TMPDIR *after* you load the module: ``` - module load alphafold/3.0.0 + module load alphafold/3.0.3 export TMPDIR= ``` - creates a shortcut to the AlphaFold 3 script so you can run the program with `run_alphafold` @@ -137,7 +146,7 @@ To better utilize limited GPU resources, these stages can be split using flags: - `--norun_data_pipeline` → Run only the inference step (Stage 2) #### AlphaFold 3 Examples -Example input files and scripts are in `/curc/sw/install/bio/alphafold/3.0.0/examples`. +Example input files and scripts are in `/curc/sw/install/bio/alphafold/3.0.3/examples`. Loading the AlphaFold 3 module stores this path in `AF3_EXAMPLES`: ``` ls $AF3_EXAMPLES @@ -152,7 +161,7 @@ You can copy the examples folder to a location where you have write permissions ```bash cd /projects/$USER -cp -R /curc/sw/install/bio/alphafold/3.0.0/examples . +cp -R /curc/sw/install/bio/alphafold/3.0.3/examples . cd examples ``` @@ -175,7 +184,7 @@ Path of the script: `$AF3_EXAMPLES/alphafold3_alpine.sh` # Load the AlphaFold 3 module module purge -module load alphafold/3.0.0 +module load alphafold/3.0.3 # Set input JSON, output directory, and model parameter path export INPUT_FILE=$AF3_EXAMPLES/fold_protein_2PV7/alphafold_input.json @@ -186,4 +195,4 @@ export AF3_MODEL_PARAMETERS_DIR=/path/to/alphafold3/params run_alphafold --json_path=$INPUT_FILE --output_dir=$OUTPUT_DIR --model_dir=$AF3_MODEL_PARAMETERS_DIR ``` ```` -````` \ No newline at end of file +````` diff --git a/docs/software/matlab.md b/docs/software/matlab.md index fcd26786..85e75ef2 100644 --- a/docs/software/matlab.md +++ b/docs/software/matlab.md @@ -5,6 +5,12 @@ resources. In this tutorial we will learn how to run Matlab on these resources. The tutorial assumes you are familiar with Matlab and basic Linux terminal commands. +```{attention} +If you are running on **A100, L40, or H200 GPUs**, use Matlab R2025b. + +If you are running on an **RTX Pro 6000 GPU**, use Matlab R2025b_FC to ensure forward compatibility with the GPU compute capability. Future versions of Matlab are anticipated to work on all GPUs without needing a forward compatibility module. +``` + There are two basic ways to run Matlab (or many other kinds of software) on RC resources. The first is through an interactive job, and the second is through a batch job. An interactive job allows one