過去に書いた、ブログの26.04版。2026年5月にインストールするならこっち。
Ubuntu 26.04は、AMD Rocmなどがだいぶインストールしやすくなったと聞いたので、既存の環境を入れ直してみた。
そもそも、Ubuntuを入れた理由は、EVO-X2をDGX Sparkちっくにしようとしたため。そのGDX Sparkちっくというのがちょっと面白い結果になることがわかった。
TL;DR
通常での利用であれば以下がベスト。
-
Windowsの場合、BIOSでVRAM 64GB固定、メインメモリ 64GB。
-
Linuxの場合は、 BIOSでVRAM 2GB、メインメモリ 126GB。 VRAM相当部分は、GTTを64GBにする。もしVRAMが必要なら、GTTを変える(最大96GBまで)
にする。いずれにせよ、メインメモリを64GB程度確保したほうがいい。LInuxは、GTTを活用することにより、GDX Sparkっぽくなることがわかった。
メインメモリに64GBにすることによって、VRAMやVRAM相当部分を96GBにするとメインメモリが足らなくなってOOMなどが起こりやすくなることがわかった。
EVO-X2(Strix Halo) + Linux ROCm では、なぜ「固定VRAM最小 + GTT巨大化」が強いのか
AMD Strix Halo(Ryzen AI Max+ 395 / Radeon 8060S Graphics)を Linux + ROCm + ComfyUI / LLM 環境で使っていると、従来の「BIOSでVRAMを最大化する」という発想とは少し違う世界が見えてくる。
特に Linux + ROCm では、
-
BIOSで固定VRAMを最小(2GB)にする
-
代わりに GTT(Graphics Translation Table)を巨大化する
という構成がかなり面白い。実際に検証した内容をもとに、
-
なぜ Linux では固定VRAMを減らした方がよいのか
-
GTTとは何か
-
なぜ ComfyUI や LLM で効くのか
-
Windowsとの違い
を整理してみる。
まず前提:Strix Haloは「UMA GPU」
Strix Halo は dGPU のような「専用VRAM」を持たない。
CPU と GPU が同じ LPDDR5X メモリを共有する UMA(Unified Memory Architecture)構成になっている。
つまり、BIOSで設定している「VRAMサイズ」は、「GPU専用に固定予約するメモリ量」であって、物理的に別チップのVRAMが存在するわけではない。
BIOSでVRAM 96GBにした場合
例えば BIOS で UMA Frame Buffer Size を 96GB にすると、OS起動時点で GPU が 96GB を固定占有する。
結果としてOS(Windowsでも Linuxでも) 側ではこうなる。
物理RAM 128GB
固定VRAM 96GB
CPU側RAM 約32GB
GTT ≒16GB(32GBの50%)
一見すると「VRAM 96GBで最強」に見える。しかし実際には、
-
OS側RAMが激減。
-
Docker/Kubernetesが苦しくなる。
-
VRAMがあってもはある程度CPU RAMが必要だが、ComfyUIやLLMがCPU RAMを使えなくなる。
-
GTTが小さくなる。
-
システム全体の柔軟性が落ちる。
という問題が起きる。特に Linux AI サーバ用途ではかなり辛い。
BIOSでVRAM 2GBにした場合
一方、BIOSで固定VRAMを 2GB にするとこうなる。
物理RAM 128GB
固定VRAM 2GB
GTT上限 ≒64GB(RAMの50%制限)
CPU可用RAM 残り
さらに Linux + ROCm では、
amd-ttm –set 96
を使うことで GTT 上限を 96GB 近くまで引き上げられる。
つまり、
-
GPU専用固定領域は最小
-
必要な時だけ巨大共有メモリをGPUが使う
という構成になる。
GTTとは何か
GTT(Graphics Translation Table)は、GPU が「VRAMのように扱える共有RAM領域」。
GTTは、Linux ROCm では共有RAMをGPUメモリとしてかなり積極利用できる。Windowsの場合は、不足時の補助扱いで、アプリケーションは依然VRAM自体の容量が重要になる。
Linux ROCm では、
-
pageable memory
-
GPU-visible memory
-
Unified Memory的な領域
として動く。
ComfyUI や LLM 実行時には、
VRAM + GTT
を組み合わせて巨大モデルを動かせる。
実際の挙動
例えば ComfyUI 動画生成時、amdgpu_top ではこう見える。ComfyUIでデフォルトのLTX 2.3で動画生成をさせているときの様子。

