2021年12月24日金曜日

Thinker BoardのOpenCL

 ASUSのThinker Boardを以前購入したのですが、いまいち使い道がなく、結局放置していました。最近Thinker BoardにMali-T760が搭載されていて、OpenCLが使えるということに気づきました。

勾配ブーストの機械学習で、広く使われている、LightGBMがOpenCLに対応していたので、Thinker Boardで動かしてみました。

環境:

Thinker Board 
OS : Thinker OS version(/etc/versionの情報です) 2.1.1

LightGBM: 3.3.1

まず、OpenCLの情報を見ようclinfoを使います。

sudo apt-get install clinfo
clinfoで、なんか、デバイスが無いという状態

/etc/OpenCL/vendorsをみようとすると、標準でこのファイルは存在していますが、/etc/OpenCL/vendersとまさかの、スペルミスの状態になっています。。こういうのはちょっと恥ずかしいレベルですね。とりあえず、リンクを作ります。

sudo ln -s /etc/OpenCL/venders /etc/OpenCL/vendors

clinfoの出力結果です。

  Platform Name                                   ARM Platform

Number of devices                                 1

  Device Name                                     Mali-T760

  Device Vendor                                   ARM

  Device Vendor ID                                0x7500001

  Device Version                                  OpenCL 1.2 v1.r13p0-00rel0-git(a4271c9).40dbad8455f8b43d1f8fbb5a1fe733e6

  Driver Version                                  1.2

  Device OpenCL C Version                         OpenCL C 1.2 v1.r13p0-00rel0-git(a4271c9).40dbad8455f8b43d1f8fbb5a1fe733e6

  Device Type                                     GPU

  Device Profile                                  FULL_PROFILE

  Max compute units                               4

  Max clock frequency                             100MHz

  Device Partition                                (core)

    Max number of sub-devices                     0

    Supported partition types                     None

  Max work item dimensions                        3

  Max work item sizes                             256x256x256

  Max work group size                             256

  Preferred work group size multiple              4

・・・

OpenCLは1.2ですね。

次にLightGBMをビルドします。

LightGBM GPU Tutorial — LightGBM 3.3.1.99 documentation
上記の流れに従います。

sudo apt-get install --no-install-recommends git cmake build-essential libboost-dev libboost-system-dev libboost-filesystem-dev


実際は、aptで配信されているcmakeが古い(cmake 3.2.0以降が必要)ので、ダウンロードしてビルドします。

cmake 3.22.1を使っています。

git clone --recursive https://github.com/microsoft/LightGBM

cd LightGBM

mkdir build

cd build

下記のように、ライブラリとヘッダを指定してビルドしないとうまくいかないです。

/usr/local/bin/cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/lib/arm-linux-gnueabihf/libOpenCL.so.1 -DOpenCL_INCLUDE_DIR=/usr/include/CL ..

make -j4

これでビルドできるので、試してみます。pythonは64bitしかモジュールをインストールできないので、コマンドラインのlightgbmを使います。

cd ..

cd examples/binary_classification

../../lightgbm config=train.conf device=gpu

上記で、学習が始まります。ただなんかとっても遅い。。。30秒弱かかります。

標準ではデバイスはCPUなのですが、

../../lightgbm config=train.conf 

これだと、1秒程度。。

チューニングが必要かもしれませんが、本日はこのあたりで力尽きました。



0 件のコメント:

コメントを投稿

Thinker BoardのOpenCL(2)

 前の投稿で、ビルドして動かすところまで、やってみましたが、今回はOpenCLを使うと、あまりに遅かったので、パラメータを調整してみます。 どうも、max_bin = 255となっていたので、64とかに減らして実行すると15がいいよというWarningがでました。 [LightG...