3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LBM流体解析ツールFluidX3Dの活用【02:Ubuntuへの導入方法と動作確認】

Posted at

この文書では、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

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?