つまり、
-
固定VRAMはほぼ使っていない
-
巨大テンソルはGTTに展開されている
という状態。
これはかなり「Unified Memory GPU」に近い動き。
ただし、上記のキャプチャでは、GTTが91GBも使われてしまい、CPUメモリが枯渇したので、CPUメモリ側でPythonがOOMで止まって生成停止した。
なぜ Linux + ROCm は GTT が強いのか
Linux ROCm は、
-
HMM (Heterogeneous Memory Management)
-
userptr
-
GPUVM
-
TTM allocator
などを使い、CPU RAM を GPU メモリとしてかなり柔軟に扱える。
特に LLM や動画生成では、
「帯域」より「容量」
が重要になるケースが多い。
例えば:
-
huge KV cache
-
long context
-
video diffusion
-
giant latent
-
frame cache
など。
そのため、
固定VRAM巨大化
より、
巨大共有メモリ
のほうが Linux AI ワークステーション用途では面白い。
「VRAM」ではなく「GTT」を使うメリット
1. Linux側RAMが減らない
固定VRAMは OS 起動時に完全予約される。しかし GTT は必要時のみ使われる。
つまり、
-
Docker
-
Kubernetes
-
Ollama
-
Open WebUI
-
Qdrant
-
PostgreSQL
などと共存しやすい。
2. LLMが強い
LLM は特に「巨大メモリ」が効く。例えば:
-
qwen3 32B
-
Mistral Small
-
70B IQ2
-
huge context
など。ROCm の GTT はかなり Unified Memory 的に動くため、大モデルが入りやすい。
3. ComfyUI 動画生成で効く
LTX / Wan / CogVideo / Hunyuan などは巨大テンソルを使う。
GTT を巨大化すると、
「VRAM不足で即死」ではなく、「遅いが動く」
方向へ行ける。ただし、GTTがメモリを使いまくって、CPUメモリを食い尽くす可能性があるので、ある程度CPUメモリの確保が必要。
4. Strix Halo は UMA向き
普通の DDR5 UMA 機だと GTT はかなり遅い。
しかし Strix Halo は:
-
LPDDR5X
-
256bit
-
超広帯域
なので、GTTでも比較的高速。ここがかなり大きい。
注意点
GTTは「本物VRAM」ではない。つまり:
|
項目
|
固定VRAM
|
GTT
|
|---|---|---|
|
速度
|
高速
|
遅い
|
|
latency
|
低
|
高
|
|
allocator負荷
|
小
|
大
|
|
page fault
|
少
|
多
|
なので、GTTを極端に増やしすぎると:
-
allocator fragmentation
-
OOM
-
memory pressure
-
amdgpu stall
などが起きる。実際、96GB GTTでは Linux 全体が OOM になった。
実用的には 64GB 前後が良い
検証上は:
|
GTT
|
状態
|
|---|---|
|
48GB
|
安定
|
|
64GB
|
実用最適
|
|
96GB
|
実験
|
|
111GB
|
危険
|
という感じだった。特に:
BIOS VRAM 2GB + GTT 64GB
この状態だとメインメモリとして64GBが確保されるため、はかなりバランスが良かった。ComfyUIのLTX 2.3でも動画生成が完走、完了した。
Windowsとの違い
Windows側は、
「見えるVRAM量」
を前提にしたソフトがまだ多い。
つまり、
-
DirectML
-
Vulkan backend
-
一部ComfyUI
-
一部PyTorch
などは、固定VRAMが少ないと厳しい場合がある。
そのため Windows では:
VRAM 64GB固定
のほうが通りやすいケースがある。WindowsでもComfyUIのLTX 2.3でも動画生成が完走、完了した。
一方 Linux ROCm は、
巨大GTT
をかなり積極利用できる。
まとめ
Linux + ROCm + Strix Halo は、従来の
「VRAMを増やせば強い」
とは少し違う。むしろ:
固定VRAM最小
+
巨大GTT
+
巨大共有メモリ
のほうが Linux AI ワークステーションとして面白い。特に:
-
LLM
-
ComfyUI
-
Video diffusion
-
Huge context
-
RAG
-
Ollama
などでは、かなり「Unified Memory AI Machine」っぽい挙動になる。
今後、「VRAM容量競争」だけではなく、「巨大共有メモリAI」方向もかなり面白いかもしれない。
実際のUbuntu 26.04のインストール
インストールのコンセプト
-
元のWindowsは温存させておく(EVO-X2は、Windows PCとしても便利なので)
-
派手にUbuntuをいじると面倒なので、Dockerでの利用を前提
-
BIOSでは、VRAMを2GBにして、GTTを64GBにする。(こうしないとComfyUIでLTX 2.3で動画生成ができない。)Windowsで立ち上げる時は、VRAMを64GBにする。
-
カーネルパラメーターの変更(GRUB_CMDLINE_LINUX_DEFAULT=”amd_iommu=off amdttm.pages_limit=33554432 amdttm.page_pool_size=33554432″などといった設定)も不要。
-
Ubuntu 26.04のカーネルをそのまま使う。
Ubuntu 26.04の標準カーネルは、Ubuntu 24.04と違ってOEMカーネルを追加で入れ直す必要はなく、そのままのカーネルでAMDGPUとして完全に認識がする。
Ubuntu 26.04カーネルでのGPUの認識

