首页 > 解决方案 > 找不到 libOpenCL.so 文件

问题描述

我正在尝试在 AWS EC2 实例、linux 20.04 映像上安装带有 gpu 版本的 LightGBM。首先,我安装了 cuda 和 nvidia,如下所示:

sudo apt update
sudo apt install nvidia-cuda-toolkit

sudo ubuntu-drivers autoinstall
sudo apt install nvidia-driver-440

然后,这是 LightGBM 的安装步骤:

git clone --recursive https://github.com/Microsoft/LightGBM
apt-get install -y -qq libboost-all-dev

cd LightGBM
rm -r build
mkdir build
cd build
cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ ..

到目前为止一切正常,现在make给我一个问题:

make -j$(nproc)

错误:

make[2]: *** No rule to make target '/usr/local/cuda/lib64/libOpenCL.so', needed by '../lightgbm'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:105: CMakeFiles/lightgbm.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** No rule to make target '/usr/local/cuda/lib64/libOpenCL.so', needed by '../lib_lightgbm.so'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/_lightgbm.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

我是在错误的目录中安装了一些东西还是什么?我已经安装cuda and nvidia-graphic在根目录下。

实例信息:

Ubuntu Server 20.04 LTS (HVM), p3.2Xlarge

所以我的 Cuda 安装在不同的目录中,所以我使用正确的目录再次执行了此步骤:

cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/lib/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/lib/cuda/include/ ..

然后:

make -j$(nproc)

输出:

[  1%] Building CXX object CMakeFiles/_lightgbm.dir/src/boosting/boosting.cpp.o
[  2%] Building CXX object CMakeFiles/lightgbm.dir/src/main.cpp.o
[  4%] Building CXX object CMakeFiles/_lightgbm.dir/src/boosting/gbdt.cpp.o
[  5%] Building CXX object CMakeFiles/lightgbm.dir/src/application/application.cpp.o
[  7%] Building CXX object CMakeFiles/_lightgbm.dir/src/boosting/gbdt_model_text.cpp.o
[ 10%] Building CXX object CMakeFiles/lightgbm.dir/src/boosting/boosting.cpp.o
[ 10%] Building CXX object CMakeFiles/_lightgbm.dir/src/boosting/gbdt_prediction.cpp.o
[ 11%] Building CXX object CMakeFiles/_lightgbm.dir/src/boosting/prediction_early_stop.cpp.o
[ 13%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/bin.cpp.o
[ 14%] Building CXX object CMakeFiles/lightgbm.dir/src/boosting/gbdt.cpp.o
[ 15%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/config.cpp.o
[ 17%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/config_auto.cpp.o
[ 18%] Building CXX object CMakeFiles/lightgbm.dir/src/boosting/gbdt_model_text.cpp.o
[ 20%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/dataset.cpp.o
[ 21%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/dataset_loader.cpp.o
[ 23%] Building CXX object CMakeFiles/lightgbm.dir/src/boosting/gbdt_prediction.cpp.o
[ 24%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/file_io.cpp.o
[ 26%] Building CXX object CMakeFiles/lightgbm.dir/src/boosting/prediction_early_stop.cpp.o
[ 27%] Building CXX object CMakeFiles/lightgbm.dir/src/io/bin.cpp.o
[ 28%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/json11.cpp.o
[ 30%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/metadata.cpp.o
[ 31%] Building CXX object CMakeFiles/lightgbm.dir/src/io/config.cpp.o
[ 33%] Building CXX object CMakeFiles/lightgbm.dir/src/io/config_auto.cpp.o
[ 34%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/parser.cpp.o
[ 36%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/train_share_states.cpp.o
[ 37%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/tree.cpp.o
[ 39%] Building CXX object CMakeFiles/lightgbm.dir/src/io/dataset.cpp.o
[ 40%] Building CXX object CMakeFiles/_lightgbm.dir/src/metric/dcg_calculator.cpp.o
[ 42%] Building CXX object CMakeFiles/_lightgbm.dir/src/metric/metric.cpp.o
[ 43%] Building CXX object CMakeFiles/_lightgbm.dir/src/network/ifaddrs_patch.cpp.o
[ 44%] Building CXX object CMakeFiles/_lightgbm.dir/src/network/linker_topo.cpp.o
[ 46%] Building CXX object CMakeFiles/lightgbm.dir/src/io/dataset_loader.cpp.o
[ 47%] Building CXX object CMakeFiles/_lightgbm.dir/src/network/linkers_mpi.cpp.o
[ 49%] Building CXX object CMakeFiles/_lightgbm.dir/src/network/linkers_socket.cpp.o
[ 50%] Building CXX object CMakeFiles/_lightgbm.dir/src/network/network.cpp.o
[ 52%] Building CXX object CMakeFiles/_lightgbm.dir/src/objective/objective_function.cpp.o
[ 53%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/cuda_tree_learner.cpp.o
[ 55%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/data_parallel_tree_learner.cpp.o
[ 56%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/feature_parallel_tree_learner.cpp.o
[ 57%] Building CXX object CMakeFiles/lightgbm.dir/src/io/file_io.cpp.o
[ 59%] Building CXX object CMakeFiles/lightgbm.dir/src/io/json11.cpp.o
[ 60%] Building CXX object CMakeFiles/lightgbm.dir/src/io/metadata.cpp.o
In file included from /usr/include/CL/cl.h:32,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/cl.hpp:19,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/config.hpp:16,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/buffer.hpp:14,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/core.hpp:18,
                 from /home/ubuntu/LightGBM/src/treelearner/gpu_tree_learner.h:33,
                 from /home/ubuntu/LightGBM/src/treelearner/parallel_tree_learner.h:16,
                 from /home/ubuntu/LightGBM/src/treelearner/data_parallel_tree_learner.cpp:9:
/usr/include/CL/cl_version.h:34:104: note: #pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)
   34 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)")
      |                                                                                                        ^
[ 62%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/gpu_tree_learner.cpp.o
[ 63%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/linear_tree_learner.cpp.o
In file included from /usr/include/CL/cl.h:32,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/cl.hpp:19,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/config.hpp:16,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/buffer.hpp:14,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/core.hpp:18,
                 from /home/ubuntu/LightGBM/src/treelearner/gpu_tree_learner.h:33,
                 from /home/ubuntu/LightGBM/src/treelearner/parallel_tree_learner.h:16,
                 from /home/ubuntu/LightGBM/src/treelearner/feature_parallel_tree_learner.cpp:8:
/usr/include/CL/cl_version.h:34:104: note: #pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)
   34 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)")
      |                                                                                                        ^
[ 65%] Building CXX object CMakeFiles/lightgbm.dir/src/io/parser.cpp.o
[ 66%] Building CXX object CMakeFiles/lightgbm.dir/src/io/train_share_states.cpp.o
In file included from /usr/include/CL/cl.h:32,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/cl.hpp:19,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/config.hpp:16,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/buffer.hpp:14,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/core.hpp:18,
                 from /home/ubuntu/LightGBM/src/treelearner/gpu_tree_learner.h:33,
                 from /home/ubuntu/LightGBM/src/treelearner/gpu_tree_learner.cpp:7:
/usr/include/CL/cl_version.h:34:104: note: #pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)
   34 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)")
      |                                                                                                        ^
[ 68%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/serial_tree_learner.cpp.o
[ 69%] Building CXX object CMakeFiles/lightgbm.dir/src/io/tree.cpp.o
[ 71%] Building CXX object CMakeFiles/lightgbm.dir/src/metric/dcg_calculator.cpp.o
[ 72%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/tree_learner.cpp.o
[ 73%] Building CXX object CMakeFiles/lightgbm.dir/src/metric/metric.cpp.o
[ 75%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/voting_parallel_tree_learner.cpp.o
[ 76%] Building CXX object CMakeFiles/lightgbm.dir/src/network/ifaddrs_patch.cpp.o
[ 78%] Building CXX object CMakeFiles/lightgbm.dir/src/network/linker_topo.cpp.o
[ 79%] Building CXX object CMakeFiles/lightgbm.dir/src/network/linkers_mpi.cpp.o
[ 81%] Building CXX object CMakeFiles/lightgbm.dir/src/network/linkers_socket.cpp.o
In file included from /usr/include/CL/cl.h:32,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/cl.hpp:19,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/config.hpp:16,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/buffer.hpp:14,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/core.hpp:18,
                 from /home/ubuntu/LightGBM/src/treelearner/gpu_tree_learner.h:33,
                 from /home/ubuntu/LightGBM/src/treelearner/tree_learner.cpp:8:
/usr/include/CL/cl_version.h:34:104: note: #pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)
   34 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)")
      |                                                                                                        ^
In file included from /usr/include/CL/cl.h:32,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/cl.hpp:19,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/config.hpp:16,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/buffer.hpp:14,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/core.hpp:18,
                 from /home/ubuntu/LightGBM/src/treelearner/gpu_tree_learner.h:33,
                 from /home/ubuntu/LightGBM/src/treelearner/parallel_tree_learner.h:16,
                 from /home/ubuntu/LightGBM/src/treelearner/voting_parallel_tree_learner.cpp:11:
/usr/include/CL/cl_version.h:34:104: note: #pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)
   34 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)")
      |                                                                                                        ^
[ 82%] Building CXX object CMakeFiles/lightgbm.dir/src/network/network.cpp.o
make[2]: *** No rule to make target '/usr/lib/cuda/lib64/libOpenCL.so', needed by '../lib_lightgbm.so'.  Stop.
make[2]: *** Waiting for unfinished jobs....
[ 84%] Building CXX object CMakeFiles/_lightgbm.dir/src/c_api.cpp.o
[ 85%] Building CXX object CMakeFiles/lightgbm.dir/src/objective/objective_function.cpp.o
[ 86%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/cuda_tree_learner.cpp.o
[ 88%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/data_parallel_tree_learner.cpp.o
[ 89%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/feature_parallel_tree_learner.cpp.o
[ 91%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/gpu_tree_learner.cpp.o
[ 92%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/linear_tree_learner.cpp.o
In file included from /usr/include/CL/cl.h:32,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/cl.hpp:19,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/config.hpp:16,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/buffer.hpp:14,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/core.hpp:18,
                 from /home/ubuntu/LightGBM/src/treelearner/gpu_tree_learner.h:33,
                 from /home/ubuntu/LightGBM/src/treelearner/parallel_tree_learner.h:16,
                 from /home/ubuntu/LightGBM/src/treelearner/data_parallel_tree_learner.cpp:9:
/usr/include/CL/cl_version.h:34:104: note: #pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)
   34 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)")
      |                                                                                                        ^
In file included from /usr/include/CL/cl.h:32,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/cl.hpp:19,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/config.hpp:16,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/buffer.hpp:14,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/core.hpp:18,
                 from /home/ubuntu/LightGBM/src/treelearner/gpu_tree_learner.h:33,
                 from /home/ubuntu/LightGBM/src/treelearner/parallel_tree_learner.h:16,
                 from /home/ubuntu/LightGBM/src/treelearner/feature_parallel_tree_learner.cpp:8:
/usr/include/CL/cl_version.h:34:104: note: #pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)
   34 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)")
      |                                                                                                        ^
In file included from /usr/include/CL/cl.h:32,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/cl.hpp:19,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/config.hpp:16,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/buffer.hpp:14,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/core.hpp:18,
                 from /home/ubuntu/LightGBM/src/treelearner/gpu_tree_learner.h:33,
                 from /home/ubuntu/LightGBM/src/treelearner/gpu_tree_learner.cpp:7:
/usr/include/CL/cl_version.h:34:104: note: #pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)
   34 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)")
      |                                                                                                        ^
[ 94%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/serial_tree_learner.cpp.o
[ 95%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/tree_learner.cpp.o
make[2]: *** No rule to make target '/usr/lib/cuda/lib64/libOpenCL.so', needed by '../lightgbm'.  Stop.
make[2]: *** Waiting for unfinished jobs....
[ 97%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/voting_parallel_tree_learner.cpp.o
In file included from /usr/include/CL/cl.h:32,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/cl.hpp:19,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/config.hpp:16,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/buffer.hpp:14,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/core.hpp:18,
                 from /home/ubuntu/LightGBM/src/treelearner/gpu_tree_learner.h:33,
                 from /home/ubuntu/LightGBM/src/treelearner/tree_learner.cpp:8:
/usr/include/CL/cl_version.h:34:104: note: #pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)
   34 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)")
      |                                                                                                        ^
In file included from /usr/include/CL/cl.h:32,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/cl.hpp:19,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/config.hpp:16,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/buffer.hpp:14,
                 from /home/ubuntu/LightGBM/external_libs/compute/include/boost/compute/core.hpp:18,
                 from /home/ubuntu/LightGBM/src/treelearner/gpu_tree_learner.h:33,
                 from /home/ubuntu/LightGBM/src/treelearner/parallel_tree_learner.h:16,
                 from /home/ubuntu/LightGBM/src/treelearner/voting_parallel_tree_learner.cpp:11:
/usr/include/CL/cl_version.h:34:104: note: #pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)
   34 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)")
      |                                                                                                        ^
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/_lightgbm.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:105: CMakeFiles/lightgbm.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

我安装libOpenCL.so并将其从复制/usr/lib/x86_64-linux-gnu/libOpenCL.so/usr/lib/cuda/lib64/. 它会是我需要的相同文件还是会有所不同?

标签: pythonc++amazon-ec2cmakelightgbm

解决方案


推荐阅读