mcpbeat Sign in

Accelerated Computing Cudf Agent Skill

Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV/Parquet I/O, nullable semantics, and multi-GPU DataFrame workloads.

33k tokens
context cost
the whole folder, loaded on every use
34
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
2778
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/NVIDIA/skills --skill accelerated-computing-cudf

What comes with it

123 703 bytes besides the instruction
BENCHMARK.md
evals/evals.json
evals/files/cudf-apply-udf/code/generate_data.py
evals/files/cudf-apply-udf/code/udf_pipeline.py
evals/files/cudf-csv-etl/code/etl_pipeline.py
evals/files/cudf-csv-etl/code/generate_data.py
evals/files/cudf-groupby-agg/code/generate_data.py
evals/files/cudf-groupby-agg/code/groupby_analysis.py
evals/files/cudf-multi-join/code/generate_data.py
evals/files/cudf-multi-join/code/multi_join.py
evals/files/cudf-native-stream-handoff-boundary/NOTICE.md
evals/files/cudf-native-stream-handoff-boundary/code/run_smoke.sh
evals/files/cudf-native-stream-handoff-boundary/code/threaded_handoff.cu
evals/files/cudf-null-handling/code/generate_data.py
evals/files/cudf-null-handling/code/null_pipeline.py
evals/files/cudf-parquet-io/code/generate_data.py
evals/files/cudf-parquet-io/code/parquet_pipeline.py
evals/files/cudf-pivot-melt/code/generate_data.py
evals/files/cudf-pivot-melt/code/reshape_analysis.py
evals/files/cudf-string-ops/code/clean_contacts.py
evals/files/cudf-string-ops/code/generate_data.py
evals/files/cudf-timeseries-resample/code/generate_data.py
evals/files/cudf-timeseries-resample/code/timeseries_analysis.py
evals/files/cudf-window-functions/code/generate_data.py
evals/files/cudf-window-functions/code/window_analysis.py
evals/files/negative-deep-learning-training/code/train.py
evals/files/source-cudf-null-fillna-semantics/NOTICE.md
evals/files/source-cudf-null-fillna-semantics/code/null_cleanup.py
references/api-patterns.md
references/cudf-pandas-accelerator.md
references/dask-cudf-patterns.md
skill-card.md
skill.oms.sig

What it tells the agent to use

found in the instruction text
WebFetch fetches pages from the network

The instruction itself

14 sections, as written by the author

cuDF & dask-cuDF Implementer's Guide

Compatibility

  • Release tracked by this skill: 26.04.
  • Requires NVIDIA Volta or newer on CUDA 12, or Turing or newer on CUDA 13. Release 26.04 supports CUDA 12.2-12.9 with driver 535+ or CUDA 13.0-13.1 with driver 580+, and Python 3.11-3.14. cuDF sweet spot: >100K rows.

Naming

Use NVIDIA library-first wording in user-facing answers. Keep literal RAPIDS/rapidsai URLs, package names, and release metadata when citing sources.

Role

You are a cuDF expert helping an implementer work with GPU DataFrames. The user understands pandas and their data — your job is to get them to correct, fast GPU code with minimal friction. Choose the path from the user's intent: cudf.pandas for broad compatibility or minimal-change acceleration, explicit cuDF for named DataFrame migrations, hot ETL paths, and parity-sensitive work. Treat source schema, row counts, null placement, ordering, and numeric tolerances as user-visible behavior.

Critical Rules

  • Choose the right cuDF path. Use cudf.pandas for broad compatibility or minimal-change acceleration. Use explicit cuDF when the user asks to migrate DataFrame code, inspect parity, optimize a visible ETL hot path, or control unsupported operations.
  • Size gate: 100K rows minimum. Below that, GPU transfer overhead usually beats the speedup; use small data for correctness and benchmark larger working sets for performance.
  • Keep conversions at boundaries. Use .to_pandas(), .values, or .numpy() for display, plotting, CPU-only libraries, or final output boundaries. Keep intermediate ETL data on GPU.
  • Float32 is your friend. cuDF operations on float64 are slower; cast early when precision allows.
  • Validate semantics on representative slices. For null handling, joins, time series, reshape, or grouped logic, keep a small pandas reference path and compare shape, labels, null counts, ordering, and representative values before claiming parity.
  • For data > GPU memory, move to dask-cuDF with enable_cudf_spill=True. See references/dask-cudf-patterns.md.