root@NucBox-EVO-X2:~# uname -r
7.0.0-15-generic
root@NucBox-EVO-X2:~# lsmod | grep amd
amd_atl 77824 1
edac_mce_amd 28672 0
kvm_amd 258048 0
kvm 1527808 1 kvm_amd
amdgpu 21549056 8
amdxcp 12288 1 amdgpu
drm_panel_backlight_quirks 12288 1 amdgpu
drm_buddy 28672 1 amdgpu
drm_ttm_helper 20480 2 amdgpu
ttm 135168 2 amdgpu,drm_ttm_helper
amdxdna 172032 0
drm_exec 12288 1 amdgpu
drm_suballoc_helper 24576 1 amdgpu
amd_pmf 131072 1 amdxdna
drm_display_helper 303104 1 amdgpu
amdtee 32768 0
cec 106496 2 drm_display_helper,amdgpu
amd_sfh 73728 1 amd_pmf
tee 61440 2 amd_pmf,amdtee
gpu_sched 69632 2 amdxdna,amdgpu
platform_profile 20480 1 amd_pmf
i2c_algo_bit 16384 1 amdgpu
amd_pmc 53248 0
hid 278528 3 usbhid,hid_generic,amd_sfh
video 77824 1 amdgpu
ccp 192512 2 kvm_amd,amdtee
つまり、Ubuntu 26.04は、24.04と違って何も考えずに普通にいれればいい。
準備
-
Ubuntu 26.04 (Server あるいはDesktop)のダウンロード
-
元のWindowsを温存させるために、1TB NVMEを追加して、元の2TB NVMEをはずしておく。(LinuxからOSの再起動したときは、必ずF7でデバイス選択しなければならないが。)
BIOSの設定
VRAMのメモリの割り当てを最小にする
Advanved -> GFX Configuration-> iGPU Configuration -> UMA_SPECIFIED
UMA Frame buffer Size->2GB
ー>BIOSバージョンによっては、512MBにできるが、最新BIOSだと2GBになる。
OSインストール手順
特になにもなく、Server版でもDesktop版でも構わない。GDX SparkもどきにするならUbuntu 26.04 Desktopで基本的には全てデフォルトインストール。
インストール完了後に
apt update ; apt -y upgrade
OSインストール完了後の設定
OSの設定とROCmのインストール、GTTのサイズを変えるツールなどをインストール
SWAPの設定とパフォーマンスの設定
echo ‘vm.swappiness=10’ | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl –system
sysctl vm.swappiness
sudo apt install -y power-profiles-daemon
sudo systemctl enable –now power-profiles-daemon
sudo powerprofilesctl set performance
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor | sort -u
powerprofilesctl get
(オプション)Watchdogの設定
ハングすることがあるので念の為Watchdogを入れる。EVO-X2では、ハードウェアWatchdogが使えるようになる。
ただし、急な再起動が嫌なら、watchdogを止めておくか、max-loadの設定をコメントアウトか削除しておく。
cat << ‘EOF’ | sudo tee /etc/modules-load.d/sp5100_tco.conf
# AMD SP5100/SB800 Watchdog
sp5100_tco
EOF
sudo modprobe sp5100_tco
sudo apt install -y watchdog
sudo cp -a /etc/watchdog.conf /etc/watchdog.conf.orig
cat << ‘EOF’ | sudo tee /etc/watchdog.conf
watchdog-device = /dev/watchdog
interval = 10
logtick = 1
realtime = yes
priority = 1
max-load-1 = 192
max-load-5 = 192
max-load-15 = 192
EOF
sudo systemctl stop watchdog
sudo systemctl start watchdog
sudo systemctl enable –now watchdog
sudo systemctl status watchdog –no-pager
ROCm 7.2.3のインストール
Ubuntu 26.04でもROCmを入れられるが実は7.1なので7.2.3を以下のコマンドで入れる。ただし、ROCm 7.2.3では、Ubuntu 26.04の正式対応はしていないので、nobleのを入れることになる。
# AMD repo GPG key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.radeon.com/rocm/rocm.gpg.key \
| gpg –dearmor \
| sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null
# AMD ROCm 7.2.3 repo for Ubuntu noble
cat << ‘EOF’ | sudo tee /etc/apt/sources.list.d/rocm.list
deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/7.2.3 noble main
EOF
# Prefer AMD ROCm repo over Ubuntu universe ROCm packages
cat << ‘EOF’ | sudo tee /etc/apt/preferences.d/rocm-pin-600
Package: *
Pin: origin repo.radeon.com
Pin-Priority: 600
EOF
# Replace tmase with your actual login user
sudo usermod -aG video,render tmase
sudo apt update
apt-cache policy rocm
sudo apt install -y rocm
sudo usermod -aG video,render “${SUDO_USER}”
sudo apt update
sudo apt install -y rocm
sudo reboot
amdgpu-topのインストール
wget https://github.com/Umio-Yasuno/amdgpu_top/releases/download/v0.11.4/amdgpu-top_0.11.4-1_amd64.deb
sudo apt install -y ./amdgpu-top_0.11.4-1_amd64.deb
rm ./amdgpu-top_0.11.4-1_amd64.deb
amdgpu_top
amd-debug-toolsのインストール
前提として、BIOSでVRAMが最小(2GB)になっていることを前提。
インストールしてから一旦ログオフ
sudo apt -y install pipx
pipx ensurepath
exit
このツールは一般ユーザで利用することが前提。
再度一般ユーザでログイン
pipx install amd-debug-tools
# アンインストール pipx uninstall amd-debug-tools
installed package amd-debug-tools 0.2.17, installed using Python 3.14.4
These apps are now globally available
– amd-bios
– amd-pstate
– amd-s2idle
– amd-ttm
done! ✨ 🌟 ✨
一般ユーザで
amd-ttm
💻 Current TTM pages limit: 15887317 pages (60.61 GB)
💻 Total system memory: 121.21 GB
設定後の確認
rocminfo | grep -E ‘Name:|Marketing Name:|gfx’
hipconfig –full | head -20
ls /opt/rocm/lib/rocblas/library/ | grep gfx1151

