こんにちは、mOqOmです。
殴り書きですみませんが、Windows 11とLinux(Ubuntu)でGPUが使用できるLightGBMのBuild方法を今更ながら紹介していきます。
Build環境
適当にVMware Workstation ProにUbuntu Server 24.04.3 LTSをインストールして環境を
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.3 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo環境構築
# 必要ツールの導入
sudo apt-get update
sudo apt-get install -y cmake git build-essential mingw-w64 wget unzip opencl-headers libboost-system-dev libboost-filesystem-dev libboost-dev
# OpenCL SDKの取得
cd ~
wget https://github.com/KhronosGroup/OpenCL-SDK/releases/download/v2025.07.23/OpenCL-SDK-v2025.07.23-Win-x64.zip
unzip OpenCL-SDK-v2025.07.23-Win-x64.zip -d opencl_sdk_v2025
# 【重要】ヘッダーを標準パスへ物理コピー
sudo mkdir -p /usr/x86_64-w64-mingw32/include/CL
sudo cp -r ~/opencl_sdk_v2025/OpenCL-SDK-v2025.07.23-Win-x64/include/CL/* /usr/x86_64-w64-mingw32/include/CL/
# LightGBMソース取得
git clone --recursive https://github.com/microsoft/LightGBMWindows版のビルド
cd ~/boost_1_83_0
./b2 clean
echo "using gcc : mingw64 : x86_64-w64-mingw32-g++ ;" > user-config.jam
./bootstrap.sh
./b2 --user-config=user-config.jam toolset=gcc-mingw64 target-os=windows address-model=64 link=static threading=multi variant=release --with-system --with-filesystem stage
# --- LightGBM (Windows用) ビルド ---
cd ~/LightGBM && mkdir -p build_win && cd build_win && rm -rf *
cmake \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \
-DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ \
-DUSE_GPU=1 \
-DOpenCL_INCLUDE_DIR=/usr/x86_64-w64-mingw32/include \
-DOpenCL_LIBRARY=../../opencl_sdk_v2025/OpenCL-SDK-v2025.07.23-Win-x64/lib/OpenCL.lib \
-DBOOST_ROOT=../../boost_1_83_0 \
-DBoost_USE_STATIC_LIBS=ON \
-DBoost_NO_SYSTEM_PATHS=ON \
-DCMAKE_CXX_FLAGS="-DCL_TARGET_OPENCL_VERSION=300 -static -static-libgcc -static-libstdc++" \
-DCMAKE_SHARED_LINKER_FLAGS="-static-libgcc -static-libstdc++ -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,--no-whole-archive" \
..
make -j$(nproc)Linux版のビルド
# --- Boost (Linux用) の再ビルド ---
cd ~/boost_1_83_0
./b2 clean
./bootstrap.sh
# Linux向けにfPIC付きでビルド
./b2 cxxflags="-fPIC" link=static threading=multi variant=release --with-system --with-filesystem stage
# --- LightGBM (Linux用) ビルド ---
cd ~/LightGBM && mkdir -p build_linux && cd build_linux && rm -rf *
cmake \
-DUSE_GPU=1 \
-DBOOST_ROOT=~/boost_1_83_0 \
-DBoost_USE_STATIC_LIBS=ON \
-DBoost_NO_SYSTEM_PATHS=ON \
-DOpenCL_INCLUDE_DIR=/usr/include \
-DOpenCL_LIBRARY=/usr/lib/x86_64-linux-gnu/libOpenCL.so \
-DCMAKE_CXX_FLAGS="-DCL_TARGET_OPENCL_VERSION=300 -fPIC" \
..
make -j$(nproc)

コメント