libfreenect2をOpenCLで動かすために、Ubuntu 14.04にHaswell系のIntel GPUでBeignet1.0.0を動かるようにしていたのですが、思った以上に闇が深かったので手順を書いておきます。

https://gist.github.com/spiralray/cae0bc235509e495fec1

まず、Beignetのビルドに推奨されている、LLVM-3.5をインストールしないといけないのですが、Ubuntu 14.04のLLVM-3.5パッケージに現在問題があるため、本家サイトからインストールする必要があります。

#Install llvm-3.5 from official web site
wget http://llvm.org/releases/3.5.0/clang+llvm-3.5.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz
tar xvf clang+llvm-3.5.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz
sudo cp -r clang+llvm-3.5.0-x86_64-linux-gnu/* /usr/local/
sudo ldconfig

次に、Beignetをビルド、インストールします。

wget https://01.org/sites/default/files/beignet-1.0.0-source.tar.gz
tar xvf beignet-1.0.0-source.tar.gz
cd Beignet-1.0.0-Source
mkdir build
cd build
cmake ../
make -j8
sudo make install

CPUがHaswellの場合、カーネルにパッチを当てないといけないので、カーネルをビルドします。
IntelのUSB3.0コントローラを使用する場合、3.13.0-35-generic以降もしくは3.16が必要とのことなので、3.16を使用することに。

sudo sh -c "echo 'deb http://security.ubuntu.com/ubuntu utopic-security main' >> /etc/apt/sources.list"
sudo apt-get -y update
sudo apt-get -y install libncurses-dev
sudo apt-get -y install build-essential libncurses-dev fakeroot kernel-package
sudo apt-get -y install linux-source linux-image-3.16.0-28-generic linux-headers-3.16.0-28 linux-source-3.16.0

cd /usr/src
sudo tar xvjf linux-source-3.16.0.tar.bz2
cd linux-source-3.16.0
sudo wget https://01.org/sites/default/files/disable-batchbuffer-security.patch
sudo patch -b drivers/gpu/drm/i915/i915_gem_execbuffer.c < disable-batchbuffer-security.patch

sudo cp /boot/config-3.16.0-28-generic .config
sudo make oldconfig
sudo make menuconfig
sudo make-kpkg clean
sudo CONCURRENCY_LEVEL=8 make-kpkg --rootcmd fakeroot --initrd --revision=20141215 kernel_image kernel_headers
cd /usr/src
sudo dpkg -i linux-headers-3.16*.deb
sudo dpkg -i linux-image-3.16*.deb

再起動したら、unameコマンドで正しくバージョンが上がっているかを確認しましょう。

これでKernel 3.16がインストールされたわけですが、Beignetをカーネル3.15, 3.16で使用するには起動するごとに

sudo sh -c "echo 0 > /sys/module/i915/parameters/enable_cmd_parser"

としなければなりません。

以上でUbuntu 14.04にBeignet 1.0.0がインストールされました。最後に

cd Beignet-1.0.0-Source/build/utests/
. setenv
./utest_run

として、テストプログラムを実行してみましょう。

カテゴリー: 未分類

1件のコメント

Medfreak / opencl_ruby_ffi で遊ぶ · 2015年10月4日 3:39 AM

[…] これは初心者が手を出したらアカンやつだろ、と思いながらググると、Haswell系Intel CPUでBeignet 1.0.0を動かすお話を発見。カーネルのビルドで何か失敗しても即座に文鎮化するわけではな […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

未分類

恋人の聖地に行ってきた。一人で。

ガーデンミュージアム比叡が恋人の聖地に選ばれたことでケーブルカーとロー 続きを読む …