apt show rocm-libs -a | cat
hipcc –version
apt show rocm-libs -a | cat
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Package: rocm-libs
Version: 7.2.3.70203-90~24.04
Priority: optional
Section: devel
Maintainer: ROCm Dev Support <rocm-dev.support@amd.com>
Installed-Size: 13.3 kB
Depends: hipblas (= 3.2.0.70203-90~24.04), hipblaslt (= 1.2.2.70203-90~24.04), hipfft (= 1.0.22.70203-90~24.04), hipsolver (= 3.2.0.70203-90~24.04), hipsparse (= 4.2.0.70203-90~24.04), hiptensor (= 2.2.0.70203-90~24.04), miopen-hip (= 3.5.1.70203-90~24.04), half (= 1.12.0.70203-90~24.04), rccl (= 2.27.7.70203-90~24.04), rocalution (= 4.1.0.70203-90~24.04), rocblas (= 5.2.0.70203-90~24.04), rocfft (= 1.0.36.70203-90~24.04), rocrand (= 4.2.0.70203-90~24.04), hiprand (= 3.1.0.70203-90~24.04), rocsolver (= 3.32.0.70203-90~24.04), rocsparse (= 4.2.0.70203-90~24.04), rocm-core (= 7.2.3.70203-90~24.04), hipsparselt (= 0.2.6.70203-90~24.04), composablekernel-dev (= 1.2.0.70203-90~24.04), hipblas-common-dev (= 1.4.0.70203-90~24.04), hipblas-dev (= 3.2.0.70203-90~24.04), hipblaslt-dev (= 1.2.2.70203-90~24.04), hipcub-dev (= 4.2.0.70203-90~24.04), hipfft-dev (= 1.0.22.70203-90~24.04), hipsolver-dev (= 3.2.0.70203-90~24.04), hipsparse-dev (= 4.2.0.70203-90~24.04), hiptensor-dev (= 2.2.0.70203-90~24.04), miopen-hip-dev (= 3.5.1.70203-90~24.04), rccl-dev (= 2.27.7.70203-90~24.04), rocalution-dev (= 4.1.0.70203-90~24.04), rocblas-dev (= 5.2.0.70203-90~24.04), rocfft-dev (= 1.0.36.70203-90~24.04), rocprim-dev (= 4.2.0.70203-90~24.04), rocrand-dev (= 4.2.0.70203-90~24.04), hiprand-dev (= 3.1.0.70203-90~24.04), rocsolver-dev (= 3.32.0.70203-90~24.04), rocsparse-dev (= 4.2.0.70203-90~24.04), rocthrust-dev (= 4.2.0.70203-90~24.04), rocwmma-dev (= 2.2.0.70203-90~24.04), hipsparselt-dev (= 0.2.6.70203-90~24.04)
Homepage: https://github.com/RadeonOpenCompute/ROCm
Download-Size: 1,058 B
APT-Sources: https://repo.radeon.com/rocm/apt/7.2.3 noble/main amd64 Packages
Description: Radeon Open Compute (ROCm) Runtime software stack
hipcc –version
HIP version: 7.2.53211-c2d9476115
AMD clang version 22.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-7.2.3 26084 f58b06dce1f9c15707c5f808fd002e18c2accf7e)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/rocm-7.2.3/lib/llvm/bin
Configuration file: /opt/rocm-7.2.3/lib/llvm/bin/clang++.cfg
rocm-smi
======================================== ROCm System Management Interface ========================================
================================================== Concise Info ==================================================
Device Node IDs Temp Power Partitions SCLK MCLK Fan Perf PwrCap VRAM% GPU%
(DID, GUID) (Edge) (Socket) (Mem, Compute, ID)
==================================================================================================================
0 1 0x1586, 15162 32.0°C 3.066W N/A, N/A, 0 N/A N/A 0% auto N/A 0% 0%
==================================================================================================================
============================================== End of ROCm SMI Log ===============================================
amd-smi
+——————————————————————————+
| AMD-SMI 26.2.2+c2d9476115 amdgpu version: 7.0.0-15 ROCm version: 7.2.3 |
| VBIOS version: 00107962 |
| Platform: Linux Baremetal |
|————————————-+—————————————-|
| BDF GPU-Name | Mem-Uti Temp UEC Power-Usage |
| GPU HIP-ID OAM-ID Partition-Mode | GFX-Uti Fan Mem-Usage |
|=====================================+========================================|
| 0000:c5:00.0 Radeon 8060S Graphics | N/A N/A 0 N/A |
| 0 0 N/A N/A | N/A N/A 359/98304 MB |
+————————————-+—————————————-+
+——————————————————————————+
| Processes: |
| GPU PID Process Name GTT_MEM VRAM_MEM MEM_USAGE CU % |
|==============================================================================|
| No running processes found |
+——————————————————————————+
ここまでできたら、あとは、Dockerを入れれば良い。
(参考)GTTの設定を変える場合
96GBにする場合
以下を実行すると再起動するはずだがエラーになるが設定は書き込まれているので無視して問題ない。
amd-ttm –set 96
🐧 Successfully set TTM pages limit to 25165824 pages (96.00 GB)
🐧 Configuration written to /etc/modprobe.d/ttm.conf
○ NOTE: You need to reboot for changes to take effect. Would you like to reboot the system now? (y/n): y
Traceback (most recent call last): File “/home/tmase/.local/bin/amd-ttm”, line 6, in sys.exit(amd_ttm()) ~~~~~~~^^ File “/home/tmase/.local/share/pipx/venvs/amd-debug-tools/lib/python3.14/site-packages/amd_debug/init.py”, line 29, in amd_ttm return ttm.main() ~~~~~~~~^^ File “/home/tmase/.local/share/pipx/venvs/amd-debug-tools/lib/python3.14/site-packages/amd_debug/ttm.py”, line 150, in main ret = tool.set(args.set) File “/home/tmase/.local/share/pipx/venvs/amd-debug-tools/lib/python3.14/site-packages/amd_debug/ttm.py”, line 101, in set return maybe_reboot() File “/home/tmase/.local/share/pipx/venvs/amd-debug-tools/lib/python3.14/site-packages/amd_debug/ttm.py”, line 28, in maybe_reboot return reboot() File “/home/tmase/.local/share/pipx/venvs/amd-debug-tools/lib/python3.14/site-packages/amd_debug/common.py”, line 276, in reboot loop = asyncio.get_event_loop() File “/usr/lib/python3.14/asyncio/events.py”, line 715, in get_event_loop raise RuntimeError(‘There is no current event loop in thread %r.’ % threading.current_thread().name) RuntimeError: There is no current event loop in thread ‘MainThread’.
再起動
sudo reboot now
再起動後
amd-ttm
💻 Current TTM pages limit: 25165824 pages (96.00 GB)
💻 Total system memory: 121.21 GB
sudo dmesg | grep “amdgpu.*memory”
[ 5.762815] amdgpu 0000:c5:00.0: 2048M of VRAM memory ready
[ 5.762818] amdgpu 0000:c5:00.0: 98304M of GTT memory ready.

