贡献指南
这是一份针对ChainerX贡献者的指南,ChainerX主要在C++中实现。它描述了如何构建项目以及如何运行测试套件,以便您可以开始贡献。
注释
请参阅Chainer贡献指南对于不特定于ChainerX的更通用的贡献准则。例如,如何下载源代码、管理git分支、发送pull请求或贡献给Chainer的Python代码库。
构建共享库
您可以构建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安装路径。
然后,要安装标头和库,请运行:
您可以使用前缀指定安装路径-DCMAKE_INSTALL_PREFIX=<…>
在里面克马克
.
运行测试套件
可以通过传递-DCHAINERX_BUILD_TEST=开
到克马克
.默认情况下,它不是构建的。构建完成后,使用以下命令从建造
目录。
编码标准
ChainerX C++编码标准主要基于谷歌C++风格指南和原则。
皮棉检查
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绑定,请在存储库根目录下运行以下命令:
上面的命令运行存储库中的所有测试,包括Chainer和ChainerMN。要仅运行ChainerX测试,请指定测试目录:
运行覆盖率测试:
$pytest--cov--no-cov-on-fail--cov-fail-under=80测试/chainerx_tests
在不使用CUDA GPU的情况下运行测试:
$pytest-m“不是cuda”测试/chainerx_tests