NVIDIA/cutlass

CUDA Templates and Python DSLs for High-Performance Linear Algebra

何を解決するか

CUTLASSは、NVIDIA GPU上で高性能な行列-行列乗算(GEMM)および関連する線形代数計算を実装するためのモジュール化された抽象化を提供します。高度に最適化されたCUDAカーネルを書く複雑さを解消するために、並列化の階層構造とデータ移動を再利用可能なソフトウェアコンポーネントに分解し、すべてをゼロから書かずに、理論上の最適なスループットに近い性能を達成できるようにします。

動作方法

CUTLASSはC++テンプレート抽象化と、CuTeと呼ばれるコアライブラリを使用して、スレッドとデータの階層的多次元レイアウトを管理します。カスタムタイリングサイズ、データ型、アルゴリズムポリシーを用いて、特殊化とチューニングが可能です。最近では、CuTe DSL(最初はCuTe DSL)を含むCUTLASS DSLの導入により、Pythonネイティブインターフェースを提供し、コンパイル時間の短縮とC++の深い知識の必要性を減らしつつ、パフォーマンスを維持しています。

対象ユーザー

低レベルのC++を使用するユーザーから、Pythonベースのプロトタイピングワークフローを好むユーザーまで、NVIDIA GPU上で最適化された線形代数演算を実装する必要があるパフォーマンスエンジニア、研究者、学生向けに設計されています。

主な特徴

  • 広範なハードウェア対応: VoltaからBlackwell、RubinまでのNVIDIAアーキテクチャを対象としています。
  • 豊富なデータ型サポート: FP64、FP32、TF32、FP16、BF16、FP8、FP4、および狭い整数型を含む、幅広い精度をサポートしています。
  • CuTeライブラリ: スレッドとデータのテンソルをレイアウトとテンソルを介して記述・操作するための専用システムです。
  • Python DSL: DLフレームワークと統合できる、CUDAカーネルを書くためのネイティブPythonインターフェースで、開発サイクルを高速化します。

関連

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