贡献 cuGraph#
cuGraph 是一个开源项目,我们鼓励社区参与。
有多种方式可以参与并贡献 cuGraph 社区,主要途径如下:
如果您准备好贡献代码,请直接跳至贡献代码部分。
代码风格格式化工具
clang-format
版本 16.0+flake8
版本 6.0.0+black
版本 21+
新建 Issue#
为 RAPIDS cuGraph 团队提交一个 Issue 要提交 Issue,请访问 RAPIDS cuGraph 的 issue 页面,并选择适当的 Issue 类型。Issue 提交后,RAPIDS cuGraph 团队将对其进行评估和分类。如果您认为该 Issue 需要优先关注,请在 Issue 中说明,以便通知团队。
发现 Bug#
Bug 报告 如果您发现某些功能无法正常工作,请提交一个 Issue。
选择 Bug 报告
描述您遇到的问题以及其严重程度:代码是否崩溃还是仅仅返回了错误的结果
附上重现错误的步骤
提出新功能或增强功能 如果您有关于现有功能的新功能或增强建议,请提交一个 Issue。
选择增强功能请求或功能报告
描述您希望添加或更改的内容。对于新功能,如果该分析方法有相关的白皮书,请包含其引用链接。
提问 有几种提问方式,包括 Stack Overflow,最快的方式是提交 GitHub 提问 Issue。
选择提问
描述您的问题
2) 提出并实现新功能 #
我们非常乐意看到人们积极参与,如果您有关于新功能或增强功能的建议,并希望亲自完成开发工作,我们对此表示完全支持。
提交一个新功能 Issue(参见上文),并说明您正在着手处理。
团队将对该 Issue 提供反馈,并乐于提供建议。
一旦我们认为方案可行,您就可以着手实现了。
遵循下方的代码贡献指南。
3) 您想为未解决的 Issue 实现功能或 Bug 修复 #
找到一个未解决的 Issue,并留言说明您想处理该 Issue。
一旦我们认为方案可行,您就可以着手实现了。
遵循下方的代码贡献指南。
如果您需要某个 Issue 的更多背景信息,请提出。
那么您想贡献代码吗#
TL;DR 通用开发流程
阅读关于从源代码构建的文档,了解如何设置和验证开发环境。
阅读 RAPIDS 的行为准则
找到或提交一个 Issue 来处理(并留言说明您正在处理该 Issue)
Fork cuGraph 仓库并开始编码(请确保添加单元测试)!
所有 RAPIDS 项目均基于 Apache-2.0 许可证发布,因此请确保所有支持注释的源文件都包含版权声明和 Apache-2.0 许可证文本。
完成后,并且代码通过本地 CI,创建您的拉取请求(PR)
确保代码符合风格指南
验证 cuGraph CI 通过所有状态检查。如果需要,进行修复。
等待其他开发者审查您的代码,并根据需要更新代码
PR 需要由具有仓库权限的人员添加适当的标签。
一旦审查并批准,RAPIDS 开发者将合并您的拉取请求
记住,如果您对任何事情不确定,请随时在 Issue 中留言并寻求澄清!
FIXME 注释
使用 FIXME 注释来记录技术债务。它不应该用于标记 Bug,因为 Bug 需要在提交代码之前清理掉。我们正在实现一个脚本来统计和跟踪代码中的 FIXME 数量。不接受使用 TODO 或任何其他标签。
Fork 一个 cuGraph 的私有副本 #
RAPIDS cuGraph 仓库不能直接修改。贡献必须以从 fork 的 cugraph 版本发起的拉取请求的形式提交。GitHub 对该过程有很好的说明:https://help.github.com/en/github/getting-started-with-github/fork-a-repo
将 cugraph 仓库 Fork 到您的 GitHub 账户
克隆您的版本
git clone https://github.com/<YOUR GITHUB NAME>/cugraph.git
阅读关于从源代码构建 cuGraph 的章节,以验证环境是否正确。
专家提示 添加一个上游远程仓库,以便您可以保持您的 fork 仓库同步 git remote add upstream https://github.com/rapidsai/cugraph.git
Checkout 最新分支 cuGraph 只允许向当前分支贡献,而不允许向 main 或未来分支贡献。请查看 cuGraph 页面以获取当前分支的名称。
git checkout branch-x.x
代码 …..
一旦您的代码正常工作并通过测试
运行 pre-commit 来验证和纠正代码风格
pre-commit run --all-files
提交您的代码
git push
从 GitHub 网页上,发起一个拉取请求
遵循拉取请求标签策略
开发环境#
没有推荐或偏好的开发环境。对 GPU 硬件和库版本有一些必须满足的条件。但在大多数情况下,用户可以在他们熟悉和舒适的环境中工作。
硬件
您需要能够访问 NVIDIA GPU,目前需要 Volta 或更高版本。请在此处查看最新的 RAPIDS 系统要求。
IDE(集成开发环境)
没有推荐的 IDE,这里仅列出 cuGraph 开发者目前使用的(无优先级顺序)
如果您愿意,可以使用 VSCode 从硬件远程开发。Alex Fender 有一篇关于设置远程开发的文章:https://github.com/afender/cugraph-vscode
调试
cuda-memcheck
cuda-gdb
在 VSCode 中也可以通过类似配置启用调试启动:https://github.com/harrism/cudf-vscode/blob/master/.vscode/launch.json
经验丰富的开发者#
一旦您熟悉了代码并感到更自如,您可以在我们的项目看板中查看我们下个版本的优先处理 Issue。
专家提示: 总是查看编号最低的发布看板中的 Issue 来处理。这也是 RAPIDS 开发者集中精力的地方。cuGraph 维护一个当前版本以及未来两个版本的项目看板。这有助于更好的长期规划
查看未分配的 Issue,并找到一个您乐于贡献的 Issue。从上方的步骤 3 开始,在 Issue 中留言告知其他人您正在处理。如果您对该 Issue 的实现有任何疑问,请在 Issue 中提问,而不是在 PR 中。
风格指南#
所有 Python 代码必须通过 flake8 风格检查 所有 C++ 代码必须通过 clang 风格检查 所有代码必须遵循 RAPIDS 风格指南
测试#
所有代码必须包含相关的测试用例。没有测试的代码将不被接受