0
0

More than 1 year has passed since last update.

LightGBM (GPU) で Error: No OpenCL Device Found

Last updated at Posted at 2023-08-07

環境

  • nvidia/cuda:11.7.1-cudnn8-runtime-ubuntu20.04

問題

LightGBM において,devide='gpu' と指定すると,Error: No OpenCL Device Found というエラーが出て,実行できない場合がある123
PyPL に記載されている通りにインストールしたがうまくいかず,公式の LightGBM GPU Tutorial に記載されている方法では,必要になるパッケージが明らかでない.

解決策

公式の Dockerfile for LightGBM GPU Version with Python を元に,本環境で実行できる Dockerfile を作成した.

必要なモジュールのインストール

公式の Dockerfile で指定されているパッケージに加えて,ocl-icd-opencl-dev が必要になった.

RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
curl \
bzip2 \
ca-certificates \
libglib2.0-0 \
libxext6 \
libsm6 \
libxrender1 \
git \
vim \
mercurial \
subversion \
cmake \
libboost-dev \
libboost-system-dev \
libboost-filesystem-dev \
gcc \
g++ \
ocl-icd-opencl-dev

LightGBM のインストール

デフォルトでは,/usr/local/cuda/lib64/libOpenCL.so のパスで指定されていたが,libOpenCL.so が存在せず,エラーを吐いていたため,/usr/local/cuda/lib64/libOpenCL.so.1 に変更した.
また,環境に応じて CUDA のバージョンを書き換える必要がある.

RUN mkdir -p /etc/OpenCL/vendors && \
    echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
RUN cd /usr/local/src && mkdir lightgbm && cd lightgbm && \
    git clone --recursive --branch stable --depth 1 https://github.com/microsoft/LightGBM && \
    cd LightGBM && mkdir build && cd build && \
    cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so.1 -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ .. && \
    make OPENCL_HEADERS=/usr/local/cuda-11.7/targets/x86_64-linux/include LIBOPENCL=/usr/local/cuda-11.7/targets/x86_64-linux/lib
ENV PATH /usr/local/src/lightgbm/LightGBM:${PATH}
RUN /bin/bash -c "cd /usr/local/src/lightgbm/LightGBM && sh ./build-python.sh install --precompile"

参考資料

  1. Error: No OpenCL Device Found

  2. [gpu] [python] LightGBMError: No OpenCL device found

  3. can not use lightgbm gpu in colab : LightGBMError: No OpenCL device found

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0