Three Paths to GPU DataFrames

Path 1: cudf.pandas Accelerator (Compatibility / Minimal Change)

Use when the user needs a small code change, third-party pandas compatibility,

or one code path that can keep running while unsupported operations fall back.

Jupyter/IPython:

%load_ext cudf.pandas
import pandas as pd   # now GPU-backed; falls back silently for unsupported ops

Script:

python -m cudf.pandas my_script.py

With multiprocessing:

import cudf.pandas
cudf.pandas.install()   # must come BEFORE pandas import, before Pool creation
from multiprocessing import Pool

Confirm acceleration with the cudf.pandas profiler before claiming speedup.

For notebook, CLI, and stats examples, read

references/cudf-pandas-accelerator.md. If the profile shows the hot path

running on CPU, use Path 2 for explicit cuDF control.

Path 2: Explicit cuDF API

For full control, hot-path optimization, named DataFrame migrations, and

parity-sensitive operations:

import cudf

# Read data directly to GPU
df = cudf.read_parquet("data.parquet")

# Operations mirror pandas
result = df.groupby("key")["value"].sum()
merged = df.merge(lookup, on="id", how="left")
filtered = df[df["amount"] > 1000]

# String operations
df["clean"] = df["name"].str.strip().str.lower()

# To check API coverage before committing to migration:
# See references/api-patterns.md for known gaps and workarounds

Keep data on GPU end-to-end. Only call .to_pandas() at the very end for display or CPU or non-GPU handoff.

Prefer explicit cuDF for tasks involving read_csv/read_parquet, joins,

groupby, reshape, nullable types, fillna/where, time buckets, rolling

windows, or CPU/GPU parity checks. Add a small CPU/GPU validation path when

semantics matter instead of relying on successful execution alone.

For pandas code with null handling, reshape, or time-series behavior, read

references/api-patterns.md for the relevant semantic checklist before

rewriting. A cudf.pandas bootstrap is enough for a minimal-change request; an

implementation request should make the hot path explicit and observable.

For reshape-heavy pandas code (pivot_table, melt, stack/unstack,

crosstab), keep the source schema as part of the contract: index labels,

column labels or levels, fill_value, aggfunc, margins, and normalization.

Use explicit cuDF where the equivalent is supported; use cudf.pandas or a

narrow compatibility boundary when exact pandas reshape semantics matter more

than rewriting every operation. Add a small pandas-reference parity check for

shape, labels, and representative values before finalizing. See

references/api-patterns.md.

Path 3: dask-cuDF (Multi-GPU / Large Data)

When dataset exceeds GPU memory. See references/dask-cudf-patterns.md for full patterns.

from dask_cuda import LocalCUDACluster
from dask.distributed import Client
import dask_cudf

cluster = LocalCUDACluster(enable_cudf_spill=True)  # one worker per GPU
client = Client(cluster)

ddf = dask_cudf.read_parquet("s3://bucket/data/*.parquet")
result = ddf.groupby("key").agg({"value": "sum"}).compute()

Memory Management

Enable spill before OOM happens (not after):

import cudf
cudf.set_option("spill", True)   # spill to host RAM when GPU is full

RMM pool allocator (reduces cudaMalloc overhead in pipelines with many allocations):

import rmm
rmm.set_current_device_resource(rmm.mr.CudaAsyncMemoryResource())
# Must be called BEFORE any cuDF operations

| GPU Free vs Dataset | Strategy |

|---|---|

| Free > 2× dataset | Single GPU cuDF |

| Free 1–2× dataset | cuDF + cudf.set_option("spill", True) |

| Dataset > GPU mem | dask-cuDF |

| Dataset > node mem | dask-cuDF + multi-node (see accelerated-computing-mpf) |

Troubleshooting

No speedup vs pandas:

  • Data < 100K rows? GPU overhead dominates, so treat the run as correctness validation and measure speedup on a larger working set.
  • Run %%cudf.pandas.profile — high CPU % means many fallbacks. Identify and fix those ops.
  • Check references/api-patterns.md for known gaps.

OOM (CUDA out of memory):

  • Enable spill: cudf.set_option("spill", True)
  • If allocator fragmentation or repeated allocation overhead is visible, use the accelerated-computing-rmm memory-resource setup guidance before GPU allocations
  • Still failing: move to dask-cuDF

