llama.cpp GPU比較|Metal・CUDA・ROCm・Vulkan・SYCL
CHATGPT / AIChatGPTなどの生成AIを活用して運営・記事制作・更新を行っています。制作方針
llama.cppのMetal、CUDA、HIP/ROCm、Vulkan、SYCLを対応機器・OS・build条件で整理。速度順位は作らず、同じGGUFをllama-benchで比較する方法と限界を解説します。

先に結論
Metal、CUDA、HIP/ROCm、Vulkan、SYCLは同じ種類の「速度順位」ではありません。backendごとに対象device、driver、compiler/runtime、対応operatorが違います。llama.cpp upstreamの対応表とbuild guideを入口に候補を絞り、手元で実際に検出されたdeviceと同一GGUFの測定結果を見て決めてください。この記事は公式資料による机上調査で、GPU実機のbuild・推論・速度比較はしていません。
まず対応機器と前提を照合する
| backend | upstream資料が示す主な対象 | 構成を始める前に確認すること |
|---|---|---|
| Metal | Apple Silicon | macOSとAppleのMetal環境。macOSの標準buildではMetalが有効です。 |
| CUDA | NVIDIA GPU | 対象GPUとOSに合うNVIDIA driverおよびCUDA Toolkit。 |
| HIP / ROCm | HIP対応AMD GPU | 対象GPU・OSがAMD ROCm 10.1.0のsupport matrixに含まれること。llama.cppのbackend名はHIPです。 |
| Vulkan | Vulkan対応GPU | GPU driver、Vulkan SDK/loader、OSごとのbuild手順。macOSのVulkan driverはMetalへのtranslation layerを使います。 |
| SYCL | 主にIntel GPU | Intel GPU family、oneAPI compiler/runtime、driverの組合せ。upstream guideに記載されたOSとversionを確認します。 |
llama.cpp upstream READMEの一覧はbackendのtarget-deviceを示します。全model、全演算、全GPUで同一の対応や速度を保証する表ではありません。特にAMDでは「AMD GPUならすべてROCm/HIP対応」と決めつけず、AMDとllama.cpp両方の現行条件を照合します。
HIPのconfigure flagだけではbuild条件を決められません。llama.cppのLinux例はROCm環境に応じたHIPCXXとHIP_PATHを指定し、必要ならGPU architectureも選びます。Windowsの例は別のcompiler設定です。AMD側の対応表でもGPU、OS、kernel、driver等の組合せを選んで確認してください。
OpenVINOとOpenCLは別backendです。upstream READMEはOpenVINOを進行中とし、OpenCLはAdreno向けとして掲載しています。これらをSYCLと同じもの、または汎用GPUなら常に使える代替経路として扱わないでください。
build optionはbackendごとに異なる
必要なtoolchainを先に導入してから、current build guideの該当節にあるoptionでconfigureします。代表的なCMake flagは次のとおりです。
| backend | CMake option | 注意点 |
|---|---|---|
| Metal | macOSでは既定で有効 | CPUのみで動かす場合は同guideのGPU無効化optionを確認します。 |
| CUDA | -DGGML_CUDA=ON | NVIDIA CUDA Toolkitが必要です。移植先も含めるbuildはnative設定を別途確認します。 |
| HIP / ROCm | -DGGML_HIP=ON | ROCm/HIP compiler、target GPU、distributionの組合せを確認します。 |
| Vulkan | -DGGML_VULKAN=ON | Vulkan SDK/headersに加えて、driverとdeviceのruntime対応が必要です。 |
| SYCL | -DGGML_SYCL=ON | Intel oneAPI compiler/runtimeが必要です。Linuxの公式例はicxとicpxを指定します。 |
CUDAの最小例です。ほかのbackendでは表のoptionへ置き換え、各backendの公式手順に書かれたdependencyも満たしてください。
cmake -B build -DGGML_CUDA=ON
cmake --build build --config ReleaseSYCLはoneAPI環境を有効にしたLinuxで、現行guideが例示するcompilerを使う構成の一例です。Windowsは同じcommandをそのまま使わず、guideのVisual Studio/oneAPI手順に従います。
cmake -B build \
-DGGML_SYCL=ON \
-DCMAKE_C_COMPILER=icx \
-DCMAKE_CXX_COMPILER=icpx
cmake --build build --config ReleaseCMake configurationが通っても、実行時にGPUが使われているとは限りません。起動時のdevice表示を確認し、複数deviceがある場合はupstream server/CLIの--list-devicesと--deviceで表示された名称を使います。flag名、表示名、runtime選択肢は使用中のreleaseに合わせてください。
同じ条件で測る
llama-benchはprompt processing(-p)、generation(-n)、その両方(-pg)を分け、繰り返し回数を-rで指定できます。まず利用可能なdeviceを確認します。
./build/bin/llama-bench --list-devices同じGGUFを5回測りJSONへ出す例です。-devを指定するときは--list-devicesで表示された実際のdevice名へ置き換えます。
./build/bin/llama-bench \
-m /path/to/model.gguf \
-dev "DEVICE_NAME_FROM_LIST" \
-p 512 \
-n 128 \
-r 5 \
-o jsonbackend同士を比べるときは、可能な範囲でmodel fileのhash、prompt、prompt長、生成token数、context depth、batch、GPU offload layer、KV cache type、build commit、compiler、driver、power modeを揃えて記録します。各backendで同じ条件にできないoptionは隠さず結果と一緒に残します。llama-benchの測定値にはtokenizationとsamplingの時間が含まれないため、アプリでの応答時間を知るにはserver/APIのend-to-end latencyも別に測ります。
数値を順位へ変換しない
- prompt処理の速さとtoken生成の速さは別々に読みます。
- modelがGPU memoryに収まらないとCPUやsystem memoryへの転送が影響します。
- backendを変える際に量子化、build option、driverも変わると、差の原因をbackendだけに帰属できません。
llama-benchがdeviceを検出した事実と、利用するmodelの全演算がそのbackendで処理された事実は同じではありません。- 実測したsystem、model、条件を示さずに「最速backend」を一般化しません。
測定の差が小さい場合は、複数回の平均だけでなく各回の値とばらつき、load時間、peak memory、失敗やOOMも残します。結果が自分のpromptでの応答品質、安定性、運用要件と合うかは別に評価してください。
関連ガイド
llama.cppでGGUFを起動する手順はbackend比較前のmodel読み込み、llama.cppが遅い原因の確認順は実行後の調整、ローカルLLMのVRAM計算はmodel容量の見積もりを扱います。Qwen3.5を例にruntimeを動かす場合はQwen3.5ローカル実行ガイドを参照してください。
公式資料
- llama.cpp upstream README(2026年10月11日確認。backendの対象一覧)
- llama.cpp build guide(2026年10月11日確認。Metal、CUDA、HIP、Vulkan等のconfigure optionとbuild上の条件)
- llama.cpp SYCL backend guide(2026年10月11日確認。Intel device、OS、oneAPI requirements)
- llama-bench documentation(2026年10月11日確認。test type、device指定、出力形式、測定に含まれない処理)
- llama.cpp server documentation(2026年10月11日確認。実行時device確認と選択option)
- AMD ROCm 10.1.0 compatibility matrix(資料の日付は2026年8月26日。2026年10月11日に確認したGPU/OS別の対応表)