krrishnarraj/clpeak

Peak compute, memory bandwidth and latency of CPUs, GPUs and NPUs: the same tests through every API that reaches a device. Command line and app for Windows, macOS, Linux and Android

clpeak – 計算・レイテンシベンチマーク

概要 – clpeak は、CPU、GPU、NPUのピーク計算スループット、メモリ帯域幅、レイテンシを測定するクロスプラットフォームベンチマークです。利用可能なすべてのAPI(CUDA、ROCm/HIP、Metal、oneAPI/SYCL、Vulkan、OpenCL、ONNX Runtime、Core ML、LiteRTなど)を通じて、高度に調整された小さなカーネルを実行し、デバイス間で比較可能な数値を報告します。

重要性 – AI/MLワークロードのハードウェアを評価する際、理論上のスペックだけでなく、基盤となるライブラリ(cuBLASLt、Core MLなど)の実際のパフォーマンスを知る必要があります。clpeak は、デバイスが行列乗算、畳み込み、その他のコア操作を実際にどれだけ高速に実行できるか、またカーネル起動のレイテンシを、単一かつ再現可能な方法で確認できます。

主な機能

  • マルチバックエンドサポート – CUDA、ROCm/HIP、Metal、oneAPI/SYCL、Vulkan、OpenCL、ONNX Runtime、Core ML、LiteRT。
  • CPUカーネル – 検出された命令セット(x86-64、AArch64)に対して実行時にコンパイルされます。
  • CLIとGUIの両方 – コマンドラインツールはWindows/macOS/Linux/Androidで動作し、Flutterベースのデスクトップアプリも提供されています。
  • JSON出力と比較 – 実行結果を保存し、再実行して保存された結果との差分を確認できます。
  • デバイスレベルの粒度 – 特定のデバイス/バックエンドを選択し、利用可能なデバイスをリストアップし、選択したテストカテゴリ(計算、帯域幅、レイテンシ、AI)のみを実行できます。
  • クロスプラットフォームビルド – デスクトップおよびモバイル(AndroidはGoogle Play、iOSはアプリバンドル経由)で動作します。

はじめに

# クローンとビルド(CMakeが必要。GUIにはオプションでFlutter SDKが必要)
git clone --recursive https://github.com/krrishnarraj/clpeak
cd clpeak
cmake -S . -B build
cmake --build build -j
./build/clpeak            # CLIの実行

ビルド済みのバイナリは、GitHubのリリースページおよびSnap Storeで提供されています。AndroidではGoogle Playから直接インストールできます。

一般的な使用方法

# 検出されたすべてのデバイスですべてのテストを実行
clpeak

# clpeakが認識できるデバイスをリストアップ
clpeak --list-devices

# CUDAデバイス0とVulkanデバイス1のみをベンチマーク
clpeak --devices cuda:0,vulkan:1

# メモリ帯域幅の数値のみを表示
clpeak --bandwidth

# 後で比較するために結果をJSONで保存
clpeak -o run.clpeak.json
clpeak --compare run.clpeak.json

--help フラグですべての利用可能なオプションがリストされます。

詳細情報 – プロジェクトページ (https://krrishnarraj.github.io/clpeak/) には、スクリーンショット、詳細なビルド手順、サポートされているバックエンドのリストが掲載されています。AGENTS.md ファイルにはコード生成エージェント用のリポジトリレイアウトが記載されており、results/ には参照用のベースライン実行結果が保存されています。

ライセンス – MIT Licenseの下で配布されています。


clpeak は、幅広いコンピューティングプラットフォーム間で正確かつ比較可能なハードウェア数値を必要とする開発者、研究者、AIエージェントを対象とした、本格的なオープンソースの性能測定ツールです。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト