数据分析数据工程机器学习【免费下载链接】cudfcuDF - GPU DataFrame Library项目地址https://gitcode.com/gh_mirrors/cu/cudf点击查看免费下载导读cuDF 是 RAPIDS 生态中的 GPU DataFrame 库包含 Clibcudf、Pythoncudf、pylibcudf、cudf_polars、dask_cudf 等与 Java 多层组件。本指南以仓库根目录的 CONTRIBUTING.md 为核心系统梳理向 cuDF 提交代码的完整路径从提交 Issue、认领任务、搭建 conda 构建环境、用build.sh完成源码编译到调试 C/CUDA 代码、遵循 pre-commit 代码规范直至通过 CI 与 Code Review 合入主干。读完本文你将掌握 cuDF 开发环境的完整搭建步骤、build.sh全部目标与参数的实际含义以及 Debug 构建、cuda-gdb/compute-sanitizer调试和 pre-commit 检查链路的实战用法。一、贡献方式总览三类参与路径cuDF 的社区贡献分为三类对应 CONTRIBUTING.md 的顶层描述报告问题发现 bug、希望新增特性或文档存在问题直接在仓库提交 Issue详细描述问题现象与新特性诉求。RAPIDS 团队会评估、分类triage并排入发布计划若认为该问题需要优先处理可在 Issue 中评论说明以提醒团队。提议并实现新特性先提交 feature request Issue描述预期功能并与团队和社区讨论设计与实现方案待团队认可方案后再动手实现实现过程遵循下文的代码贡献流程。实现既有 Issue为已有 Issue 实现功能或修复 bug按代码贡献流程操作若对某 Issue 的上下文有疑问直接在评论中提问。行为准则作为贡献者与维护者需要遵守 NVIDIA 的 Contributor Code of Conduct详见 docs.nvidia.com 上的文档这是参与本项目的前提。二、文档贡献一条独立的轻量路径如果只想修改 cuDF 的文档而不涉及代码可走独立的文档贡献流程CONTRIBUTING.md 第 22–36 行按照“conda 环境构建”一节创建cudf_devconda 环境激活环境并安装较新的cudf版本conda activate cudf_dev conda install cudf -c rapidsai-nightly -c conda-forge按官方文档的 “Building documentation” 一节在本地构建并预览文档。仓库中对应的 Sphinx 文档源位于 docs/cudf/sourceC API 文档的 Doxygen 配置位于 cpp/doxygen/Doxyfile可在本地渲染检查改动效果完成修改后遵循“你的第一个 Issue”一节中的步骤 7–10提交 PR、跑 CI、等待审查。三、代码贡献流程3.1 你的第一个 Issue从认领到合入的十个步骤CONTRIBUTING.md 第 40–63 行给出了新贡献者认领第一个 Issue 的完整步骤先按本文第五节搭建好构建环境挑选要处理的 Issue优先查找带有good first issue适合新手或help wanted寻求帮助标签的开放 Issue在 Issue 下评论声明“我来处理”避免与他人重复Fork cuDF 仓库并基于描述性分支名例如fix-documentation切出开发分支编写代码解决问题或实现特性补充单元测试与单元基准unit benchmarks——cuDF 仓库中 C 测试位于 cpp/tests基准位于 cpp/benchmarksPython 测试位于各包下的tests/目录如 python/cudf/cudf/tests提交 Pull Request。若想先跑 CI 而不请求评审可先以draft PR形式打开确认 CI 的所有 status checks 通过失败则修复等待其他开发者评审并据此修改代码。注意审批门槛修改 libcudf C 文件至少需要 2 位cudf-cpp-codeowners的批准仅修改 libcudf_streaming C 文件则需要至少 1 位rapidsmpf-cpp-codeowners的批准对应 CODEOWNERS 机制由.pre-commit-config.yaml中的verify-codeowners钩子校验评审通过后由 RAPIDS 开发者合入 PR。3.2 有经验开发者关注发布看板已有一定贡献经验的开发者可以关注仓库的 project boards 中下一个 release 的优先事项。注意始终查看当前正在开发的 release 看板docs.nvidia.com/datascience/maintainers这也是 RAPIDS 开发者们集中精力的地方。找到未分配且自己擅长的 Issue 后同样从“评论声明认领”这一步开始与实现相关的疑问请在 Issue 中提问而不是在 PR 中提问。四、构建环境概览源码结构决定构建目标cuDF 仓库是一个多语言、多组件的 monorepo构建目标与目录一一对应构建目标源码目录组件说明libcudfcppcuDF 的 C 核心库CUDA 实现pylibcudfpython/pylibcudflibcudf 的 Cython/Python 绑定cudfpython/cudf面向用户的 Python DataFrame 库cudf_polarspython/cudf_polarsPolars 的 cuDF 后端实现dask_cudfpython/dask_cudf分布式 DataFrame 扩展libcudf_streamingcpp/libcudf_streaming流式计算 C 库cudf_streamingpython/cudf_streaming流式计算 Python 包libcudf_kafkacpp/libcudf_kafkaKafka 数据源 C 库cudf_kafkapython/cudf_kafkaKafka 数据源 Python 包custreamzpython/custreamzStreamz 集成包Java 绑定javaJava API for cuDF见 java/README.md这些组件的依赖关系在根目录 dependencies.yaml 中统一声明conda 环境文件由rapids-dependency-file-generator据此生成见 conda/environments 目录下的 4 个 YAML 文件。五、搭建构建环境5.1 通用要求General requirementsCONTRIBUTING.md 第 90–104 行明确的最低要求编译器gcc13.3、nvcc12.9、cmake3.29.6CUDA/GPU 运行时CUDA 12.2且 GPU 架构为 Volta 及以上Compute Capability ≥ 7.0说明这些指令在 Ubuntu Linux LTS 上经过测试其他操作系统可能兼容但未经过验证。CUDA 可从 NVIDIA 官方 CUDA 下载页获取。5.2 克隆仓库CUDF_HOME$(pwd)/cudf git clone https://github.com/NVIDIA/cudf.git $CUDF_HOME cd $CUDF_HOME5.3 使用 conda 环境构建推荐使用 conda 环境是满足库依赖最简单的方式。仓库预置了 4 个环境文件按 CUDA 版本12.9 / 13.3与架构x86_64 / aarch64划分例如 conda/environments/all_cuda-133_arch-x86_64.yaml# 在仓库根目录下创建 conda 开发环境 conda env create --name cudf_dev --file conda/environments/all_cuda-133_arch-$(uname -m).yaml # 激活环境 conda activate cudf_dev注意环境文件更新频繁若依赖版本或 pinning 发生变化开发环境也需要同步更新。从环境文件内容如cuda-version13.3、gcc_linux-6414.*、cmake4.0、doxygen1.18.0、clang-tools20.1.8等可以看出该环境已内置编译工具链、CUDA 工具包与代码规范相关工具。5.4 不使用 conda 的最小构建libcudf 的最小依赖在通用要求之外以下为 Ubuntu 包名build-essentiallibssl-devlibz-devlibpython3-dev仅在构建 cudf 时需要六、使用 build.sh 从源码构建 cuDF仓库根目录的 build.sh 是统一构建入口。运行./build.sh --help可查看完整的目标列表与用法CONTRIBUTING.md 第 144–191 行对其用法有说明这里结合 build.sh 源码第 21–53 行逐项展开。6.1 默认行为与常用命令不带任何目标运行时脚本会构建并安装默认目标libcudf、pylibcudf、cudf、libcudf_streaming、cudf_streaming、cudf_polars、dask_cudf对应build.sh中的buildAll判断NUMARGS 0时成立。cd $CUDF_HOME ./build.sh # 构建全部默认目标 ./build.sh libcudf # 仅构建 libcudf C 库 ./build.sh libcudf cudf # 仅构建 libcudf 与 cudf关键行为源自 build.sh 第 92–96 行C 库默认安装到$CONDA_PREFIX继承链为INSTALL_PREFIX→PREFIX→CONDA_PREFIX可通过设置$INSTALL_PREFIX改变安装位置Python 包安装到当前激活的 Python 环境脚本依赖nvcc可执行文件在PATH中或通过$CUDACXX指定并行度由PARALLEL_LEVEL控制默认取nproc的 CPU 核心数。6.2 完整目标与参数参考根据 build.sh 第 21–53 行的VALIDARGS与帮助文本整理如下构建目标Targets目标说明clean删除所有已有构建产物与配置从头开始libcudf仅构建 cudf C 代码pylibcudf构建 pylibcudf Python 包cudf构建 cudf Python 包cudf_polars构建 cudf_polars Python 包dask_cudf构建 dask_cudf Python 包benchmarks构建基准测试C 侧见 cpp/benchmarkstests构建测试libcudf_kafka仅构建 libcudf_kafka C 代码cudf_kafka构建 cudf_kafka Python 包custreamz构建 custreamz Python 包libcudf_streaming仅构建 libcudf_streaming C 代码cudf_streaming构建 cudf_streaming Python 包构建选项Options选项说明-vverbose 构建模式-gDebug 构建-n不执行安装步骤不影响 Python--pydevelop以 editable开发模式安装 Python 包--allgpuarch为所有受支持的 GPU 架构构建等价于CUDF_CMAKE_CUDA_ARCHITECTURESRAPIDS--disable_nvtx禁用插入 NVTX 性能分析范围--opensource_nvcomp禁用专有 nvcomp 扩展--hide_depr_warn隐藏 cmake 弃用警告--ptds启用 per-thread default stream--disable_large_strings禁用大字符串支持--build_metrics为 libcudf 生成构建指标报告HTML 版 ninja log--incl_cache_stats在构建指标报告中包含 sccache 缓存统计--cmake-argsargs透传任意 CMake 配置选项引号需转义-h/--h/--help打印帮助文本从 build.sh 源码可以补充若干实现细节GPU 架构选择第 212–224 行默认CUDF_CMAKE_CUDA_ARCHITECTURESNATIVE即只为本机 GPU 架构编译通过CUDF_CMAKE_CUDA_ARCHITECTURES环境变量可指定多个架构--allgpuarch会覆盖为RAPIDS全部受支持架构适合发布 wheel 前构建。构建指标第 253–276 行--build_metrics会解析.ninja_log用 cpp/scripts/sort_ninja_log.py 生成 HTML 报告记录并行度、并行编译耗时、libcudf.so大小以及 sccache 缓存命中率需配合--incl_cache_stats且环境中安装了sccache。Python 安装参数第 85–90 行Python 包统一使用--no-build-isolation --no-deps安装并透传rapidsai.disable-cudatrue等 config-settings确保使用当前环境中已编译的组件而非重新下载依赖。6.3 开发模式构建若以开发迭代为目的构建 Python 包添加--pydevelop标志构建 C 测试可附加tests目标。构建所有库与测试、Python 包使用开发模式./build.sh --pydevelop tests libcudf libcudf_kafka libcudf_streaming pylibcudf cudf cudf_streaming cudf_polars dask_cudf cudf_kafka custreamz注意如果修改了 Cython 文件*.pyx或*.pxd必须重新运行 Python 构建。6.4 运行测试C 测试对应三个独立的 CMake 构建目录ctest --test-dir ${CUDF_HOME}/cpp/build # libcudf ctest --test-dir ${CUDF_HOME}/cpp/libcudf_kafka/build # libcudf_kafka ctest --test-dir ${CUDF_HOME}/cpp/libcudf_streaming/build # libcudf_streamingPython 测试cd $CUDF_HOME/python pytest -v ${CUDF_HOME}/python/cudf/cudf/tests pytest -v ${CUDF_HOME}/python/dask_cudf/dask_cudf/ # tests/ 与 io/tests/ 下都有测试 pytest -v ${CUDF_HOME}/python/cudf_streaming/cudf_streaming/tests pytest -v ${CUDF_HOME}/python/custreamz/custreamz/tests6.5 Javacudf-java构建首先按上述步骤构建libcudfC 库然后参考 java/README.md 完成 Java 绑定构建。Java 绑定将二进制依赖打包为 fat jar官方发布前需要自行构建。七、调试 cuDF7.1 从源码构建 Debug 模式在./build.sh命令中追加-g即可./build.sh libcudf -g从 build.sh 第 150–152 行可以看到-g会把BUILD_TYPE设为Debug默认是Release并通过-DCMAKE_BUILD_TYPEDebug传给 CMake。Debug 构建会启用部分assert安全检查并在库中包含符号信息供调试。其余安装步骤与常规构建相同。7.2 使用 cuda-gdb 与 compute-sanitizer 调试调试 Python 脚本时CONTRIBUTING.md 第 231–244 行cuda-gdb -ex r --args python program_name.py program_argumentscompute-sanitizer --tool memcheck python program_name.py program_arguments说明cuda-gdb -ex r表示启动后立即运行runcompute-sanitizer --tool memcheck即原cuda-memcheck的继任工具用于检测设备端内存错误越界访问、未初始化内存、泄漏等。仓库 CI 中也有对应的内存检查脚本 ci/run_cudf_memcheck_ctests.sh 与计算检查脚本 ci/run_compute_sanitizer_test.sh可参考其参数用法。7.3 设备端调试符号-G的推荐做法cmake 的Debug构建类型不会自动为设备代码添加调试符号因为这会显著拖慢libcudf.so的加载运行延迟可达数分钟。因此推荐只对特定文件添加设备调试符号在 cpp/CMakeLists.txt 中为对应源文件设置-G编译选项。文档示例set_source_files_properties(src/copying/copy.cu PROPERTIES COMPILE_OPTIONS -G)该-G选项会让libcudf.so中该目标文件携带设备调试符号之后便可用cuda-gdb单步调试该源文件中的 kernel。src/copying/copy.cu是 cpp/src/copying 目录下实际存在的源文件可按需替换为其他待调试的.cu文件。八、代码规范与 pre-commit8.1 安装与使用 pre-commitcuDF 使用 pre-commit它执行pre-commit run --all-files --show-diff-on-failure。安装conda 或 pip 任选其一conda install -c conda-forge pre-commitpip install pre-commit提交前运行钩子pre-commit run # 只检查暂存区staged文件 pre-commit run --all-files # 检查仓库全部文件可选安装 git 钩子让每次git commit自动执行检查pre-commit install需要跳过检查时可用git commit --no-verify或短形式git commit -n。8.2 仓库中的核心 pre-commit 钩子.pre-commit-config.yaml 是钩子配置的唯一事实来源这里按 CONTRIBUTING.md 第 304–324 行的总结结合配置逐项展开C/CUDA 格式化使用clang-format配置中mirrors-clang-formatrev v20.1.8-stylefile读取仓库根目录的.clang-format风格文件对c/c/cuda类型文件生效。生成的 FlatBuffers/Protobuf 头文件如cpp/src/io/parquet/ipc/Schema_generated.h会被排除。Doxygen 文档生成与文档 lint仓库使用 Doxygen 作为文档生成器兼文档检查器要求版本为 1.18.0。在 C/CUDA 代码上以 lint 模式运行./ci/checks/doxygen.sh该脚本ci/checks/doxygen.sh会检查本机 Doxygen 版本是否为 1.18.0否则仅告警并退出 0然后基于 cpp/doxygen/Doxyfile 静默渲染GENERATE_HTML NO过滤已知的 tag 文件报错后任何其他 stderr 输出都会导致检查失败。在.pre-commit-config.yaml中它作为本地钩子doxygen-check存在仅当改动cpp/include/下的头文件时触发。Python 多 linter使用 Ruff配置中ruff-pre-commitrev v0.15.22包含 Black 风格格式化ruff-format与 Isort 风格的导入排序ruff --fix等规则此外还有针对python/cudf/cudf/的numpydoc-validationdocstring 校验。拼写检查使用codespellrev v2.4.3配置带--toml pyproject.toml。要应用建议的拼写修复可在仓库根目录运行codespell -i 3 -w .这会以交互方式逐个询问是否应用修复-i 3为交互级别-w为写入修复。8.3 其他值得了解的钩子从 .pre-commit-config.yaml 还可以看到 cuDF 独特的一些本地钩子反映其工程规范cython-lint检查 Cython 源码依赖cython3.2.2,3.3.0a0与仓库 conda/environments 中的 pinning 一致mypy对python/cudf、python/pylibcudf、python/cudf_polars等包做静态类型检查pass_filenames: false即整包检查一组pygrep风格的“禁令”钩子禁止引入DeprecationWarning应使用FutureWarning、禁止pytest.xfail、强制 C 使用rmm::exec_policy_nosync而非rmm::exec_policy、强制使用 CUDA iterator 替代等价 Thrust iterator、禁止头文件中的匿名命名空间等cudf-polars-ir-signatures校验 cudf_polars IR 的do_evaluate签名调用 ci/check_cudf_polars_ir.pycmake-format/cmake-lint通过 cpp/scripts/run-cmake-format.sh 统一 CMake 文件格式verify-copyright系列钩子校验各文件头的 SPDX 版权声明对 brotli、bzip2、zlib 等第三方移植代码使用专门的 SPDX 许可标识组合shellcheck、yamllint、zizmorGitHub Actions 安全审计、lycheeMarkdown/Sphinx 文档链接检查离线模式仅验证仓库内相对链接。注意pre-commit的ci.autoupdate_schedule为quarterly每季度自动更新钩子版本且skills/目录被整体排除在 pre-commit 检查之外由 NVIDIA skills 流水线单独校验签名。九、开发者指南与归属说明C 侧深入贡献规范参见官方 C Developer GuidelibcudfPython 侧参见官方 Python Developer GuidecuDF Python 代码。仓库内可作为参考的配套材料包括构建与测试的 CI 脚本ci/test_python_cudf.sh、ci/test_cpp.sh、ci/run_cudf_pytests.sh 等展示了官方 CI 的运行方式C 测试基础设施cpp/include/cudf_test 下的base_fixture、column_wrapper等测试工具文档构建入口docs/cudf 与 cpp/doxygen。最后根据文档的 Attribution 一节本贡献指南的部分内容借鉴自 PyTorch 的CONTRIBUTING.md与 Dask 的develop.rst这也是 RAPIDS 开源协作规范的常见做法。至此从“提交第一个 Issue”到“把代码合入主干”的完整链路已经打通搭建环境 → 构建/测试 → 调试 → 代码规范 → 评审合入。实践中最容易踩坑的三点值得再次强调一是 conda 环境文件需与当前 CUDA 版本匹配12.9 或 13.3、x86_64 或 aarch64二是修改 Cython 文件后必须重跑 Python 构建三是设备端调试符号应只对目标.cu文件单独加-G避免全局 Debug 构建导致libcudf.so加载缓慢。带着这份指南你现在就可以在仓库中寻找标有good first issue的任务开始贡献了。赞分享数据分析数据工程机器学习【免费下载链接】cudfcuDF - GPU DataFrame Library项目地址https://gitcode.com/gh_mirrors/cu/cudf点击查看免费下载相关推荐如何为 cuDF 做贡献开发者指南构建环境、测试流程与代码规范如何为 cuDF 做贡献开发者指南构建环境、测试流程与代码规范 cuDFcuDF GPU DataFrame Library 是 NVIDIA 开源的数据分析数据工程机器学习LMCache 贡献指南实战从环境搭建、测试到代码规范的完整开发流程LMCache 贡献指南实战从环境搭建、测试到代码规范的完整开发流程 LMCache 是一个面向大语言模型推理场景的 KV Cache 加速层通过缓存与管理人工智能大模型缓存抽象模型推理服务DeepAudit 贡献指南全解从开发环境搭建、代码规范到 Pull Request 全流程实战DeepAudit 贡献指南全解从开发环境搭建、代码规范到 Pull Request 全流程实战 本指南以 DeepAudit 仓库的 CONTRIBUTIN应用安全人工智能大模型AI Agent多智能体SASTRAG上一篇如何解决Windows驱动管理难题DriverStore Explorer专业工具全解析下一篇OAuth-Plugin完整教程从零开始构建安全的API认证系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
