[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-udf-benchmark":3,"mdc--sht3c4-key":37,"related-org-nvidia-udf-benchmark":546,"related-repo-nvidia-udf-benchmark":707},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":32,"sourceUrl":35,"mdContent":36},"udf-benchmark","benchmark Spark UDF performance on GPU","Assists with benchmarking and profiling the performance of an Apache Spark UDF on the GPU. This is step 3 of 3 in the UDF conversion workflow (udf-gen-test -> udf-convert-to-* -> udf-benchmark). Use this skill when you have a CPU UDF and a RapidsUDF or SQL implementation, and need to benchmark the performance of the CPU UDF against the GPU implementation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19,20],{"name":13,"slug":14,"type":15},"Performance","performance","tag",{"name":17,"slug":18,"type":15},"Benchmarking","benchmarking",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Spark","spark",987,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcudf-spark","2026-07-14T05:30:56.546112","CC-BY-4.0 AND Apache-2.0",289,[29,30,31,22],"big-data","gpu","rapids",{"repoUrl":24,"stars":23,"forks":27,"topics":33,"description":34},[29,30,31,22],"Spark RAPIDS plugin - accelerate Apache Spark with GPUs","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcudf-spark\u002Ftree\u002FHEAD\u002Fskills\u002Fudf-benchmark","---\nname: udf-benchmark\ndescription: Assists with benchmarking and profiling the performance of an Apache Spark UDF on the GPU. This is step 3 of 3 in the UDF conversion workflow (udf-gen-test -> udf-convert-to-* -> udf-benchmark). Use this skill when you have a CPU UDF and a RapidsUDF or SQL implementation, and need to benchmark the performance of the CPU UDF against the GPU implementation.\nlicense: CC-BY-4.0 AND Apache-2.0\nmetadata:\n  spdx-file-copyright-text: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\nmodel: inherit\n---\n\n# UDF Benchmark\n\n## Workflow\n\n- [ ] Step 1: Implement BenchUtils (fill in TODO methods)\n- [ ] Step 2: Validate with a small dataset\n- [ ] Step 3: Generate full benchmark data and run benchmarks\n- [ ] Step 4: cuDF microbenchmarks (skip for SQL targets)\n\n**Before making any edits, create a visible TODO checklist for every workflow step in this skill and keep it updated.** Do not produce a final answer until every required checklist item is marked complete.\n\n## Prerequisites\n\n- Project directory from Steps 1-2 (udf-gen-test, udf-convert-to-*) with passing tests\n\nDerive `\u003CCamelName>` and `\u003Csnake_name>` from the UDF class name.\n\n> **Note:** Commands require access to `\u002Ftmp` (Spark temp storage) and `\u002Fdev` (GPU device). If commands fail due to sandbox restrictions, re-run them unsandboxed.\n\n## Step 1: Implement BenchUtils\n\nRead `src\u002Fmain\u002Fscala\u002Fcom\u002Fudf\u002Fbench\u002FBenchUtils.scala`. Replace placeholders with the actual camel\u002Fsnake UDF name.\n\nFill in the TODO methods following the docstrings. For variable-length inputs, generate sizable rows representative of enterprise-scale data. Refer to the unit test for schema and example data.\n\n## Step 2: Validate\n\nMake scripts executable:\n```bash\nchmod +x *.sh\n```\n\nRun validation mode to test with a small dataset:\n```bash\n.\u002Frun_gen_data.sh --rows 1000 --validate\n```\n\nThis runs both the CPU and GPU implementations on the dataset.\nIf validation fails, analyze the error and fix the BenchUtils implementation.\n\n## Step 3: Generate Data and Run Benchmarks\n\nThe scripts set the default heap size to 16g in `.mvn\u002Fjvm.config`; adjust depending on data size.\n\n### Generate benchmark data (10M rows):\n```bash\n.\u002Frun_gen_data.sh --rows 10000000\n```\n\n### Run benchmarks:\n```bash\n# CPU benchmark\n.\u002Frun_spark_benchmark.sh --mode cpu --data-path data\u002Fbench_data_10000000_rows.parquet\n\n# GPU benchmark\n.\u002Frun_spark_benchmark.sh --mode gpu --data-path data\u002Fbench_data_10000000_rows.parquet\n```\n\nResults are saved to the `results\u002F` directory as JSON files.\n\n## Step 4: cuDF Microbenchmarks\n\n> Skip this step for SQL targets. This only applies to cuDF RapidsUDF conversions.\n\nFollow [CUDF_MICROBENCHMARKS.md](CUDF_MICROBENCHMARKS.md) to implement and run in-memory microbenchmarks.\n\n## Output\n\nUpon successful completion:\n- Benchmark utilities: `src\u002Fmain\u002Fscala\u002Fcom\u002Fudf\u002Fbench\u002FBenchUtils.scala`\n- Microbenchmarks (cuDF): `src\u002Fmain\u002Fscala\u002Fcom\u002Fudf\u002Fbench\u002FMicroBenchRunner.scala`\n- Generated data: `data\u002F`\n- Benchmark results: `results\u002F`\n",{"data":38,"body":42},{"name":4,"description":6,"license":26,"metadata":39,"model":41},{"spdx-file-copyright-text":40},"Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.","inherit",{"type":43,"children":44},"root",[45,53,60,107,119,125,133,155,185,191,204,209,215,220,260,265,296,301,307,320,327,350,356,444,457,463,471,484,490,495,540],{"type":46,"tag":47,"props":48,"children":49},"element","h1",{"id":4},[50],{"type":51,"value":52},"text","UDF Benchmark",{"type":46,"tag":54,"props":55,"children":57},"h2",{"id":56},"workflow",[58],{"type":51,"value":59},"Workflow",{"type":46,"tag":61,"props":62,"children":65},"ul",{"className":63},[64],"contains-task-list",[66,80,89,98],{"type":46,"tag":67,"props":68,"children":71},"li",{"className":69},[70],"task-list-item",[72,78],{"type":46,"tag":73,"props":74,"children":77},"input",{"disabled":75,"type":76},true,"checkbox",[],{"type":51,"value":79}," Step 1: Implement BenchUtils (fill in TODO methods)",{"type":46,"tag":67,"props":81,"children":83},{"className":82},[70],[84,87],{"type":46,"tag":73,"props":85,"children":86},{"disabled":75,"type":76},[],{"type":51,"value":88}," Step 2: Validate with a small dataset",{"type":46,"tag":67,"props":90,"children":92},{"className":91},[70],[93,96],{"type":46,"tag":73,"props":94,"children":95},{"disabled":75,"type":76},[],{"type":51,"value":97}," Step 3: Generate full benchmark data and run benchmarks",{"type":46,"tag":67,"props":99,"children":101},{"className":100},[70],[102,105],{"type":46,"tag":73,"props":103,"children":104},{"disabled":75,"type":76},[],{"type":51,"value":106}," Step 4: cuDF microbenchmarks (skip for SQL targets)",{"type":46,"tag":108,"props":109,"children":110},"p",{},[111,117],{"type":46,"tag":112,"props":113,"children":114},"strong",{},[115],{"type":51,"value":116},"Before making any edits, create a visible TODO checklist for every workflow step in this skill and keep it updated.",{"type":51,"value":118}," Do not produce a final answer until every required checklist item is marked complete.",{"type":46,"tag":54,"props":120,"children":122},{"id":121},"prerequisites",[123],{"type":51,"value":124},"Prerequisites",{"type":46,"tag":61,"props":126,"children":127},{},[128],{"type":46,"tag":67,"props":129,"children":130},{},[131],{"type":51,"value":132},"Project directory from Steps 1-2 (udf-gen-test, udf-convert-to-*) with passing tests",{"type":46,"tag":108,"props":134,"children":135},{},[136,138,145,147,153],{"type":51,"value":137},"Derive ",{"type":46,"tag":139,"props":140,"children":142},"code",{"className":141},[],[143],{"type":51,"value":144},"\u003CCamelName>",{"type":51,"value":146}," and ",{"type":46,"tag":139,"props":148,"children":150},{"className":149},[],[151],{"type":51,"value":152},"\u003Csnake_name>",{"type":51,"value":154}," from the UDF class name.",{"type":46,"tag":156,"props":157,"children":158},"blockquote",{},[159],{"type":46,"tag":108,"props":160,"children":161},{},[162,167,169,175,177,183],{"type":46,"tag":112,"props":163,"children":164},{},[165],{"type":51,"value":166},"Note:",{"type":51,"value":168}," Commands require access to ",{"type":46,"tag":139,"props":170,"children":172},{"className":171},[],[173],{"type":51,"value":174},"\u002Ftmp",{"type":51,"value":176}," (Spark temp storage) and ",{"type":46,"tag":139,"props":178,"children":180},{"className":179},[],[181],{"type":51,"value":182},"\u002Fdev",{"type":51,"value":184}," (GPU device). If commands fail due to sandbox restrictions, re-run them unsandboxed.",{"type":46,"tag":54,"props":186,"children":188},{"id":187},"step-1-implement-benchutils",[189],{"type":51,"value":190},"Step 1: Implement BenchUtils",{"type":46,"tag":108,"props":192,"children":193},{},[194,196,202],{"type":51,"value":195},"Read ",{"type":46,"tag":139,"props":197,"children":199},{"className":198},[],[200],{"type":51,"value":201},"src\u002Fmain\u002Fscala\u002Fcom\u002Fudf\u002Fbench\u002FBenchUtils.scala",{"type":51,"value":203},". Replace placeholders with the actual camel\u002Fsnake UDF name.",{"type":46,"tag":108,"props":205,"children":206},{},[207],{"type":51,"value":208},"Fill in the TODO methods following the docstrings. For variable-length inputs, generate sizable rows representative of enterprise-scale data. Refer to the unit test for schema and example data.",{"type":46,"tag":54,"props":210,"children":212},{"id":211},"step-2-validate",[213],{"type":51,"value":214},"Step 2: Validate",{"type":46,"tag":108,"props":216,"children":217},{},[218],{"type":51,"value":219},"Make scripts executable:",{"type":46,"tag":221,"props":222,"children":227},"pre",{"className":223,"code":224,"language":225,"meta":226,"style":226},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","chmod +x *.sh\n","bash","",[228],{"type":46,"tag":139,"props":229,"children":230},{"__ignoreMap":226},[231],{"type":46,"tag":232,"props":233,"children":236},"span",{"class":234,"line":235},"line",1,[237,243,249,255],{"type":46,"tag":232,"props":238,"children":240},{"style":239},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[241],{"type":51,"value":242},"chmod",{"type":46,"tag":232,"props":244,"children":246},{"style":245},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[247],{"type":51,"value":248}," +x",{"type":46,"tag":232,"props":250,"children":252},{"style":251},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[253],{"type":51,"value":254}," *",{"type":46,"tag":232,"props":256,"children":257},{"style":245},[258],{"type":51,"value":259},".sh\n",{"type":46,"tag":108,"props":261,"children":262},{},[263],{"type":51,"value":264},"Run validation mode to test with a small dataset:",{"type":46,"tag":221,"props":266,"children":268},{"className":223,"code":267,"language":225,"meta":226,"style":226},".\u002Frun_gen_data.sh --rows 1000 --validate\n",[269],{"type":46,"tag":139,"props":270,"children":271},{"__ignoreMap":226},[272],{"type":46,"tag":232,"props":273,"children":274},{"class":234,"line":235},[275,280,285,291],{"type":46,"tag":232,"props":276,"children":277},{"style":239},[278],{"type":51,"value":279},".\u002Frun_gen_data.sh",{"type":46,"tag":232,"props":281,"children":282},{"style":245},[283],{"type":51,"value":284}," --rows",{"type":46,"tag":232,"props":286,"children":288},{"style":287},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[289],{"type":51,"value":290}," 1000",{"type":46,"tag":232,"props":292,"children":293},{"style":245},[294],{"type":51,"value":295}," --validate\n",{"type":46,"tag":108,"props":297,"children":298},{},[299],{"type":51,"value":300},"This runs both the CPU and GPU implementations on the dataset.\nIf validation fails, analyze the error and fix the BenchUtils implementation.",{"type":46,"tag":54,"props":302,"children":304},{"id":303},"step-3-generate-data-and-run-benchmarks",[305],{"type":51,"value":306},"Step 3: Generate Data and Run Benchmarks",{"type":46,"tag":108,"props":308,"children":309},{},[310,312,318],{"type":51,"value":311},"The scripts set the default heap size to 16g in ",{"type":46,"tag":139,"props":313,"children":315},{"className":314},[],[316],{"type":51,"value":317},".mvn\u002Fjvm.config",{"type":51,"value":319},"; adjust depending on data size.",{"type":46,"tag":321,"props":322,"children":324},"h3",{"id":323},"generate-benchmark-data-10m-rows",[325],{"type":51,"value":326},"Generate benchmark data (10M rows):",{"type":46,"tag":221,"props":328,"children":330},{"className":223,"code":329,"language":225,"meta":226,"style":226},".\u002Frun_gen_data.sh --rows 10000000\n",[331],{"type":46,"tag":139,"props":332,"children":333},{"__ignoreMap":226},[334],{"type":46,"tag":232,"props":335,"children":336},{"class":234,"line":235},[337,341,345],{"type":46,"tag":232,"props":338,"children":339},{"style":239},[340],{"type":51,"value":279},{"type":46,"tag":232,"props":342,"children":343},{"style":245},[344],{"type":51,"value":284},{"type":46,"tag":232,"props":346,"children":347},{"style":287},[348],{"type":51,"value":349}," 10000000\n",{"type":46,"tag":321,"props":351,"children":353},{"id":352},"run-benchmarks",[354],{"type":51,"value":355},"Run benchmarks:",{"type":46,"tag":221,"props":357,"children":359},{"className":223,"code":358,"language":225,"meta":226,"style":226},"# CPU benchmark\n.\u002Frun_spark_benchmark.sh --mode cpu --data-path data\u002Fbench_data_10000000_rows.parquet\n\n# GPU benchmark\n.\u002Frun_spark_benchmark.sh --mode gpu --data-path data\u002Fbench_data_10000000_rows.parquet\n",[360],{"type":46,"tag":139,"props":361,"children":362},{"__ignoreMap":226},[363,372,401,410,419],{"type":46,"tag":232,"props":364,"children":365},{"class":234,"line":235},[366],{"type":46,"tag":232,"props":367,"children":369},{"style":368},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[370],{"type":51,"value":371},"# CPU benchmark\n",{"type":46,"tag":232,"props":373,"children":375},{"class":234,"line":374},2,[376,381,386,391,396],{"type":46,"tag":232,"props":377,"children":378},{"style":239},[379],{"type":51,"value":380},".\u002Frun_spark_benchmark.sh",{"type":46,"tag":232,"props":382,"children":383},{"style":245},[384],{"type":51,"value":385}," --mode",{"type":46,"tag":232,"props":387,"children":388},{"style":245},[389],{"type":51,"value":390}," cpu",{"type":46,"tag":232,"props":392,"children":393},{"style":245},[394],{"type":51,"value":395}," --data-path",{"type":46,"tag":232,"props":397,"children":398},{"style":245},[399],{"type":51,"value":400}," data\u002Fbench_data_10000000_rows.parquet\n",{"type":46,"tag":232,"props":402,"children":404},{"class":234,"line":403},3,[405],{"type":46,"tag":232,"props":406,"children":407},{"emptyLinePlaceholder":75},[408],{"type":51,"value":409},"\n",{"type":46,"tag":232,"props":411,"children":413},{"class":234,"line":412},4,[414],{"type":46,"tag":232,"props":415,"children":416},{"style":368},[417],{"type":51,"value":418},"# GPU benchmark\n",{"type":46,"tag":232,"props":420,"children":422},{"class":234,"line":421},5,[423,427,431,436,440],{"type":46,"tag":232,"props":424,"children":425},{"style":239},[426],{"type":51,"value":380},{"type":46,"tag":232,"props":428,"children":429},{"style":245},[430],{"type":51,"value":385},{"type":46,"tag":232,"props":432,"children":433},{"style":245},[434],{"type":51,"value":435}," gpu",{"type":46,"tag":232,"props":437,"children":438},{"style":245},[439],{"type":51,"value":395},{"type":46,"tag":232,"props":441,"children":442},{"style":245},[443],{"type":51,"value":400},{"type":46,"tag":108,"props":445,"children":446},{},[447,449,455],{"type":51,"value":448},"Results are saved to the ",{"type":46,"tag":139,"props":450,"children":452},{"className":451},[],[453],{"type":51,"value":454},"results\u002F",{"type":51,"value":456}," directory as JSON files.",{"type":46,"tag":54,"props":458,"children":460},{"id":459},"step-4-cudf-microbenchmarks",[461],{"type":51,"value":462},"Step 4: cuDF Microbenchmarks",{"type":46,"tag":156,"props":464,"children":465},{},[466],{"type":46,"tag":108,"props":467,"children":468},{},[469],{"type":51,"value":470},"Skip this step for SQL targets. This only applies to cuDF RapidsUDF conversions.",{"type":46,"tag":108,"props":472,"children":473},{},[474,476,482],{"type":51,"value":475},"Follow ",{"type":46,"tag":477,"props":478,"children":480},"a",{"href":479},"CUDF_MICROBENCHMARKS.md",[481],{"type":51,"value":479},{"type":51,"value":483}," to implement and run in-memory microbenchmarks.",{"type":46,"tag":54,"props":485,"children":487},{"id":486},"output",[488],{"type":51,"value":489},"Output",{"type":46,"tag":108,"props":491,"children":492},{},[493],{"type":51,"value":494},"Upon successful completion:",{"type":46,"tag":61,"props":496,"children":497},{},[498,508,519,530],{"type":46,"tag":67,"props":499,"children":500},{},[501,503],{"type":51,"value":502},"Benchmark utilities: ",{"type":46,"tag":139,"props":504,"children":506},{"className":505},[],[507],{"type":51,"value":201},{"type":46,"tag":67,"props":509,"children":510},{},[511,513],{"type":51,"value":512},"Microbenchmarks (cuDF): ",{"type":46,"tag":139,"props":514,"children":516},{"className":515},[],[517],{"type":51,"value":518},"src\u002Fmain\u002Fscala\u002Fcom\u002Fudf\u002Fbench\u002FMicroBenchRunner.scala",{"type":46,"tag":67,"props":520,"children":521},{},[522,524],{"type":51,"value":523},"Generated data: ",{"type":46,"tag":139,"props":525,"children":527},{"className":526},[],[528],{"type":51,"value":529},"data\u002F",{"type":46,"tag":67,"props":531,"children":532},{},[533,535],{"type":51,"value":534},"Benchmark results: ",{"type":46,"tag":139,"props":536,"children":538},{"className":537},[],[539],{"type":51,"value":454},{"type":46,"tag":541,"props":542,"children":543},"style",{},[544],{"type":51,"value":545},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":547,"total":706},[548,566,584,595,607,621,634,648,661,672,686,695],{"slug":549,"name":549,"fn":550,"description":551,"org":552,"tags":553,"stars":563,"repoUrl":564,"updatedAt":565},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[554,557,560],{"name":555,"slug":556,"type":15},"Documentation","documentation",{"name":558,"slug":559,"type":15},"MCP","mcp",{"name":561,"slug":562,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":567,"name":567,"fn":568,"description":569,"org":570,"tags":571,"stars":581,"repoUrl":582,"updatedAt":583},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[572,575,578],{"name":573,"slug":574,"type":15},"Containers","containers",{"name":576,"slug":577,"type":15},"Deployment","deployment",{"name":579,"slug":580,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":585,"name":585,"fn":586,"description":587,"org":588,"tags":589,"stars":581,"repoUrl":582,"updatedAt":594},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[590,593],{"name":591,"slug":592,"type":15},"CI\u002FCD","ci-cd",{"name":576,"slug":577,"type":15},"2026-07-14T05:25:59.97109",{"slug":596,"name":596,"fn":597,"description":598,"org":599,"tags":600,"stars":581,"repoUrl":582,"updatedAt":606},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[601,602,603],{"name":591,"slug":592,"type":15},{"name":576,"slug":577,"type":15},{"name":604,"slug":605,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":608,"name":608,"fn":609,"description":610,"org":611,"tags":612,"stars":581,"repoUrl":582,"updatedAt":620},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[613,616,617],{"name":614,"slug":615,"type":15},"Debugging","debugging",{"name":604,"slug":605,"type":15},{"name":618,"slug":619,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":622,"name":622,"fn":623,"description":624,"org":625,"tags":626,"stars":581,"repoUrl":582,"updatedAt":633},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[627,630],{"name":628,"slug":629,"type":15},"Best Practices","best-practices",{"name":631,"slug":632,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":635,"name":635,"fn":636,"description":637,"org":638,"tags":639,"stars":581,"repoUrl":582,"updatedAt":647},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[640,643,646],{"name":641,"slug":642,"type":15},"Machine Learning","machine-learning",{"name":644,"slug":645,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":649,"name":649,"fn":650,"description":651,"org":652,"tags":653,"stars":581,"repoUrl":582,"updatedAt":660},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[654,657],{"name":655,"slug":656,"type":15},"QA","qa",{"name":658,"slug":659,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":662,"name":662,"fn":663,"description":664,"org":665,"tags":666,"stars":581,"repoUrl":582,"updatedAt":671},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[667,668],{"name":576,"slug":577,"type":15},{"name":669,"slug":670,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":673,"name":673,"fn":674,"description":675,"org":676,"tags":677,"stars":581,"repoUrl":582,"updatedAt":685},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[678,681,682],{"name":679,"slug":680,"type":15},"Code Review","code-review",{"name":604,"slug":605,"type":15},{"name":683,"slug":684,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":687,"name":687,"fn":688,"description":689,"org":690,"tags":691,"stars":581,"repoUrl":582,"updatedAt":694},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[692,693],{"name":655,"slug":656,"type":15},{"name":658,"slug":659,"type":15},"2026-07-14T05:25:54.928983",{"slug":696,"name":696,"fn":697,"description":698,"org":699,"tags":700,"stars":581,"repoUrl":582,"updatedAt":705},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[701,704],{"name":702,"slug":703,"type":15},"Automation","automation",{"name":591,"slug":592,"type":15},"2026-07-30T05:29:03.275638",496,{"items":708,"total":788},[709,716,731,742,755,766,777],{"slug":4,"name":4,"fn":5,"description":6,"org":710,"tags":711,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[712,713,714,715],{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":21,"slug":22,"type":15},{"slug":717,"name":717,"fn":718,"description":719,"org":720,"tags":721,"stars":23,"repoUrl":24,"updatedAt":730},"udf-convert-to-cuda","convert Spark UDFs to CUDA RapidsUDFs","Assists with converting a non-aggregating Apache Spark UDF to a native CUDA RapidsUDF using JNI and libcudf. This is step 2 of 3 in the UDF conversion workflow (udf-gen-test -> udf-convert-to-cuda -> udf-benchmark). Use this skill when you have a CPU UDF with a unit test and need to convert it to a native CUDA implementation. Prefer udf-convert-to-cudf unless a CUDA implementation is necessary for performance or correctness, or if requested by the user.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[722,725,728,729],{"name":723,"slug":724,"type":15},"Engineering","engineering",{"name":726,"slug":727,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"2026-07-14T05:30:51.534401",{"slug":732,"name":732,"fn":733,"description":734,"org":735,"tags":736,"stars":23,"repoUrl":24,"updatedAt":741},"udf-convert-to-cudf","convert Spark UDFs to GPU-accelerated RapidsUDFs","Assists with converting an Apache Spark UDF to a GPU-accelerated RapidsUDF using cuDF Java APIs. This is step 2 of 3 in the UDF conversion workflow (udf-gen-test -> udf-convert-to-cudf -> udf-benchmark). Use this skill when you have a CPU UDF with a unit test and need to convert it to a RapidsUDF.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[737,738,739,740],{"name":723,"slug":724,"type":15},{"name":726,"slug":727,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"2026-07-14T05:30:54.048693",{"slug":743,"name":743,"fn":744,"description":745,"org":746,"tags":747,"stars":23,"repoUrl":24,"updatedAt":754},"udf-convert-to-sql","convert Spark UDFs to SQL expressions","Assists with converting an Apache Spark UDF to a functionally equivalent Spark SQL expression. This is step 2 of 3 in the UDF conversion workflow (udf-gen-test -> udf-convert-to-sql -> udf-benchmark). Use this skill when you have a CPU UDF with a unit test and need to convert it to SQL for GPU acceleration.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[748,749,750,751],{"name":723,"slug":724,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},{"name":752,"slug":753,"type":15},"SQL","sql","2026-07-14T05:30:57.785224",{"slug":756,"name":756,"fn":757,"description":758,"org":759,"tags":760,"stars":23,"repoUrl":24,"updatedAt":765},"udf-gen-test","generate unit tests for Spark UDFs","Assists with generating a unit test for an Apache Spark UDF. This is step 1 of 3 in the UDF conversion workflow (udf-gen-test -> udf-convert-to-* -> udf-benchmark). Use this skill when you have a CPU UDF and need to create a unit test for the UDF before converting it into a GPU-compatible implementation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[761,762,763,764],{"name":726,"slug":727,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},{"name":658,"slug":659,"type":15},"2026-07-14T05:30:55.30163",{"slug":767,"name":767,"fn":768,"description":769,"org":770,"tags":771,"stars":23,"repoUrl":24,"updatedAt":776},"udf-judge-conversion","review UDF tests and GPU implementations","Reviews generated UDF tests and GPU\u002FSQL implementations for robustness, anti-cheating, and GPU execution integrity. Use when the user requests a judge\u002Freview-agent pass, or when manually reviewing a completed conversion.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[772,773,774,775],{"name":679,"slug":680,"type":15},{"name":723,"slug":724,"type":15},{"name":9,"slug":8,"type":15},{"name":655,"slug":656,"type":15},"2026-07-14T05:30:59.022808",{"slug":778,"name":778,"fn":779,"description":780,"org":781,"tags":782,"stars":23,"repoUrl":24,"updatedAt":787},"udf-optimize-cudf","optimize cuDF RapidsUDF performance","Iteratively optimizes a cuDF RapidsUDF implementation for GPU performance. Use after testing and benchmarking with udf-benchmark. Runs a loop of profiling, optimizing, testing, and benchmarking until performance converges or the iteration budget is exhausted.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[783,784,785,786],{"name":17,"slug":18,"type":15},{"name":723,"slug":724,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-14T05:30:52.785634",7]