AttributeError / NotImplementedError:

  • Check references/api-patterns.md for the specific operation
  • Keep that one operation on CPU at a narrow boundary and continue the supported pipeline on GPU
  • Use .to_pandas() only for the unsupported op, then .from_pandas() back

Wrong results vs pandas:

  • Null/NaN handling differs: cuDF uses <NA> (nullable) by default, pandas uses NaN. See references/api-patterns.md.
  • Sort stability: cuDF sort is not guaranteed stable unless stable=True is passed
  • If the difference is due to floating point differences, try casting to higher precision floats (e.g. float64 instead of float32). If the results are still different, stop. GPU and CPU algorithms will always produce different results on floating point numbers due to the non-associativity of floating point arithmetic and that cannot be fixed.

Nullable and Fill Semantics

When the user explicitly cares about pandas nullable dtypes, fillna,

where/mask, or grouped null behavior, treat parity checks as part of the

implementation. See references/api-patterns.md for nullable dtype examples.

  • Preserve nullable integer/string columns instead of filling them with sentinel

values unless the source code already did that.

  • Keep where/mask semantics when they encode a condition. Use broad

fillna only when the condition is exactly null-only.

  • Compare with to_pandas(nullable=True) when the pandas reference uses

nullable extension dtypes.

  • Put the parity check in a reusable helper next to the GPU path, so future

changes exercise the same nullable conversion and aggregation checks.

  • Validate row counts, null counts, mask truth tables, grouped aggregates, and

representative dtypes before claiming semantic parity.

Reference Files

  • references/cudf-pandas-accelerator.md — Profiling, fallback detection, cudf.pandas deep dive
  • references/api-patterns.md — Known API gaps, workarounds, semantic differences
  • references/dask-cudf-patterns.md — Multi-GPU patterns, best practices, partition tuning

External Documentation

Use WebFetch to retrieve detailed API signatures, parameter descriptions, and examples on demand.

  • cuDF Documentation: https://docs.rapids.ai/api/cudf/stable/
  • dask-cuDF API Reference: https://docs.rapids.ai/api/dask-cudf/stable/api/
  • GitHub: https://github.com/rapidsai/cudf
  • CHANGELOG: https://github.com/rapidsai/cudf/blob/main/CHANGELOG.md

Other skills for the same job

different authors, same section of the catalogue
XLSX
by anthropics
vendor ×15

Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas

5k tokens scripts
XLSX
by w95
×7

Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like \"the xlsx in my downloads\") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.

3k tokens
Raffle Winner Picker
by frostant
×5

Picks random winners from lists, spreadsheets, or Google Sheets for giveaways, raffles, and contests. Ensures fair, unbiased selection with transparency.

949 tokens
Fda Database
by christophacham
×4

Query openFDA API for drugs, devices, adverse events, recalls, regulatory submissions (510k, PMA), substance identification (UNII), for FDA regulatory data analysis and safety research.

32k tokens scripts
Matlab
by christophacham
×4

MATLAB and GNU Octave numerical computing for matrix operations, data analysis, visualization, and scientific computing. Use when writing MATLAB/Octave scripts for linear algebra, signal processing, image processing, differential equations, optimization, statistics, or creating scientific visualizations. Also use when the user needs help with MATLAB syntax, functions, or wants to convert between MATLAB and Python code. Scripts can be executed with MATLAB or the open-source GNU Octave interpreter.

25k tokens
Umap Learn
by ComeOnOliver
×4

UMAP dimensionality reduction. Fast nonlinear manifold learning for 2D/3D visualization, clustering preprocessing (HDBSCAN), supervised/parametric UMAP, for high-dimensional data.

14k tokens
D3 Viz
by chrisvoncsefalvay
×3

Creating interactive data visualisations using d3.js. This skill should be used when creating custom charts, graphs, network diagrams, geographic visualisations, or any complex SVG-based data visualisation that requires fine-grained control over visual elements, transitions, or interactions. Use this for bespoke visualisations beyond standard charting libraries, whether in React, Vue, Svelte, vanilla JavaScript, or any other environment.

20k tokens
Alphafold Database
by christophacham
×3

Access AlphaFold 200M+ AI-predicted protein structures. Retrieve structures by UniProt ID, download PDB/mmCIF files, analyze confidence metrics (pLDDT, PAE), for drug discovery and structural biology.

7k tokens

How to use it

Copy the folder

Take nvidia/accelerated-computing-cudf from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.