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
として、テストプログラムを実行してみましょう。
ロボットと電子工作とプログラミング!
女の子は甘いもので出来てる?
ピンバック: Medfreak / opencl_ruby_ffi で遊ぶ