GPU Compute API(GPU 汎用計算 API)

article technology medium #gpu-compute#cuda#rocm-hip#sycl-oneapi#metal-mlx#opencl#vulkan-compute#webgpu#triton#llm-infrastructure
Created: 2026-05-28 Updated:

GPU 汎用計算 API を 3 層 (CUDA/HIP/SYCL/Metal、OpenCL/Vulkan/WebGPU/DirectML、Triton/CUTLASS/Pallas/MLIR) で俯瞰、コレクティブ通信・CUDA モート・2026 フロンティアを統合。

GPU Compute API(GPU 汎用計算 API)

GPU 汎用計算 (GPGPU) を支える API スタックは 3 層 に整理できる。L1 = ベンダー固有 API (CUDA / HIP / SYCL / Metal) が GPU ISA に最短距離でアクセスしピーク性能を出す、L2 = Khronos/W3C/MS のクロスプラットフォーム API (OpenCL/Vulkan Compute/WebGPU/DirectML) がポータビリティを担保、L3 = 高レベルカーネル DSL (Triton/CUTLASS/JAX-Pallas/Mojo/MLIR) が生産性と最適化を両立。LLM 学習・推論サービング (tech-69) は NVIDIA で CUDA + Triton + CUTLASS、AMD で HIP + AOTriton + Triton-AMD が現行標準、その下に NCCL/RCCL/oneCCL とインターコネクト (NVLink/NVSwitch/Infinity Fabric/GPUDirect/NIXL) が分散学習を支える。

ベンダー固有 GPGPU API

CUDA (NVIDIA、EULA 独自・競合 GPU 再配布禁止) は Runtime API / Driver API / PTX 仮想 ISA / SASS 実 ISA の 4 階層、nvcc が PTX を生成しドライバが SASS に JIT。並列性プリミティブは Streams (非同期キュー)、Graphs (CPU ローンチ削減・推論で重要)、Cooperative Groups、MPS (SM 空間共有)。Tensor Core は WMMA API・mma.sync PTX、Hopper TMA (非同期バルクテンソルロード、FA-3 活用)、Thread Block Clusters (SM 間 distributed shared memory)、FP8 (E4M3/E5M2)、Blackwell FP4 (E2M1、未確認) と進化。エコシステムは cuBLAS / cuDNN / CUTLASS / cuFFT / NCCL / NVSHMEM / Thrust が決定的差をつける CUDA モートの主因。HIP / ROCm (AMD、MIT/Apache/BSD) は CUDA に近い API、hipLaunchKernelGGL で CUDA をほぼそのまま移植可能、hipcc は NVIDIA 時 nvcc / AMD 時 clang/LLVM (amdgcn) を切替、HIPify で自動変換、対応は rocBLAS/MIOpen/RCCL/hipFFT/Composable Kernel/AOTriton。MI300X (HBM3 192 GB) が大規模 LLM 推論の AMD ターゲット。oneAPI / SYCL (Intel + Khronos、Apache 2.0) は C++17 単一ソース、実装は Intel DPC++ (icpx、LLVM/Level Zero) + AdaptiveCpp (旧 hipSYCL、CUDA/HIP/Level Zero マルチ) + Codeplay CUDA plugin、oneMKL/oneDNN/oneCCL を提供。Metal / MLX (Apple proprietary、MLX のみ Apache 2.0) は Apple Silicon の Unified Memory (CPU↔GPU ゼロコピー、M3 Max 128 GB) を活かし、MSL (C++14) + Metal Performance Shaders + MPSGraph + MLX (NumPy/JAX 類似配列、2023〜) で構成。

クロスプラットフォーム / オープン API

OpenCL (Khronos Royalty-Free、3.0) は NVIDIA が 1.2 相当のみ必須で実質メンテモード、Apple は macOS 10.14 で deprecated、AMD/Intel は継続。SPIR-V 中間表現で Vulkan とシェーダ共有可。新規 ML は非推奨、組込み/IoT/既存保守用途のみ。Vulkan Compute (Khronos、1.3 GA) はポータブル GPU 推論の現実解、GLSL → SPIR-V (glslang/shaderc)、VK_KHR_cooperative_matrix が Tensor Core 類似行列積を NVIDIA/AMD/Intel で提供、VK_KHR_shader_float16_int8 で低精度。llama.cpp/MLC-LLM/whisper.cpp が Windows/Linux/Android/macOS (MoltenVK) でカーネル統一。WebGPU (W3C、Chrome 113+ で 2023 GA、Firefox/Safari 実装中) は WGSL (Rust 類似) + Dawn (Chromium C++、D3D12/Metal/Vulkan バックエンド) + wgpu (Rust) で構成、transformers.js/MLC-LLM で Phi-2/Gemma 2B 級ブラウザ推論が実用化。制約は @workgroup_size 上限 256 と行列積拡張が W3C 草案段階。DX12 / DirectML (DX12 は Windows OS 独自、DirectML は MIT) は HLSL Compute + DXC (HLSL→DXIL、SPIR-V も可) + DirectML オペレータ (ONNX Runtime バックエンド) で AMD/Intel/NVIDIA を統一、Copilot+ PC 実用解だが Linux/macOS 不可。