ちなみにGTTではなく、BIOSでVRAMを96GBにした場合:VRAMが96GBになっている

GTTの割り当てを112GBにする場合(やめたほうがいい)
#amd-ttm –set 112
🚦 Warning: The requested value (112.00 GB) exceeds 90% of your system memory (111.12 GB).
This could cause system instability. Continue anyway? (y/n): y
🐧 Successfully set TTM pages limit to 29360128 pages (112.00 GB)
🐧 Configuration written to /etc/modprobe.d/ttm.conf
○ NOTE: You need to reboot for changes to take effect.
Would you like to reboot the system now? (y/n): n
設定を変えたら再起動
sudo reboot now
amd-ttm
💻 Current TTM pages limit: 29097984 pages (111.00 GB)
💻 Total system memory: 123.46 GB

GDX Sparkちっくにするといって、EVO-X2の動きをかなりGDX Sparkに近づけることができた。ただし、EVO-X2の場合は、GDX Sparkで気にする必要があまりないVRAMよりメインメモリを動的確保するのが重要。
一方、GDX Sparkは
- NVIDIA エコシステムが使える
- メインメモリを確保する必要がない
- ComfyUIで比較すると、GDX Sparkのほうが4倍くらい高速
という点でやはり使いやすい。しかし、GDX Sparkは、ただでさえ高額なEVO-X2の倍もする。(自分は、メモリ騒動のだいぶ前に入手したので今の価格の半額くらいで買えたが。)
ComfyUIという点で考察すると、
- NVIDIAでdGPU環境で、メモリの容量が少なくてもVRAMとメインメモリの使い方はかなり効率的でdGPUの容量がなくてもうまく動く
- GDX Sparkも万能ではなくて、ComfyUIだとGTX Upscalerなどは使えない。
つまり、三者三様ということで。