Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
50 changes: 48 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,53 @@ This repository contains materials for the tutorial:

For the in-person version of this tutorial we will use [NVIDIA Brev](https://brev.nvidia.com/)

#### Content
### Content

| module | Link |
<!-- TODO: update links to full GitHub URLs once the repo is public -->
| Module | Link |
| --- | --- |
| 1 - Setup Brev | [1-setup.md](1-setup.md) |
| 2 - Setting Up Your GPU Python Environment | [2-environments.md](2-environments.md) |
| 3 - Verifying Your Environment with the RAPIDS CLI | [3-rapids-cli-verify-env.md](3-rapids-cli-verify-env.md) |
| 4 - Easy GPU Acceleration Wins with RAPIDS Accelerators | [4-acceleration-examples.md](4-acceleration-examples.md) |
| 5 - Monitoring and Debugging GPU Python Workloads | [5-monitoring-and-debugging.md](5-monitoring-and-debugging.md) |

### 1-Setup Brev

- Covers how to get access to a cloud GPU using [NVIDIA Brev](https://brev.nvidia.com).
- Walks through launching a VM (choosing GPU type, provider, and deploying).
- Explains how to connect to the VM via SSH using the `brev` CLI on macOS, Linux, and Windows.

### 2-Setting Up Your GPU Python Environment

- Guides users through installing Python packages for GPU workloads.
- Supports three package managers: `uv`/`pip`, `conda`, and `pixi` via config files (`pyproject.toml`, `environment.yaml`, `pixi.toml`) to manage dependencies— pick one and follow that path.
- Covers checking for core CUDA libraries and creating isolated, reproducible environments.

### 3-Verifying Your Environment with the RAPIDS CLI

- Introduces two commands to validate a GPU environment after setup: `rapids doctor` and `rapids debug`.
- `rapids doctor` runs health checks on the driver, CUDA toolkit, GPU compute capability, and NVLink.
- Failed checks return actionable messages explaining how to fix the issue.
- Showcases how libraries can register their own checks, using `cuml` as an example.
- `rapids debug` produces a full snapshot of driver versions, installed packages, and build tools.
- `rapids debug --json` outputs a machine-readable version, useful for bug reports and sharing environment state.

### 4-Easy GPU Acceleration Wins with RAPIDS Accelerators

- Shows how to get GPU speedups on existing Python code with zero rewrites.
- Shows how to use the accelerators via command line and in notebooks.
- Discusses built-in `--profile` and `--line-profile` flags show which operations ran on the GPU vs. CPU.
- Introduces JupyterLab NVDashboard GPU Accelerators toggle that enables the same zero-code acceleration interactively in notebooks.

### 5-Monitoring and Debugging GPU Python Workloads

- A hands-on diagnostic guide for when GPU code runs but doesn't deliver the expected speedup.
- Covers a progression of tools, each answering a different question about what the GPU is doing.
- `nvidia-smi` and `nvtop` confirm driver-level visibility and live GPU utilization.
- `cProfile` + `SnakeViz` identify CPU-side bottlenecks before any GPU work begins.
- Nsight Systems (`nsys`) produces a full CPU/GPU timeline showing transfers, kernel launches, and idle gaps.
- Uses a real climate data workload (`xarray` EOF analysis) to walk through two common pitfalls:
- Moving data back to the CPU before the expensive operation.
- Naively porting a Python loop to the GPU, causing thousands of tiny kernel launches.
- Shows how to identify and fix both issues using profiler output and CUDA timeline traces.
Loading