贡献指南

这是一份针对ChainerX贡献者的指南,ChainerX主要在C++中实现。它描述了如何构建项目以及如何运行测试套件,以便您可以开始贡献。

注释

请参阅Chainer贡献指南对于不特定于ChainerX的更通用的贡献准则。例如,如何下载源代码、管理git分支、发送pull请求或贡献给Chainer的Python代码库。

注释

有一个公众ChainerX产品积压.

构建共享库

您可以构建C++ChainerX项目来生成与任何其他cmake项目类似的共享库。从项目的根目录运行以下命令以生成chainerx_cc/build/chainerx/libchainerx.so,

$mkdir链接器x_cc/build$光盘chainerx_cc/构建$cmake。。$制作

CUDA支持通过以下任一设置启用链条X_BUILD_CUDA=1作为环境变量或指定-DCHAINERX_BUILD_CUDA=1在里面克马克.使用CUDA支持构建时CUDNN_ROOT_DIR(CUDNN_ROOT_DIR)环境变量或-DCUDNN_根目录需要找到cuDNN安装路径。

注释

当前不支持不带cuDNN的CUDA。

然后,要安装标头和库,请运行:

$进行安装

您可以使用前缀指定安装路径-DCMAKE_INSTALL_PREFIX=<…>在里面克马克.

运行测试套件

可以通过传递-DCHAINERX_BUILD_TEST=开克马克.默认情况下,它不是构建的。构建完成后,使用以下命令从建造目录。

$光盘chainerx_cc/内部版本$测试-V

编码标准

ChainerX C++编码标准主要基于谷歌C++风格指南和原则。

格式化

ChainerX的格式使用铿锵格式.要就地修复格式,请从运行以下命令链子x_cc目录:

$光盘链子x_cc$scripts/run-clang-format.sh--就地

皮棉检查

ChainerX使用cpplint(cpplint)叮当作响用于检查皮棉。请注意,clang-cidy要求您完成跑步克马克.要运行cpplint,请运行脚本/run-cpplint.sh链子x_cc目录:

$光盘链子x_cc$脚本/运行cpplint.sh

跑得叮当当当制作 叮当作响从生成目录:

$光盘chainerx_cc/内部版本$使叮当声整齐

螺纹消毒剂

线程消毒剂可用于检测与线程相关的错误,如数据争用。要启用线程消毒剂,请传递-DCHAINERX_ENABLE_THREAD_SANITIZER=开克马克.

您可以使用运行测试ctest测试 -五像往常一样,如果线程消毒剂检测到任何问题,您将收到警告。

众所周知,CUDA运行时会导致线程泄漏错误作为错误警报。在这种情况下,使用环境变量禁用线程泄漏检测TSAN_OPTIONS='report_thread_leaks=0'.

Python贡献和单元测试

要测试Python绑定,请在存储库根目录下运行以下命令:

$pytest测试

上面的命令运行存储库中的所有测试,包括Chainer和ChainerMN。要仅运行ChainerX测试,请指定测试目录:

$pytest测试/chainerx测试

运行覆盖率测试:

$pytest--cov--no-cov-on-fail--cov-fail-under=80测试/chainerx_tests

在不使用CUDA GPU的情况下运行测试:

$pytest-m“不是cuda”测试/chainerx_tests