この文書では、Ubuntu24.04上でLBM(格子ボルツマン法)流体解析ツールFluidX3Dを活用する方法を紹介します。
この記事は、以下の記事の続きになっていて、LBMやFluidX3Dの概要などは省略しています。
FluidX3D公式サイト
https://github.com/ProjectPhysX/FluidX3D
FluidX3Dを利用する環境
以下の公式ドキュメント「FluidX3D Documentation - How to get started?」によると、「Windows / Linux / Androd」での導入手順が説明されています。この記事では、、Linuxの手順を説明しています。
https://github.com/ProjectPhysX/FluidX3D/blob/master/DOCUMENTATION.md
Ubuntuの状態
必須ではないと思いますが、ここではUbuntuのコマンド「sudo apt update / sudo apt upgrade」を実行して、最新の状態にしています。ちなみに、コマンド「lsb_release -a」を実行すると、「Description: Ubuntu 24.04.3 LTS」となっていました。
検証に用いたPCでは、NVIDIA-GPUが搭載されていて、コマンド「lspci | grep -i nvidia」を実行すると、以下のように「GeForce RTX 4070」が確認できます。
$ lspci | grep -i nvidia
0000:01:00.0 VGA compatible controller: NVIDIA Corporation AD106M [GeForce RTX 4070 Max-Q / Mobile] (rev a1)
0000:01:00.1 Audio device: NVIDIA Corporation Device 22bd (rev a1)
FluidX3Dの導入手順
先に示した公式ドキュメントの「0. Install GPU Drivers and OpenCL Runtime」を参考に進めます。まず、「▶(click to expand section)」をクリックして展開します。
この中で、「Linux」の「Nvidia GPUs・CPUs」の2つの項目の「▶」で展開して、指示通りに進めてゆきます。
UbuntuのGPUの対応
以下のように、GPUドライバをダウンロードしてインストールする指示です。ここにはOpenCLのランタイムも含まれているとのことです。
「Download and install Nvidia GPU Drivers, which contain the OpenCL Runtime, with:」
しかし自分のPC環境では、このFluidX3Dのウエブに示された手順では、GPUドライバーを導入できませんでした。
そこで、以下のウエブ情報「OCI Ubuntu 24.04にNVIDIA GPU DriverとCUDAをインストールする」の手順を用いて行って見ます。
https://zenn.dev/shukawam/scraps/44f9cdf3df70ff
コマンドは以下のとおりです。
sudo apt update
sudo apt install ubuntu-drivers-common
sudo ubuntu-drivers --gpgpu list
sudo ubuntu-drivers --gpgpu install
実際に実行した様子を示します。
【環境の状態の更新する】
$ sudo apt update
ヒット:1 http://security.ubuntu.com/ubuntu noble-security InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu noble InRelease
(省略)
状態情報を読み取っています... 完了
パッケージはすべて最新です。
【ubuntu-drivers-commonを導入する(自分は既にありました)】
$ sudo apt install ubuntu-drivers-common
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
(省略)
これを削除するには 'sudo apt autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
【インストール可能な GPU ドライバー一覧を出力して確認します】
$ sudo ubuntu-drivers --gpgpu list
This is gpgpu mode
udevadm hwdb is deprecated. Use systemd-hwdb instead.
(省略)
nvidia-driver-570-server, (kernel modules provided by linux-modules-nvidia-570-server-generic-hwe-24.04)
nvidia-driver-535-server-open, (kernel modules provided by linux-modules-nvidia-535-server-open-generic-hwe-24.04)
【バージョンを指定せずデフォルトのドライバをインストールします】
$ sudo ubuntu-drivers --gpgpu install
This is gpgpu mode
udevadm hwdb is deprecated. Use systemd-hwdb instead.
(省略)
Writing /lib/modprobe.d/nvidia-runtimepm.conf
Updating the initramfs. Please wait for the operation to complete:
Done
デスクトップ右上のメニューから、再起動します。
NVIDIA-GPUドライバの導入を確認するために、端末でコマンド「nvidia-smi」を実行すると、「Driver Version: 580.95.05」が確認でき、先程のリストの最新版が導入されているようです。
$ nvidia-smi
Tue Nov 11 05:50:02 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.95.05 Driver Version: 580.95.05 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4070 ... Off | 00000000:01:00.0 Off | N/A |
| N/A 43C P0 18W / 115W | 15MiB / 8188MiB | 14% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 3082 G /usr/lib/xorg/Xorg 4MiB |
+-----------------------------------------------------------------------------------------+
ちなみに、デスクトップ左下の「アプリ表示」から、「NVIDIA X Server Settings」を起動すると、GPUの状態が確認できます。
UbuntuのCPUの対応
ここではUbuntuに、コンパイラg++やOpenCLなど含め、必要なツールを導入します。公式ドキュメントには、2つの方法が提示されていますが、ここでは簡単な「Option 2: Download and install PoCL with:」で、進めて見ます。
コマンドは以下のとおりです。
sudo apt update && sudo apt upgrade -y
sudo apt install -y g++ git make ocl-icd-libopencl1 ocl-icd-opencl-dev pocl-opencl-icd
$ sudo apt update && sudo apt upgrade -y
ヒット:1 http://security.ubuntu.com/ubuntu noble-security InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu noble InRelease
(省略)
これを削除するには 'sudo apt autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
$ sudo apt install -y g++ git make ocl-icd-libopencl1 ocl-icd-opencl-dev pocl-opencl-icd
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
(省略)
libglx-dev:amd64 (1.7.0-1build1) を設定しています ...
libgl-dev:amd64 (1.7.0-1build1) を設定しています ...
FluidX3Dの入手
次に公式ドキュメントの「1. Download FluidX3D」を参考に進めます。ここでは「Download and unzip the source code, or clone with」とあり、先程コマンドgitを導入していますので、これを用いて以下の手順で進めます。
git clone https://github.com/ProjectPhysX/FluidX3D.git
ここでは、ホームディレクトリに、インストールディレクトリ「FluidX3D-Files」を作っておき、この中でコマンド「git clone」で、ソースコードを入手します。
$ cd ~
$ mkdir FluidX3D-Files
$ cd FluidX3D-Files/
$ git clone https://github.com/ProjectPhysX/FluidX3D.git
Cloning into 'FluidX3D'...
remote: Enumerating objects: 1641, done.
remote: Counting objects: 100% (28/28), done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 1641 (delta 14), reused 19 (delta 7), pack-reused 1613 (from 1)
Receiving objects: 100% (1641/1641), 21.84 MiB | 6.11 MiB/s, done.
Resolving deltas: 100% (1151/1151), done.
$ ls
FluidX3D
$ cd FluidX3D/
$ ls
CITATION.cff FluidX3D.sln LICENSE.md make.sh skybox
DOCUMENTATION.md FluidX3D.vcxproj README.md makefile src
FluidX3Dのビルドと動作確認
これで準備ができたので、FluidX3Dをビルドして、動作確認を行います。公式ドキュメントの「2. Compiling the Source Code」の「Linux / macOS / Android」を参考に進めます。まずは動作確認のベンチマークを実行します。
コマンドは以下のとおりです。
chmod +x make.sh(既に実行済で不要)
./make.sh
$ pwd
/home/gnct/FluidX3D-Files/FluidX3D
$ ls
CITATION.cff FluidX3D.sln LICENSE.md make.sh skybox
DOCUMENTATION.md FluidX3D.vcxproj README.md makefile src
$ ./make.sh
Info: Detected Operating System: Linux-X11
Info: Compiling with 24 CPU cores.
g++ -c src/graphics.cpp -o temp/graphics.o -std=c++17 -pthread -O -Wno-comment -I./src/X11/include
g++ -c src/info.cpp -o temp/info.o -std=c++17 -pthread -O -Wno-comment -I./src/OpenCL/include
(省略)
g++ -c src/shapes.cpp -o temp/shapes.o -std=c++17 -pthread -O -Wno-comment -I./src/OpenCL/include
g++ temp/*.o -o bin/FluidX3D -std=c++17 -pthread -O -Wno-comment -I./src/OpenCL/include -L./src/OpenCL/lib -lOpenCL -I./src/X11/include -L./src/X11/lib -lX11 -lXrandr
この操作で、「bin/FluidX3D」が作られて、これが続いて実行されます。
.-----------------------------------------------------------------------------.
| ______________ ______________ |
| \ ________ | | ________ / |
| \ \ | | | | / / |
| \ \ | | | | / / |
| \ \ | | | | / / |
| \ \_.-" | | "-._/ / |
| \ _.-" _ "-._ / |
| \.-" _.-" "-._ "-./ |
| .-" .-"-. "-. |
| \ v" "v / |
| \ \ / / |
| \ \ / / |
| \ \ / / |
| \ ' / |
| \ / |
| \ / FluidX3D Version 3.5 |
| ' Copyright (c) Dr. Moritz Lehmann |
|-----------------------------------------------------------------------------|
|----------------.------------------------------------------------------------|
| Device ID 0 | NVIDIA GeForce RTX 4070 Laptop GPU |
| Device ID 1 | cpu-haswell-13th Gen Intel(R) Core(TM) i7-13700HX |
|----------------'------------------------------------------------------------|
|----------------.------------------------------------------------------------|
| Device ID | 0 |
| Device Name | NVIDIA GeForce RTX 4070 Laptop GPU |
| Device Vendor | NVIDIA Corporation |
| Device Driver | 580.95.05 (Linux) |
| OpenCL Version | OpenCL C 3.0 |
| Compute Units | 36 at 2175 MHz (4608 cores, 20.045 TFLOPs/s) |
| Memory, Cache | 7805 MB VRAM, 1008 KB global / 48 KB local |
| Buffer Limits | 1951 MB global, 64 KB constant |
|----------------'------------------------------------------------------------|
| Info: OpenCL C code successfully compiled. |
| Info: Allocating memory. This may take a few seconds. |
|-----------------.-----------------------------------------------------------|
| Grid Resolution | 256 x 256 x 256 = 16777216 |
| Grid Domains | 1 x 1 x 1 = 1 |
| LBM Type | D3Q19 SRT (FP32/FP16S) |
| Memory Usage | CPU 272 MB, GPU 1x 880 MB |
| Max Alloc Size | 608 MB |
| Time Steps | 10000 |
| Kin. Viscosity | 1.00000000 |
| Relaxation Time | 3.50000000 |
| Reynolds Number | Re < 256 |
|---------.-------'-----.-----------.-------------------.---------------------|
| MLUPs | Bandwidth | Steps/s | Current Step | Time Remaining |
| 2901 | 223 GB/s | 173 | 9997 100% | 0s |
|---------'-------------'-----------'-------------------'---------------------|
| Info: Peak MLUPs/s = 2904 |
最後をみると、「Info: Peak MLUPs/s = 2904 」は、ベンチマーク結果で、「NVIDIA GeForce RTX 4070 Laptop GPU」を用いたスコアになっています。
以上で、基本的な動作確認ができました。FluidX3Dには、以下の充実したマニュアルがあるので、それを参考にしながら活用手順を紹介してゆきます。
https://github.com/ProjectPhysX/FluidX3D/blob/master/DOCUMENTATION.md