一. 最关键问题的解决
CMake Warning (dev) at /usr/local/share/cmake-3.26/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
The package name passed to `find_package_handle_standard_args` (CUDNN) does
not match the name of the calling package (Caffe2). This can lead to
problems in calling code that expects `find_package` result variables
(e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
/home/amax/AI_airfight/alphadog_MCTS/alphazero/libtorch-shared-with-deps-1.2.0/libtorch/share/cmake/Caffe2/public/cuda.cmake:128 (find_package_handle_standard_args)
/home/amax/AI_airfight/alphadog_MCTS/alphazero/libtorch-shared-with-deps-1.2.0/libtorch/share/cmake/Caffe2/Caffe2Config.cmake:88 (include)
/home/amax/AI_airfight/alphadog_MCTS/alphazero/libtorch-shared-with-deps-1.2.0/libtorch/share/cmake/Torch/TorchConfig.cmake:40 (find_package)
CMakeLists.txt:25 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.
在编译的时候有这行命令:
cmake -DCMAKE_PREFIX_PATH=`python -c 'import torch;print(torch.utils.cmake_prefix_path)'` ..
CmakeLists.txt 文件中有这行代码:
#gcc
set(CMAKE_PREFIX_PATH /home/amax/anaconda3/envs/AlphaDogfight/lib/python3.7/site-packages/torch/share/cmake)
if(CMAKE_COMPILER_IS_GNUCC)
set(CMAKE_CXX_STANDARD 14)
endif()
其中CMAKE_PREFIX_PATH
的路径就是torch.utils.cmake_prefix_path
, 所以打印出torch.utils.cmake_prefix_path
的路径,放进CmakeLists.txt中的上述代码中就可以了解决报错了。
二. 其他琐碎
cudnn 查询
1)比较新的cuDNN,使用命令:
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
2)比较旧的cuDNN,使用命令:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
3) XTIC 服务器
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
报错 cmake cannot find torch
在下面的代码操作前
mkdir build
cd build
cmake ..
make -j8
#生成 demo 可执行程序
#执行 demo
./demo
输入 本地 libtorch 中torch文件夹路径
export Torch_DIR=/home/amax/AI_airfight/alphadog_MCTS/alphazero/libtorch-shared-with-deps-1.2.0/libtorch/share/cmake/Torch
export Torch_DIR=/home/loveecho/AIXT/alphadog_MCTS/alphazero/libtorch-shared-with-deps-1.2.0/libtorch/share/cmake/Torch
然后又报错 找不到 cudnn… 安装上cudnn ,然后报错如下,我的cudnn是满足大于7的要求(Caffe报错,但不用它)
CMake Error at /home/amax/AI_airfight/alphadog_MCTS/alphazero/libtorch-shared-with-deps-1.2.0/libtorch/share/cmake/Caffe2/public/cuda.cmake:180 (message):
PyTorch requires cuDNN 7 and above.
为此,屏蔽掉了对应程序中大于7要求的代码。。(位置在Caffe2/public)
测试清华代码时,再次报错:
return _bootstrap._gcd_import(name[level:], package, level)
ImportError: /home/amax/AI_airfight/alphadog_MCTS/Alpha_Zero_DogFight/Alpha_Zero_DogFight/build/_library.so: undefined symbol: _ZN6caffe26detail37_typeMetaDataInstance_preallocated_10E
在 Ubuntu 20.04 上安装 GCC7.5
出现无法定位软件包的问题:
换源的解决方法,添加阿里源,并更新
GPG 错误导致没有公钥,无法验证签名”的问题解决,下载密钥
切换gcc版本,先赋予它们不同的优先度
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 90 --slave /usr/bin/g++ g++ /usr/bin/g++-7 --slave /usr/bin/gcov gcov /usr/bin/gcov-7