高レベルカーネル DSL とコンパイラスタック

Triton (OpenAI、MIT、v3.x) は Python 埋め込み DSL → Triton IR → LLVM → PTX/AMDGPU/SPIR-V のコンパイルパス、タイル単位でスレッド配置自動化、FA-2/3・vLLM の paged attention/fused GEMM・torch.compile (Inductor) が emit するコード生成の中核。Triton-AMD は ROCm 5.7〜6.x で大幅改善したが TMA 相当のフィーチャーパリティは未完。CUTLASS (NVIDIA、BSD-3、3.x) は C++ テンプレート高性能 GEMM/Conv、Tensor Core (WMMA/mma.sync/Hopper WGMMA) フル活用、カスタム epilogue 容易、CuTe (3.x 統合) は階層座標空間でテンソルレイアウトを表現し FA-3 NVIDIA 実装に使用。ThunderKittens (HazyResearch、2024) は Hopper SM 階層 (warp group/クラスター) を抽象化する CUDA タイルプリミティブ。JAX / Pallas (Google、Apache 2.0) は XLA 経由で NVIDIA/AMD/TPU を、Pallas は Triton 類似設計の JAX カーネル DSL で TPU 成熟・GPU 拡張中。Mojo (Modular、独自) は Python 類似構文 + MLIR + SIMD 型 + vectorize/parallelize で PTX へコンパイル。Python ライブラリ: Numba CUDA (@cuda.jit PTX JIT、BSD-2)、CuPy (NumPy 互換、MIT)、Taichi (データ指向 DSL、CUDA/Metal/Vulkan/OpenGL マルチ、Apache 2.0)、tinygrad (UOps IR マルチ、MIT)。MLIR 基盤: MLIR (Google/LLVM、Apache 2.0) を共通に Triton / IREE (Vulkan/Metal/CUDA/CPU) / XLA (HLO → LHLO → LLVM/GPU) / torch-mlir / PyTorch Inductor (BSD-3、Triton emit) が収束、ただし方言差で自動相互変換は未確立。

集合通信・インターコネクト

コレクティブ通信は NCCL (NVIDIA、BSD-3、NVLink/NVSwitch/RDMA 対応 AllReduce/AllGather/ReduceScatter)、RCCL (AMD、MIT、NCCL 互換)、oneCCL (Intel、Apache 2.0、Horovod + Intel MPI)、Gloo (Meta、BSD-3、PyTorch fallback) が四強。インターコネクトは NVLink 4 (H100 x8 で 900 GB/s)、NVSwitch 3 (ノード内ノンブロッキング、DGX H100)、Infinity Fabric/xGMI (AMD、帯域幅未確認)、CXL 3.0 (CPU-GPU メモリ一貫性)、GPUDirect RDMA (NIC↔GPU 直通 DMA)、NIXL (NVIDIA Inference Transfer Library、GPU/CPU/NVMe 直接転送、Dynamo 統合) が階層的に物理層を構成。GPU 分割は MIG (H100 最大 7 インスタンス・HW 分離・QoS 保証・Ampere 以降)、MPS (SM 共有・低レイテンシ)、vGPU (VM レベル・ライセンス必要・クラウド/VDI) を用途別に選択。

選定基準と CUDA モート議論

ピーク性能順 (NVIDIA): CUDA CUTLASS > Triton > CUDA Runtime > cuDNN。ポータビリティ順: WebGPU > Vulkan > OpenCL > Triton > HIP ≈ SYCL > CUDA。CUDA モート強要因: (a) cuDNN/cuBLAS/NCCL/cuSPARSE 等の質量差、(b) PyTorch/JAX 等研究者ベースが CUDA 前提最適化、(c) PTX→SASS コンパイルチェーン成熟、(d) Hopper TMA/CUDA Graphs 等固有機能の ROCm/SYCL 再現困難、(e) 研究者 80%+ が CUDA でファーストパス。侵食要因: (1) Triton 中間層で同一カーネルが NVIDIA/AMD 両対応、(2) torch.compile/Inductor で直接 CUDA 記述不要、(3) MI300X が Meta/MS/Oracle ホスティング採用増、(4) PyTorch MPS/MLX で Apple Silicon シェア増、(5) ZLUDA (CUDA API 互換→AMD) / SCALE (CUDA→ROCm AoT、商用) / CHIP-SPV (CUDA/HIP→SPIR-V) / SYCLomatic (CUDA→SYCL、Intel 公式) 等互換シム。現実評価: CUDA モートは実在し短中期逆転困難だが Triton + torch.compile が「直接 CUDA 必須」領域を縮小、FA-3/FP8 GEMM 等フロンティアカーネルで NVIDIA アドバンテージ依然大。適材適所: ML SOTA (NVIDIA) = CUDA + Triton + CUTLASS、(AMD) = HIP + AOTriton + Triton-AMD、ポータブル LLM 推論 = Vulkan (llama.cpp)、Apple Silicon = Metal/MLX、ブラウザ ML = WebGPU、Intel 統一 = oneAPI/SYCL、PyTorch 新規カーネル = Triton、CUDA→AMD 移植 = HIPify+HIP、Windows AI = DirectML + ONNX Runtime。

