Interface編集部

2025年6月号 ラズパイGPUプログラミング環境のサポート・ページ
●このページで解説すること
本サポート・ページでは,2025年6月号 特集 第2部 「ラズパイからはじめる!GPUプログラミング」で作成するGPUプログラムを動かす開発環境の構築手順を解説します.基本的には本誌と同じ内容ですが,環境構築時に使用するコマンドなどをコピー&ペーストできるようにしてあります.第2部の内容が試せるハードウェアは表1の通りです.
表1 第2 部内容が試せるハードウェア
ボード名称 | GPU | 備考 |
ラズベリー・パイ4モデルB | VideoCore VI(ブロードコム) | 筆者は4Gバイト版を使用 |
ラズベリー・パイ5 | VideoCore VII(ブロードコム) | 筆者は8Gバイト版を使用 |
●ステップ①…OSのインストール
次のURL にアクセスして,Ubuntu 24.10 for Raspberry Pi のイメージ・ファイルをダウンロードします.
ダウンロードしたファイルは,Raspberry Pi Imagerを利用してmicroSDカードに書き込みます.[OS]選択ボタンを押すと表示される選択肢の中から,一番下に表示されている[Use custom]を選択します.
もし,OSがうまく起動しない場合は,次の2通りの対策が有効です.
(1) OSのインストール先メディアとしてUSBメモリを使用する (2) メモリ・カード・リーダを利用して,microSDカードをUSB ポートに接続する |
●ステップ②…OSの初期設定と必要なソフトウェアのインストール
▼手順1:アップデート&インストール
以降のコマンド実行例において,行先頭の一文字目が$の場合は通常のユーザ権限で実行することを意味します.また,一文字目が#の場合はrootユーザ権限で実行することを意味します.
# apt update # apt upgrade # reboot $ uname -r 6.11.0-1009-raspi # apt install openssh-server net-tools screen # apt install git cmake clang vulkan-tools libvulkan-dev clinfo # apt install g++ opencl-headers libopencv-core-dev libopencv-imgcodecs-dev |
openssh-serverのインストール時に「What do you want to do about modified configuration file sshd_config?(sshd_config ファイルが書き換えられてますが,どちらのファイルを使用しますか?)」と聞かれた場合には,”install the package maintainer’s version”を選択してください.
▼手順2:GPUデバイスの使用権限を設定する
GPUデバイスを使用する権限を得るために,自分のユーザIDをvideo及びrenderグループに追加します.<userid>の部分は自分のユーザIDに置き換えてください.例えば,ユーザIDがmotohashiだった場合には,adduser motohashi videoと入力します.
# adduser <userid> video # adduser <userid> render |
所属グループの変更は,次回のログイン時から反映されるので,一度ラズベリー・パイからログアウトしてから,再度ログインし直してください.
●ステップ③…clvkのソースコードを入手する
ホーム・ディレクトリの直下にソフトウェア開発用のワークスペースとして,projというディレクトリを作成する前提で,clvkのソースコードをGitHubから入手します.
$ mkdir proj $ cd proj $ git clone https://github.com/kpet/clvk $ cd clvk |
次のコマンドを実行して,clvkのソースコードのバージョンを,記事執筆時のものと一致させておくことをお勧めします.
$ git submodule update –init –recursive $ ./external/clspv/utils/fetch_sources.py –deps llvm |
●ステップ④…clvkのビルド準備
標準のスワップ・ファイル1Gバイトに加えて,追加8Gバイト分のスワップ・ファイルを作成します.
# swapon –show NAME TYPE SIZE USED PRIO /swapfile file 1024M 59.2M -2 # cd / # fallocate -l 8G swapfile2 # chmod 600 swapfile2 # mkswap /swapfile2 Setting up swapspace version 1, size = 4 GiB (4294963200 bytes) no label, UUID=3c03c6ec-33a8-4e34-8d5e-fe13f41442cf # swapon swapfile2 # swapon –show NAME TYPE SIZE USED PRIO /swapfile file 1024M 4M -2 /swapfile2 file 8G 0B -3 # free -m total used free shared buff/cache available Mem: 3782 1272 159 136 2675 2510 Swap: 9215 672 8543 |
使用するCコンパイラをUbuntu標準のgccから,clangに切り替えます.
# update-alternatives –list cc /usr/bin/clang /usr/bin/gcc # update-alternatives –config cc There are 2 choices for the alternative cc (providing /usr/bin/cc). Selection Path Priority Status —————————————————— * 0 /usr/bin/gcc 20 auto mode 1 /usr/bin/clang 10 manual mode 2 /usr/bin/gcc 20 manual mode Press <enter> to keep the current choice[*], or type selection number: 1 |
g++からclang++に切り替えます.
# update-alternatives –list c++ /usr/bin/clang++ /usr/bin/g++ # update-alternatives –config c++ There are 2 choices for the alternative c++ (providing /usr/bin/c++). Selection Path Priority Status Press <enter> to keep the current choice[*], or type selection number: 1 |
●ステップ⑤…clvkのビルド
Makefileを生成します.
$ cd ~/proj/clvk $ mkdir build $ cd build $ cmake .. |
makeコマンドを実行します.
<搭載メモリが4Gバイト以下の場合> $ make <搭載メモリが8Gバイト以上の場合> $ make -j2 |
●ステップ⑥…clvkのインストール
clvkのビルドに無事成功したら,出来上がったバイナリ・ファイルをシステムにインストールします.
$ sudo make install : Install the project… — Install configuration: “RelWithDebInfo” — Installing: /usr/local/./libOpenCL.so.0.1 — Installing: /usr/local/./libOpenCL.so.1 — Installing: /usr/local/./libOpenCL.so — Installing: /usr/local/./clspv |
どうやらlibOpenCL.soなどのバイナリ・ファイルが/usr/localディレクトリにインストールされてしまったようなので,手動で/usr/local/libに移動しておくことにします.
# cd /usr/local # mv clspv libOpenCL.so* lib |
OpenCLのICDローダにclvkのlibOpenCL.soファイルを登録しておきます.
# mkdir -p /etc/OpenCL/vendors # echo /usr/local/lib/libOpenCL.so.1 > /etc/OpenCL/vendors/clvk.icd |
●ステップ⑦…動作確認
clinfoコマンドを実行して,clvkが正しく動作していることを確認します.
$ clinfo Number of platforms 1 Platform Name clvk ← OpenCLプラットフォーム名 Platform Vendor clvk Platform Version OpenCL 3.0 clvk Platform Profile FULL_PROFILE Number of devices 2 ← 存在するOpenCLデバイスの個数 Device Name V3D 7.1.7.0 ← これが VideoCore VII 用 GPU ドライバ |