我正在尝试在CentOS版本7的集群上从源代码构建支持cuda的JAX。在jax主目录中,我运行:
python build/ www.example.com --enable_cuda --cuda_path=$CUDA_HOME --cudnn_path=$CUDNN_HOME
以下是我的规格:
- cuda版本:11.6
- cudnn版本7.5
- gcc版本:11.2.0
- Bazel二进制路径:./bazel-5.1.1-linux-x86_64
- Bazel版本:5.1.1
- Python二进制路径:~/.conda/envs/JAX/bin/python
- Python版本:3.9
- NumPy版本:1.21.5
- 启用MKL-DNN:是的
- 目标CPU:x86_64
- 目标CPU功能:释放
- 已启用CUDA:是的
以下是我的环境变量:
CC=/usr/local/app/compiler/gcc/11。2.0/bin/gcc CXX=/usr/local/app/compiler/gcc/11。2.0/bin/g++ INCLUDE=/usr/local/app/compiler/gcc/11.2.0/include LIBRARY_PATH=/usr/local/app/compiler/gcc/11。2.0/lib64:/usr/local/app/lib/nvidia/cuda/11.6.1/lib64:/usr/local/app/lib/nvidia/driver/510。47/lib64/nvidia LD_LIBRARY_PATH=/usr/local/app/compiler/gcc/11。2.0/lib64:/usr/local/app/lib/nvidia/cuda/11.6.1/lib64:/usr/local/app/lib/nvidia/driver/510。47/lib64/NVIDIA
Bazel构建会抛出以下错误:
错误:/lustre 1/home/rice_cake/.cache/bazel/_bazel_rice_cake/8366d0a62cbb3b115627233e356374ab/external/zlib/BUILD.bazel:5:11:Compiling uncompr.c失败:规则'@zlib//:zlib'中未声明包含:此规则缺少'uncompr'包含的下列文件的依赖关系声明。c':'/usr/local/app/compiler/gcc/11.2.0/lib/gcc/x86_64-redhat-linux/11.2.0/include/stddef。h' '/usr/local/app/compiler/gcc/11。2.0/lib/gcc/x86_64-redhat-linux/11.2.0/包含-固定/限制。h' '/usr/local/app/compiler/gcc/11。2.0/lib/gcc/x86_64-redhat-linux/11.2.0/include-fixed/syslimits。h“”/usr/local/app/compiler/gcc/11。2.0/lib/gcc/x86_64-redhat-linux/11.2.0/include/stdarg.h'
Bazel似乎在抱怨我没有声明C++库文件的依赖关系。有办法解决吗?
问题是这些Bazel构建文件是由jax/build/ www.example.com ,我不知道如何手动修复它们。
P.S.在我的本地机器上从源代码构建JAX是成功的。。
非常感谢你的帮助,赖斯
我进入Bazel缓存文件并检查了BUILD文件,它与我本地机器上的相同,所以我有点卡住了。我希望设置环境变量可以帮助Bazel构建我的JAX。
1条答案
按热度按时间y1aodyip1#
要修复“规则中未声明的包含”,请尝试删除“/root/”中的完整bazel缓存文件。cache/bazel/"。对于Jax和bazel在这里我们有很好的documentation。