2026 フロンティア

NVIDIA Blackwell (SM_100、未確認): FP4 Tensor Cores (E2M1)、拡張 TMA、5th gen NVLink、B100/B200 (HBM3E 192/288 GB) で FP8 throughput H100 比 2x 超、CUDA 12.5+ で Blackwell PTX 命令・TMA API 追加、CUTLASS 3.x が Blackwell WGMMA 対応中。AMD ROCm 6.x 成熟: 6.2 で PyTorch 2.3 / vLLM AMD 対応が実用水準、MI300X が H100 とコスト効率で競合、Triton-AMD は WMMA 相当の amdgpu matrix core 命令直接マッピング改善中だがパリティは 2026 後半以降の見通し (wave32/wave64 差異と LDS 管理が難点)。Apple M3/M4 Ultra + MLX: M3 Ultra (GPU 80 コア、帯域 800 GB/s) で 70B 級ローカル推論が実用速度、MLX は JAX ライクな jit/vmap 実装中、M4 Ultra スペックは未確認。WebGPU 本番対応: 主要 3 ブラウザのサポートが揃いポータブル基盤整備、行列積拡張は W3C 草案段階、transformers.js + WebGPU で Phi-2/Gemma 2B が実用動作。torch.compile 影響: Inductor → Triton 自動最適化が拡大、FA/FusedMoE 等のカスタムカーネルは依然 Triton/CUDA 直書き必要、AMD/Intel MPS への拡張進行中。MLIR 収束: Triton/IREE/XLA/Mojo がすべて MLIR を中間表現採用、OpenXLA (Google) が XLA と IREE 統合目標。CUDA Python: cuda.core/cuda.bindings 公式バインディングが Numba/CuPy と別系統で整備中。

落とし穴 (anti-patterns)

  • P1: cublas*Gemm 呼出しで Tensor Core 利用と思い込む — 入力 dtype / lda・ldb 配置 / tile size が条件を満たさないと CUDA Core にフォールバック、Nsight Compute で実装パス確認必須。
  • P2: CUDA→HIP 移植で同期プリミティブを安易移植 — warp shuffle 等が wave32 (RDNA) と wave64 (CDNA) で異なり性能・正しさに影響、__shfl_* 系は ROCm テスト必須。
  • P3: OpenCL を新規プロジェクト採用 — NVIDIA で 1.2 相当・Apple で deprecated・ML エコシステム空白で技術的負債確定、Vulkan か Triton へ切替が正解。
  • P4: WebGPU で @workgroup_size 上限超 — 256 threads/workgroup と shared memory 制約 (多くは 16〜32 KB) を無視するとブラウザ間挙動分岐、WGSL バリデーション必須。
  • P5: torch.compile 本番投入時にウォームアップせず初回呼出し — Inductor の Triton JIT コンパイル数十秒〜数分が TTFT に乗ると SLO 違反、cache_size_limit と AOT インダクタを検討。
  • P6: NCCL を NCCL_DEBUG=INFO なしで起動 — トポロジ自動検出が誤ってツリーアルゴリズムを選択し AllReduce 遅延、NCCL_ALGO/NCCL_PROTO で固定可。
  • P7: MIG / MPS / vGPU の選択を粒度で決めない — テナント分離なら MIG、単一ジョブマルチプロセスなら MPS、クラウド VDI なら vGPU、混同で性能・セキュリティ両方不適合。
  • P8: ZLUDA / SCALE 等互換シムを本番依存 — CUDA バイナリ非公式互換実行は EULA リスク + 一部命令未サポート + バージョン依存脆弱、PoC 限定または HIPify/SYCLomatic ソース移植が長期保守容易。

未確認事項 (確認時点 2026-05)

情報カットオフ ~2025-08、confidence: medium 固定。以下 20 件は 2026-05 時点で外部検証ができていない項目: (1) CUDA 12.x 最新、(2) Blackwell SM_100 FP4 仕様・API、(3) ROCm 6.x 最新、(4) MI325X 量産、(5) Intel oneAPI 2025.x・Arc/Xe 対応、(6) CUTLASS 3.x Blackwell WGMMA、(7) ThunderKittens ライセンス・GA、(8) Pallas GPU 安定版時期、(9) Mojo v1.0、(10) SCALE 現行・対応 ROCm、(11) ZLUDA v3 ROCm 6.x、(12) Metal 3 コンピュート機能、(13) M4 Ultra スペック、(14) MLX 最新・jit/vmap、(15) WebGPU cooperative matrix、(16) OpenXLA 進捗、(17) Infinity Fabric 帯域幅、(18) cuda.core/cuda.bindings 最新、(19) Triton 3.x AMD パリティ、(20) ROCm 6.2 PyTorch/vLLM ベンチマーク。

Local graph