CUDA

CUDA
原作者イアン・バックジョン・ニコルズ
開発者エヌビディア
初回リリース2007年2月16日[ 1 ] (2007年2月16日
安定版リリース
13.1.1 [ 2 ]ウィキデータで編集する / 2026年1月12日 (2026年1月12日
書かれたC
オペレーティング·システムWindowsLinux
プラットフォームサポートされているGPU
タイプGPGPU
ライセンス独自の
Webサイト開発者.nvidia .com /cuda-zoneWikidataで編集する

CUDACompute Unified Device Architecture)は、独自の[ 3 ]並列コンピューティングプラットフォームおよびアプリケーションプログラミングインターフェイス(API)であり、ソフトウェアが特定の種類のグラフィックス処理装置(GPU)を使用して高速化された汎用処理を実行できるようにすることで、科学計算や高性能計算における有用性を大幅に高めます。CUDAは、 2004年にNvidiaによって作成され、2007年に正式にリリースされました。 [ 4 ]最初に導入されたとき、この名前はCompute Unified Device Architectureの頭字語でしたが、[ 5 ] Nvidiaは後に頭字語の一般的な使用をやめ、現在ではほとんど展開されていません。[ 6 ]

CUDAは、必要に応じてGPUとCPUに直接アクセスできるようにデータを管理するソフトウェア層であると同時に、様々なニーズに合わせて並列計算を可能にするAPIのライブラリでもある。 [ 7 ] [ 8 ] CUDAプラットフォームには、ドライバとランタイムカーネルに加えて、プログラマがアプリケーションを高速化するためのコンパイラ、ライブラリ、開発者ツールが含まれている。

CUDAはC言語で記述されていますが、 C++FortranPythonJuliaなど、幅広いプログラミング言語で動作するように設計されています。このアクセシビリティにより、 Direct3DOpenGLといった従来のAPIでは高度なグラフィックスプログラミングスキルが求められましたが、CUDAを利用する並列プログラミングの専門家はGPUリソ​​ースをより容易に利用できるようになります。[ 9 ] CUDA搭載GPUは、 OpenMPOpenACCOpenCLなどのプログラミングフレームワークもサポートしています。[ 10 ] [ 7 ]

背景

グラフィックス・プロセッシング・ユニット(GPU)は、特殊なコンピュータ・プロセッサとして、リアルタイムの高解像度3Dグラフィックスといった計算負荷の高いタスクの要求に応えます。2012年までに、GPUは高度に並列化されたマルチコア・システムへと進化し、大規模なデータブロックを効率的に操作できるようになりました。この設計は、次のような大規模なデータブロックを並列処理する必要があるアルゴリズムにおいて、汎用の 中央処理装置(CPU)よりも効果的です。

CUDAの起源は2000年代初頭、スタンフォード大学でコンピュータサイエンスの博士課程に在籍していたイアン・バック氏が、グラフィックスのレンダリング以外の目的でGPUを使用する実験を始めたことに遡ります。バック氏が初めてGPUに興味を持ったのは、プリンストン大学での学部時代、ビデオゲームがきっかけでした。卒業後、彼はNvidiaでインターンシップをし、GPUアーキテクチャをより深く理解しました。スタンフォード大学では、当初はQuakeDoomなどのゲームのグラフィックスパフォーマンスの限界に挑戦するために、 32枚のGeForceグラフィックスカードを使って8Kゲーミングリグを構築しました。しかし、彼の興味は、汎用並列コンピューティングにおけるGPUの可能性を探ることに移っていきました。[ 11 ]

バック氏は、GPU上で汎用コンピューティングを可能にするプログラミング言語Brookを開発しました。彼の研究は、NVIDIAと国防高等研究計画局(DARPA)の双方から支援を受けました。2004年、NVIDIAはバック氏を雇用し、GPUコンピューティングのアーキテクチャ担当ディレクターであるジョン・ニコルズ氏[ 12 ]とペアを組みました。二人はBrookをCUDAへと発展させ始めました。[ 11 ] CUDAは2007年にNVIDIAによって正式にリリースされました。

NvidiaのCEO、ジェンスン・フアンのリーダーシップの下、CUDAはGPUを科学アプリケーション向けの汎用ハードウェアとして位置付けるという同社の戦略の中核を担うようになりました。2015年までに、CUDAの開発は機械学習人工ニューラルネットワークのワークロードの高速化に重点を置くようになりました。[ 13 ]

オントロジー

次の表は、CUDA フレームワークの オントロジーの正確ではない説明を示しています。

CUDAフレームワークのオントロジー
メモリ(ハードウェア) メモリ(コード、または変数のスコープ計算(ハードウェア) 計算(コード構文) 計算(コードセマンティクス)
ラムCUDA以外の変数 ホスト プログラム 1回の定期的な通話
VRAM、GPU L2キャッシュ グローバル、定数、テクスチャ デバイス グリッド 複数のプロセッサ上で 同じサブルーチンを同時に呼び出す
GPU L1キャッシュ ローカル、共有 SM(ストリーミングマルチプロセッサ) ブロック 個別のサブルーチン呼び出し
縦糸 = 32 スレッド SIMD命令
GPU L0キャッシュ、レジスタ スレッド(別名「SP」、「ストリーミングプロセッサ」、「CUDAコア」ですが、これらの名前は現在非推奨です) ベクトル演算内の個々のスカラー演算に類似

プログラミング能力

CUDA処理フローの例
  1. メインメモリからGPUメモリにデータをコピーする
  2. CPUがGPU計算カーネルを開始する
  3. GPUのCUDAコアはカーネルを並列に実行する
  4. 結果のデータをGPUメモリからメインメモリにコピーする

ソフトウェア開発者は、CUDAプラットフォームに、CUDAアクセラレーションライブラリ、OpenACCなどのコンパイラディレクティブ、 CC++FortranPythonなどの業界標準プログラミング言語の拡張機能を通じてアクセスできます。C/C++プログラマーは、nvcc NvidiaのLLVMベースのC/C++コンパイラー)[ 14 ]またはclang自体でPTXにコンパイルされた「CUDA C/C++」を使用できます。 [ 15 ] Fortranプログラマーは、 The Portland GroupのPGI CUDA Fortranコンパイラーでコンパイルされた「CUDA Fortran」を使用できます。Pythonプログラマーは、cuPyNumericライブラリを使用して、Nvidia GPUでアプリケーションを高速化できます。

CUDAプラットフォームは、ライブラリ、コンパイラディレクティブ、CUDA C/C++、CUDA Fortranに加えて、Khronos GroupOpenCL[ 16 ] MicrosoftのDirectComputeOpenGL Compute Shader、C++ AMPなどの他の計算インターフェースもサポートしています。[ 17 ] PythonPerl、Fortran、JavaRubyLuaCommon LispHaskellRMATLABIDLJulia 、およびMathematicaのネイティブサポート用のサードパーティラッパーも利用できます。

コンピュータゲーム業界では、GPUはグラフィックスレンダリングやゲームの物理演算(破片、煙、火、流体などの物理的効果)に使用されています。例としては、PhysXBulletなどがあります。CUDAはまた、計算生物学暗号学などの分野における非グラフィカルアプリケーションを1桁以上高速化するために使用されています。[ 18 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ]

CUDAは、低レベルAPI(CUDAドライバAPI、非シングルソース)と高レベルAPI(CUDAランタイムAPI、シングルソース)の両方を提供します。最初のCUDA SDKは、2007年2月15日にMicrosoft WindowsLinux向けに公開されました。その後、バージョン2.0でMac OS Xのサポートが追加されました。[ 23 ]これは、2008年2月14日にリリースされたベータ版に取って代わります。[ 24 ] CUDAは、G8xシリーズ以降のすべてのNvidia GPU(GeForceQuadroTeslaシリーズを含む)で動作します。CUDAは、ほとんどの標準オペレーティングシステムと互換性があります。

CUDA 8.0 には、次のライブラリ (コンパイルおよびランタイム用、アルファベット順) が付属しています。

  • cuBLAS – CUDA基本線形代数サブルーチンライブラリ
  • CUDART – CUDAランタイムライブラリ
  • cuFFT – CUDA高速フーリエ変換ライブラリ
  • cuRAND – CUDA乱数生成ライブラリ
  • cuSOLVER – CUDAベースの密および疎直接ソルバーのコレクション
  • cuSPARSE – CUDA スパース行列ライブラリ
  • NPP – NVIDIA パフォーマンスプリミティブライブラリ
  • nvGRAPH – NVIDIA グラフ分析ライブラリ
  • NVML – NVIDIA 管理ライブラリ
  • NVRTC – CUDA C++ 用 NVIDIA ランタイムコンパイルライブラリ

CUDA 8.0 には、次のソフトウェア コンポーネントが付属しています。

  • nView – NVIDIA nView デスクトップ管理ソフトウェア
  • NVWMI – NVIDIA エンタープライズ管理ツールキット
  • GameWorks PhysX – マルチプラットフォームのゲーム物理エンジンです

CUDA 9.0~9.2 には、以下のコンポーネントが付属しています。

  • CUTLASS 1.0 – カスタム線形代数アルゴリズム、
  • NVIDIA ビデオデコーダーは CUDA 9.2 で廃止されましたが、現在は NVIDIA ビデオコーデック SDK で利用可能です。

CUDA 10 には、以下のコンポーネントも付属しています。

  • nvJPEG – ハイブリッド(CPU と GPU)JPEG 処理

CUDA 11.0~11.8には以下のコンポーネントが付属しています: [ 25 ] [ 26 ] [ 27 ] [ 28 ]

  • CUBは、サポートされるC++ライブラリの1つです。
  • MIG マルチインスタンス GPU サポート
  • nvJPEG2000 – JPEG 2000エンコーダーとデコーダー

利点

CUDA には、グラフィックス API を使用した従来の GPU 上の汎用計算 (GPGPU) に比べていくつかの利点があります。

  • 分散読み取り – コードはメモリ内の任意のアドレスから読み取ることができる
  • 統合仮想メモリ(CUDA 4.0以上)
  • 統合メモリ(CUDA 6.0以上)
  • 共有メモリ – CUDAは、スレッド間で共有できる高速な共有メモリ領域を公開しています。これはユーザー管理のキャッシュとして使用でき、テクスチャルックアップよりも高い帯域幅を実現します。[ 29 ]
  • GPUへのダウンロードとリードバックが高速化
  • 整数テクスチャ検索を含む整数およびビット演算の完全サポート

制限事項

  • ホストコンピュータ用でもGPUデバイス用でも、すべてのCUDAソースコードはC++の構文規則に従って処理されるようになりました。[ 30 ]これは常にそうだったわけではありません。CUDAの以前のバージョンはCの構文規則に基づいていました。[ 31 ]そのため、C++コンパイラでCコードをコンパイルするより一般的なケースと同様に、古いCスタイルのCUDAソースコードはコンパイルに失敗したり、本来の意図どおりに動作しなかったりする可能性があります。
  • OpenGL などのレンダリング言語との相互運用性は一方向であり、OpenGL は登録された CUDA メモリにアクセスできますが、CUDA は OpenGL メモリにアクセスできません。
  • ホストとデバイスのメモリ間でコピーすると、システム バスの帯域幅と遅延によりパフォーマンスが低下する可能性があります (この問題は、GPU の DMA エンジンによって処理される非同期メモリ転送によって部分的に軽減できます)。
  • 最高のパフォーマンスを得るには、スレッドは少なくとも32個のグループで実行され、合計で数千個のスレッドが必要です。32個のスレッドのそれぞれが同じ実行パスをたどる限り、プログラムコード内の分岐はパフォーマンスに大きな影響を与えません。一方、SIMD実行モデルは、本質的に分岐するタスク(例えば、レイトレーシング中に空間分割データ構造を走査するなど)では大きな制限となります。
  • 最新リビジョンではエミュレーションまたはフォールバック機能は利用できません。
  • コンパイラがターゲット GPU デバイスの制限に対する最適化を行う方法が原因で、有効な C++ にフラグが立てられ、コンパイルが妨げられる場合があります。
  • C++ランタイム型情報(RTTI) と C++ スタイルの例外処理は、デバイス コードではなく、ホスト コードでのみサポートされます。
  • 第一世代CUDA Compute Capability 1.xデバイスの単精度演算では、非正規数はサポートされておらず、代わりにゼロにフラッシュされます。また、除算と平方根演算の精度はIEEE 754準拠の単精度演算よりもわずかに低くなります。Compute Capability 2.0以上をサポートするデバイスは非正規数をサポートし、除算と平方根演算はデフォルトでIEEE 754に準拠しています。ただし、ユーザーは必要に応じて、コンパイラフラグを設定して正確な除算と正確な平方根を無効にし、非正規数をゼロにフラッシュするようにすることで、Compute Capability 1.xデバイスの以前のより高速なゲームグレードの演算性能を得ることができます。[ 32 ]
  • OpenCLとは異なり、CUDA対応のGPUは独自のものであるため、Nvidiaからのみ入手可能です。[ 33 ] [ 3 ]他のGPUにCUDAを実装する試みには次のものがあります。
    • プロジェクトコリアンダー:CUDA C++11ソースをOpenCL 1.2 Cに変換する。TensorFlowを実行することを目的としたCUDA-on-CLのフォーク。[ 34 ] [ 35 ] [ 36 ]
    • CU2CL: CUDA 3.2 C++をOpenCL Cに変換する。[ 37 ]
    • GPUOpen HIP: AMDおよびNvidia GPU向けに設計された、CUDAおよびROCmを基盤とした薄い抽象化レイヤーです。CUDA C++ソースをインポートするための変換ツールを備えています。CUDA 4.0、C++11、float16をサポートしています。
    • ZLUDAは、AMD GPUおよび旧Intel GPUにおいて、CUDAの代替として、ほぼネイティブに近いパフォーマンスを実現するドロップイン方式の代替品です。[ 38 ]開発者のAndrzej Janik氏は、IntelとAMDの両社からそれぞれ2021年と2022年にソフトウェア開発の契約を個別に締結していました。しかし、ビジネスユースケースが不足していたため、どちらの社も公式リリースを決定しませんでした。AMDとの契約には、Janik氏がAMD向けに独自にコードをリリースすることを許可する条項が含まれており、AMD GPUのみをサポートする新バージョンをリリースすることができました。[ 39 ]
    • ChipStarは、高度なOpenCL 3.0またはLevel Zeroプラットフォーム上でCUDA/HIPプログラムをコンパイルして実行することができます。[ 40 ]
    • SCALEは、AMD GPU上でCUDAソースコードを事前にコンパイルするためのCUDA互換プログラミングツールキットであり、将来的には他のGPUのサポートを拡大することを目指しています。[ 41 ]

このC++のサンプル コードは、画像からテクスチャを GPU 上の配列に読み込みます。

テクスチャ< float , 2 , cudaReadModeElementType > tex ;void foo () { cudaArray * cu_array ;// 配列を割り当てますcudaChannelFormatDesc description = cudaCreateChannelDesc < float > (); cudaMallocArray ( & cu_array , & description , width , height );// 画像データを配列にコピーしますcudaMemcpyToArray ( cu_array , image , width * height * sizeof ( float ), cudaMemcpyHostToDevice );// テクスチャパラメータを設定する(デフォルト)tex . addressMode [ 0 ] = cudaAddressModeClamp ; tex . addressMode [ 1 ] = cudaAddressModeClamp ; tex . filterMode = cudaFilterModePoint ; tex . normalized = false ; // 座標を正規化しない// 配列をテクスチャにバインドしますcudaBindTextureToArray ( tex , cu_array );// カーネルを実行dim3 blockDim ( 16 , 16 , 1 ); dim3 gridDim ( ( width + blockDim . x - 1 ) / blockDim . x , ( height + blockDim . y - 1 ) / blockDim . y , 1 ); kernel <<< gridDim , blockDim , 0 >>> ( d_data , height , width );// テクスチャから配列をアンバインドしますcudaUnbindTexture ( tex ); }__global__ void kernel ( float * odata , int height , int width ) { unsigned int x = blockIdx . x * blockDim . x + threadIdx . x ; unsigned int y = blockIdx . y * blockDim . y + threadIdx . y ; if ( x < width && y < height ) { float c = tex2D ( tex , x , y ); odata [ y * width + x ] = c ; } }

以下は、GPU上で2つの配列の積を計算するPythonの例です。非公式のPython言語バインディングはPyCUDAから入手できます。[ 42 ]

numpyをインポートし、pycuda.autoinitをインポートします。numpy.typingからNDArray float32をインポートします。pycuda.compilerからSourceModuleをインポートします。pycuda.driverからFunction In Out をインポートします。mod : SourceModule = SourceModule ( """ __global__ void multiply_them(float* dest, float* a, float* b) {  const int i = threadIdx.x;  dest[i] = a[i] * b[i]; } """ )multiply_them : Function = mod . get_function ( "multiply_them" )a : NDArray [ float32 ] = numpy ランダムランドン( 400 ) astype ( numpy.float32 ) b : NDArray [ float32 ] = numpy.float32ランダムランドン( 400 ) astype ( numpy . float32 )dest : NDArray [ float32 ] = numpy.zeros_like ( a ) multiply_them ( Out ( dest ), In ( a ), In ( b ) , block = ( 400 , 1 , 1 ) )print (宛先- a * b )

行列乗算演算を簡素化する追加のPythonバインディングは、プログラムpycublasにあります。[ 43 ]

numpyをインポートするpycublasからCUBLASMatrixをインポートA : CUBLASMatrix = CUBLASMatrix ( numpy . mat ([[ 1 , 2 , 3 ], [ 4 , 5 , 6 ]], numpy . float32 )) B : CUBLASMatrix = CUBLASMatrix ( numpy . mat ([[ 2 , 3 ], [ 4 , 5 ], [ 6 , 7 ]], numpy . float32 )) C : CUBLASMatrix = A * B print ( C . np_mat ())

CuPyはNumPyを直接置き換える:[ 44 ]

輸入カップcupy.typingからNDArrayをインポートしfloat64で保存します。a : NDArray [ float64 ] =キューピーランダムrandn ( 400 ) b : NDArray [ float64 ] =キューピーランダムランドン( 400 )dest : NDArray [ float64 ] =キューピーゼロのような( a )print (宛先- a * b )

サポートされているGPU

表記に関する注意: 計算能力XYは、プロフェッショナル向けNvidiaソフトウェアおよびNvidiaがLLVMに貢献したコードでは、SMXYまたはsm_XY(例:10.3はSM103またはsm_103)とも表記されます。[ 45 ]

以下は、CUDA SDK バージョンとマイクロアーキテクチャに基づいてサポートされている CUDA コンピューティング機能をコード名順に示します。

注意: CUDA SDK 10.2 は macOS の最後の公式リリースです。新しいリリースでは macOS はサポートされません。

CUDA のコンピューティング能力と、それに関連する GPU 半導体および GPU カード モデルのバージョン別 (さまざまなアプリケーション領域別)

* – OEM専用製品

  1. ^ CUDA Toolkit 13.0 では、Thor GPU の SM101 の名前が SM110 に変更されました。

バージョンの機能と仕様

注:より高い計算能力を持つGPUは、より低い計算能力を持つGPU向けのPTXコードを実行できます。ただし、CUDAコードを特定のGPUファミリー(同じ「X」)でのみ動作する形式にコンパイルすることは可能です。既存のコードをこのようにコンパイルした場合、新しいGPUで動作させるには再コンパイルが必要になります。[ 45 ]

機能のサポート(リストされていない機能はすべてのコンピューティング機能でサポートされています) コンピューティング能力(バージョン)
1.0、1.11.2、1.32.x3.03.23.5、3.7、5.x、6.x、7.0、7.27.58.x9.0、10.x、12.x
ワープ投票関数 (__all(), __any()) いいえ はい
ワープ投票関数 (__ballot()) いいえ はい
メモリフェンス関数 (__threadfence_system())
同期関数 (__syncthreads_count(), __syncthreads_and(), __syncthreads_or())
表面関数
スレッドブロックの3Dグリッド
ワープシャッフル機能 いいえ はい
統合メモリプログラミング
ファネルシフト いいえ はい
動的並列処理 いいえ はい
ユニフォームデータパス[ 65 ]いいえ はい
ハードウェアアクセラレーションによる非同期コピー いいえ はい
ハードウェアアクセラレーションによる分割到着/待機バリア
削減オペレーションのワープレベルのサポート
L2キャッシュ常駐管理
加速動的プログラミングのためのDPX命令 いいえ はい
分散共有メモリ
スレッドブロッククラスター
テンソルメモリアクセラレータ(TMA)ユニット
機能のサポート(リストされていない機能はすべてのコンピューティング機能でサポートされています) 1.0、1.11.2、1.32.x3.03.23.5、3.7、5.x、6.x、7.0、7.27.58.x9.0、10.x、12.x
コンピューティング能力(バージョン)

[ 66 ]

データ型

浮動小数点型

データ型 サポートされているベクタータイプ ストレージ長ビット(完全ベクトル) 使用された長さビット(単一の値) 符号ビット 指数ビット 仮数ビット コメント
E2M1 = FP4 e2m1x2 / e2m1x4 8月16日 4 1 2 1
E2M3 = FP6バリアント e2m3x2 / e2m3x4 16 / 32 6 1 2 3
E3M2 = FP6バリアント 3m2x2 / 3m2x4 16 / 32 6 1 3 2
UE4M3 ue4m3 8 7 0 4 3 スケーリングに使用(E2M1のみ)
E4M3 = FP8バリアント e4m3 / e4m3x2 / e4m3x4 8 / 16 / 32 8 1 4 3
E5M2 = FP8バリアント 5m2 / 5m2x2 / 5m2x4 8 / 16 / 32 8 1 5 2 FP16の指数/範囲は8ビットに収まる
UE8M0 ue8m0x2 16 8 0 8 0 スケーリングに使用(FP4、FP6、FP8形式)
FP16 f16 / f16x2 16 / 32 16 1 5 10
BF16 bf16 / bf16x2 16 / 32 16 1 8 7 FP32の指数/範囲は16ビットに収まる
TF32 tf32 32 19 1 8 10 FP32の指数/範囲、FP16の仮数/精度
FP32 f32 / f32x2 32 / 64 32 1 8 23
FP64 f64 64 64 1 11 52

バージョンサポート

データ型 基本操作 サポート開始 アトミックオペレーション グローバルメモリ用に サポートされています共有メモリ用に サポートされています
8ビット整数(符号付き/符号なし) 読み込み、保存、変換 1.0 該当なし該当なし
16ビット整数(符号付き/符号なし) 一般的な操作 1.0 アトミックCAS() 3.5
32ビット整数(符号付き/符号なし) 一般的な操作 1.0 アトミック関数 1.1 1.2
64ビット整数(符号付き/符号なし) 一般的な操作 1.0 アトミック関数 1.2 2.0
任意の128ビットの自明にコピー可能な型 一般的な操作 いいえ アトミックエクスチェンジ、アトミックCAS 9.0
16ビット浮動小数点FP16 加算、減算、乗算、比較、ワープシャッフル関数、変換 5.3 half2原子付加 6.0
原子付加 7.0
16ビット浮動小数点BF16 加算、減算、乗算、比較、ワープシャッフル関数、変換 8.0 原子付加 8.0
32ビット浮動小数点 一般的な操作 1.0 アトミックExch() 1.1 1.2
原子付加 2.0
32ビット浮動小数点float2およびfloat4 一般的な操作 いいえ 原子付加 9.0
64ビット浮動小数点 一般的な操作 1.3 原子付加 6.0

注:欠落した行や空白のエントリは、その項目に関する情報が不足していることを反映しています。[ 67 ]

テンソルコア

テンソルコアあたりのサイクルあたりのFMA [ 68 ]サポート開始 7.0 7.2 7.5 ワークステーション 7.5 デスクトップ 8.0 8.6 ワークステーション 8.7 8.6 デスクトップ 8.9 デスクトップ 8.9 ワークステーション 9.0 10.0 10.1 12.0
データ型 密行列の場合 疎行列の場合 第1世代(8倍速/SM) 1世代目?(8倍/SM) 第2世代(8倍速/SM) 第3世代(4倍/SM) 第4世代(4倍/SM) 第5世代(4倍/SM)
1ビット値(AND) 8.0実験 版いいえ いいえ 4096 2048 速度未定
1ビット値(XOR) 実験 的に7.5~8.9いいえ 1024 非推奨または削除されましたか?
4ビット整数 8.0~8.9(実験的) 256 1024 512
4ビット浮動小数点FP4(E2M1) 10.0 いいえ 4096 未定 512
6ビット浮動小数点FP6(E3M2およびE2M3) 10.0 いいえ 2048 未定
8ビット整数 7.2 8.0 いいえ 128 128 512 256 1024 2048 256
8ビット浮動小数点FP8(E4M3およびE5M2)、FP16累算付き 8.9 いいえ 256
FP32累算機能付き8ビット浮動小数点FP8(E4M3およびE5M2) 128 128
16ビット浮動小数点FP16(FP16累算付き) 7.0 8.0 64 64 64 256 128 512 1024 128
16ビット浮動小数点FP16とFP32累算 32 64 128 64
FP32累算機能付き16ビット浮動小数点BF16 7.5 [ 69 ]8.0 いいえ 64 [ 70 ]
32ビット(19ビット使用)浮動小数点TF32 速度未定(32?)[ 70 ]128 32 64 256 512 32
64ビット浮動小数点 8.0 いいえ いいえ 16 速度未定 32 16 未定

注:欠落した行や空白のエントリは、その項目に関する情報が不足していることを反映しています。[ 71 ] [ 72 ] [ 73 ] [ 74 ] [ 75 ] [ 76 ]

テンソルコア構成 7.0 7.2、7.5 8.0、8.6 8.7 8.9 9.0
FP16単位でのドット積単位幅(バイト単位)[ 77 ] [ 78 ] [ 79 ] [ 80 ]4 (8) 8 (16) 4 (8) 16 (32)
テンソルコアあたりのドット積単位 16 32
SM パーティションあたりの Tensor コア数 2 1
フルスループット(バイト/サイクル)[ 81 ] SMパーティションあたり[ 82 ]256 512 256 1024
FP テンソル コア: ワープ全体の行列計算の最小サイクル数 8 4 8
FPテンソルコア:フルスループットのための最小行列形状(バイト)[ 83 ]2048
INT Tensor Cores: ワープ全体の行列計算の最小サイクル数 いいえ 4
INT テンソル コア: フル スループットを実現する最小のマトリックス形状 (バイト) いいえ 1024 2048 1024

[ 84 ] [ 85 ] [ 86 ] [ 87 ]

FP64 Tensor コア構成 8.0 8.6 8.7 8.9 9.0
FP64単位でのドット積単位幅(バイト単位) 4 (32) 未定 4 (32)
テンソルコアあたりのドット積単位 4 未定 8
SM パーティションあたりの Tensor コア数 1
フルスループット(バイト/サイクル)[ 81 ] SMパーティションあたり[ 82 ]128 未定 256
ワープ全体の行列計算の最小サイクル 16 未定
フルスループットのための最小マトリックス形状(バイト)[ 83 ]2048

技術仕様

技術仕様 コンピューティング能力(バージョン)
1.0 1.1 1.2 1.3 2.x 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.1 6.2 7.0 7.2 7.5 8.0 8.6 8.7 8.9 9.0 10.x 12.x
デバイスあたりの常駐グリッドの最大数(同時カーネル実行、特定のデバイスでは少なくなる場合があります) 1 16 4 32 16 128 32 16 128 16 128
スレッドブロックのグリッドの最大次元 2 3
スレッドブロックのグリッドの最大X寸法 65535 2 31 − 1
スレッドブロックのグリッドの最大 y 次元または最大 z 次元 65535
スレッドブロックの最大次元 3
ブロックの最大xまたはy寸法 512 1024
ブロックの最大Z次元 64
ブロックあたりの最大スレッド数 512 1024
ワープサイズ 32
マルチプロセッサあたりの常駐ブロックの最大数 8 16 32 16 32 16 24 32
マルチプロセッサあたりの常駐ワープの最大数 24 32 48 64 32 64 48 64 48
マルチプロセッサあたりの常駐スレッドの最大数 768 1024 1536 2048 1024 2048 1536 2048 1536
マルチプロセッサあたりの32ビット通常レジスタの数 8K 16K 32K 64K 128キロ 64K
マルチプロセッサあたりの32ビットユニフォームレジスタの数 いいえ 2K [ 88 ]

[ 89 ]

スレッドブロックあたりの32ビットレジスタの最大数 8K 16K 32K 64K 32K 64K 32K 64K 32K 64K
スレッドあたりの32ビット通常レジスタの最大数 124 63 255
ワープあたりの32ビットユニフォームレジスタの最大数 いいえ 63 [ 88 ]

[ 90 ]

マルチプロセッサあたりの共有メモリ量(全体の共有メモリ + L1 キャッシュ(該当する場合)のうち) 16 KB 16 / 48 KiB (64 KiB のうち) 16 / 32 / 48 KiB(64 KiBのうち) 80 / 96 / 112 KiB (128 KiB のうち) 64 KB 96 KB 64 KB 96 KB 64 KB 0 / 8 / 16 / 32 / 64 / 96 KiB (128 KiB のうち) 32 / 64 KiB (96 KiB のうち) 0 / 8 / 16 / 32 / 64 / 100 / 132 / 164 KiB (192 KiB中) 0 / 8 / 16 / 32 / 64 / 100 KiB (128 KiB のうち) 0 / 8 / 16 / 32 / 64 / 100 / 132 / 164 KiB (192 KiB中) 0 / 8 / 16 / 32 / 64 / 100 KiB (128 KiB のうち) 0 / 8 / 16 / 32 / 64 / 100 / 132 / 164 / 196 / 228 KiB (256 KiB のうち) 0 / 8 / 16 / 32 / 64 / 100 KiB (128 KiB のうち)
スレッドブロックあたりの共有メモリの最大量 16 KB 48 KB 96 KB 48 KB 64 KB 163 KB 99 KB 163 KB 99 KB 227 KB 99 KB
共有メモリバンクの数 16 32
スレッドあたりのローカルメモリの量 16 KB 512 キロバイト
CUDA C/C++ でアクセス可能な定数メモリ サイズ(1 バンク、PTX は 11 バンクにアクセス可能、SASS は 18 バンクにアクセス可能) 64 KB
一定のメモリのためのマルチプロセッサごとのキャッシュワーキングセット 8 KB 4 KB 8 KB
テクスチャメモリ用のマルチプロセッサごとのキャッシュワーキングセット TPC あたり 16 KiB TPC あたり 24 KiB 12 KB 12~48 KiB [ 91 ]24 KB 48 KB 32 KiB [ 92 ]24 KB 48 KB 24 KB 32~128 KB 32~64 KB 28 – 192 KB 28~128 KB 28 – 192 KB 28~128 KB 28 – 256 KB
CUDA配列 にバインドされた1Dテクスチャ参照の最大幅8192 65536 131072
線形メモリ にバインドされた 1D テクスチャ参照の最大幅2 272 282 272 282 272 28
1D レイヤーテクスチャ参照 の最大幅とレイヤー数8192 × 512 16384 × 2048 32768×2048
CUDA配列に バインドされた2Dテクスチャ参照の最大幅と高さ65536 × 32768 65536 × 65535 131072 x 65536
線形メモリに バインドされた 2D テクスチャ参照の最大幅と高さ65000 x 65000 65536 x 65536 131072 x 65000
テクスチャギャザーをサポートする CUDA 配列に バインドされた 2D テクスチャ参照の最大幅と高さ該当なし16384 x 16384 32768 x 32768
2Dレイヤー テクスチャ参照 の最大幅、高さ、およびレイヤー数8192 × 8192 × 512 16384 × 16384 × 2048 32768 x 32768 x 2048
線形メモリまたは CUDA 配列にバインドされた 3D テクスチャ参照の最大幅、高さ、深さ2048 34096 316384 3
キューブマップテクスチャ参照の最大幅(および高さ) 該当なし16384 32768
キューブマップのレイヤー化テクスチャ参照の 最大幅(および高さ)とレイヤー数該当なし16384 × 2046 32768 × 2046
カーネル にバインドできるテクスチャの最大数128 256
CUDA配列 にバインドされた1Dサーフェス参照の最大幅サポートされ ていません65536 16384 32768
1D 層状サーフェス参照 の最大幅と層数65536 × 2048 16384 × 2048 32768 × 2048
CUDA配列にバインドされた 2Dサーフェス参照の最大幅と高さ65536 × 32768 16384 × 65536 131072 × 65536
2D階層化サーフェス参照 の最大幅、高さ、およびレイヤー数65536 × 32768 × 2048 16384 × 16384 × 2048 32768 × 32768 × 2048
CUDA配列にバインドされた 3Dサーフェス参照の最大幅、高さ、深さ65536 × 32768 × 2048 4096 × 4096 × 4096 16384 × 16384 × 16384
CUDA配列にバインドされたキューブマップサーフェス参照の最大幅(および高さ) 32768 16384 32768
キューブマップのレイヤー化サーフェス参照 の最大幅とレイヤー数32768 × 2046 16384 × 2046 32768 × 2046
カーネル にバインドできるサーフェスの最大数8 16 32
カーネルあたりの最大命令数 200万 5億1200万
スレッドブロッククラスターあたりのスレッドブロックの最大数[ 93 ]いいえ 16 8
技術仕様 1.0 1.1 1.2 1.3 2.x 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.1 6.2 7.0 7.2 7.5 8.0 8.6 8.7 8.9 9.0 10.x 12.x
コンピューティング能力(バージョン)
[ 94 ] [ 95 ]

マルチプロセッサアーキテクチャ

アーキテクチャ仕様 コンピューティング能力(バージョン)
1.0 1.1 1.2 1.3 2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.1 6.2 7.0 7.2 7.5 8.0 8.6 8.7 8.9 9.0 10.x 12.x
INT32演算演算用のALUレーン数 8 32 48 192 [ 96 ]128 128 64 128 128 64 64 64 128
INT32またはFP32算術演算用のALUレーンの数 該当なし該当なし
FP32演算処理用のALUレーン数 64 64 128 128
FP16x2演算用のALUレーン数 いいえ 1 128 [ 97 ]128 [ 98 ]64 [ 99 ]
FP64演算用のALUレーン数 いいえ 1 FP32による16 [ 100 ]FP32による4 [ 101 ]8 8 / 64 [ 102 ]64 4 [ 103 ]32 4 32 2 32 2 64 2
ロード/ストアユニットの数 2 SMあたり4個 2 SMあたり8個 2SM/3SMあたり8個[ 102 ]3 SMあたり8個 16 32 16 32 16 32
単精度浮動小数点超越関数の特殊関数ユニットの数 2 [ 104 ]4 8 32 16 32 16
テクスチャマッピングユニット(TMU)の数 2 SMあたり4個 2 SMあたり8個 2 / 3SMあたり8個[ 102 ]3 SMあたり8個 4 4 / 8 [ 102 ]16 8 16 8 4
均一INT32演算演算用のALUレーン数 いいえ 2 [ 105 ]
テンソルコアの数 いいえ 8(第1世代)[ 106 ]0 / 8 [ 102 ] (第2世代) 4(第3世代) 4(第4世代)
レイトレーシングコアの数 いいえ 0 / 1 [ 102 ] (第1世代) いいえ 1(第2世代) いいえ 1(第3世代) いいえ
SMパーティション数 = 処理ブロック数[ 107 ]1 4 2 4
SMパーティションあたりのワープスケジューラの数 1 2 4 1
単一スケジューラが各サイクルで発行する新規命令の最大数[ 108 ]2 [ 109 ]1 2 [ 110 ]2 1
データキャッシュと共有メモリの統合メモリのサイズ 16 KiB [ 111 ]16 KiB [ 111 ]64 KB 128 KB 64 KiB SM + 24 KiB L1 (個別) [ 112 ]96 KiB SM + 24 KiB L1 (個別) [ 112 ]64 KiB SM + 24 KiB L1 (個別) [ 112 ]64 KiB SM + 24 KiB L1 (個別) [ 112 ]96 KiB SM + 24 KiB L1 (個別) [ 112 ]64 KiB SM + 24 KiB L1 (個別) [ 112 ]128 KB 96 KiB [ 113 ]192 キロバイト 128 KB 192 キロバイト 128 KB 256 キロバイト
GPUあたりのL3命令キャッシュのサイズ 32 KiB [ 114 ]L2データキャッシュを使用する
テクスチャ プロセッサ クラスタ (TPC) あたりの L2 命令キャッシュのサイズ 8 KB
SMあたりのL1.5命令キャッシュのサイズ[ 115 ]4 KB 32 KB 32 KB 48 KiB [ 92 ]128 KB 32 KB 128 KB 約46 KiB [ 116 ]128 KiB [ 117 ]
SMあたりのL1命令キャッシュのサイズ 8 KB 8 KB
SMパーティションあたりのL0命令キャッシュのサイズ SMごとに1つのパーティションのみ いいえ 12 KB 16 KiB? [ 118 ]32 KB
命令幅[ 115 ]32ビット命令と64ビット命令[ 119 ]64ビット命令 + 7命令ごとに64ビット制御ロジック 64ビット命令 + 3命令ごとに64ビット制御ロジック 128ビットの命令と制御ロジックの組み合わせ
メモリパーティションあたりのメモリバス幅(ビット) 64 ((G)DDR) 32 ((G)DDR) 512(HBM) 32 ((G)DDR) 512(HBM) 32 ((G)DDR) 512(HBM) 32 ((G)DDR) 512(HBM) 32 ((G)DDR)
メモリパーティションあたりのL2キャッシュ 16 KiB [ 120 ]32 KiB [ 120 ]128 KB 256 キロバイト 1 MiB 512 キロバイト 128 KB 512 キロバイト 256 キロバイト 128 KB 768 キロバイト 64 KB 512 キロバイト 4 MiB 512 キロバイト 8 MiB [ 121 ]5 MiB 6.25 MiB 8 MiB [ 122 ]
メモリパーティションあたり(または後期モデルでは GPC あたり)のレンダリング出力ユニット(ROP)の数 4 8 4 8 16 8 12 8 4 16 2 8 16 GPCあたり16 GPCあたり3 GPCあたり16
アーキテクチャ仕様 1.0 1.1 1.2 1.3 2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.1 6.2 7.0 7.2 7.5 8.0 8.6 8.7 8.9 9.0 10.x 12.x
コンピューティング能力(バージョン)

詳細については、Nvidia CUDA C++プログラミングガイドをご覧ください。[ 123 ]

CUDAアーキテクチャの使用法

競合他社との比較

CUDA は、 Intel OneAPIAMD ROCmなどの他の GPU コンピューティング スタックと競合します。

Nvidia の CUDA はクローズドソースですが、Intel の OneAPI と AMD の ROCm はオープンソースです。

インテル OneAPI

oneAPIは、オープンスタンダードに基づいたイニシアチブであり、複数のハードウェアアーキテクチャ向けのソフトウェア開発をサポートするために作成されました。[ 126 ] oneAPIライブラリは、特別利益団体によって公開されているオープン仕様を実装する必要があり、あらゆる開発者や組織が独自のバージョンのoneAPIライブラリを実装する可能性を提供します。[ 127 ] [ 128 ]

もともとインテルが開発したハードウェアですが、富士通や Huawei なども採用しています。

統合アクセラレーション財団(UXL)

Unified Acceleration Foundation(UXL)は、OneAPIイニシアチブの継続に取り組む新しい技術コンソーシアムであり、ワーキンググループと特別利益団体(SIG)を通じて、新しいオープンスタンダードのアクセラレータソフトウェアエコシステム、関連するオープンスタンダード、および仕様プロジェクトの構築を目指しています。NvidiaのCUDAに代わるオープンな選択肢を提供することを目指しています。主な支援企業は、Intel、Google、ARM、Qualcomm、Samsung、Imagination、VMwareです。[ 129 ]

AMD ROCm

ROCm [ 130 ]は、 Advanced Micro Devices (AMD) のグラフィックスプロセッシングユニット(GPU)プログラミング用のオープンソースソフトウェアスタックです。

参照

参考文献

  1. ^ 「NVIDIA® CUDA™、GPUコンピューティングのパワーを解き放つ - プレスリリース」nvidia.com。2007年3月29日時点のオリジナルよりアーカイブ。2025年1月26日閲覧。
  2. ^ 「/compute/cuda/redistのインデックス」 。 2026年1月23日閲覧
  3. ^ a b Shah, Agam. 「NvidiaはサードパーティによるCUDAチップの製造に完全に反対しているわけではない」 www.theregister.com . 2024年4月25日閲覧
  4. ^ 「Nvidia CUDAホームページ」 2017年7月18日。
  5. ^ Shimpi, Anand Lal; Wilson, Derek (2006年11月8日). 「NvidiaのGeForce 8800 (G80): DirectX 10向けに再設計されたGPU」 . AnandTech. 2010年4月24日時点のオリジナルよりアーカイブ。 2015年5月16日閲覧
  6. ^ 「Introduction – nsight-visual-studio-edition 12.6 ドキュメント」 . docs.nvidia.com . 2024年10月10日閲覧
  7. ^ a b Abi-Chahla, Fedy (2008年6月18日). 「NvidiaのCUDA:CPUの終焉か?」 . Tom's Hardware . 2015年5月17日閲覧
  8. ^ Jones, Stephen (2025-04-22). What is CUDA? (ビデオ). Computerphile . 2025年7月24日閲覧– YouTube経由。
  9. ^ Zunitch, Peter (2018年1月24日). 「CUDA vs. OpenCL vs. OpenGL」 . Videomaker . 2018年9月16日閲覧。
  10. ^ "OpenCL" . NVIDIA Developer . 2013年4月24日. 2019年11月4日閲覧
  11. ^ a bコスグローブ、エマ. 「イアン・バックはNVIDIAの秘密兵器を開発した。彼は残りのキャリアをその秘密兵器の守備に費やすことになるかもしれない」 . Business Insider . 2025年7月24日閲覧
  12. ^ 「ジョン・ニコルズ氏の訃報 – カリフォルニア州ロスアルトス」マーキュリー・ニュース2011年9月29日2025年11月23日閲覧ジョン・リチャード・ニコルズ氏は、がんとの勇敢な闘病の末、2011年8月13日にカリフォルニア州ロスアルトスで亡くなりました。彼は1950年3月6日、ケネス・ニコルズとキャサリン・ニコルズ夫妻の息子として生まれ、マサチューセッツ州ウィルブラハムで育ちました。
  13. ^ Witt, Stephen (2023年11月27日). 「Jensen HuangのNvidiaがAI革命をいかに推進しているか」 . The New Yorker . ISSN 0028-792X . 2023年12月10日閲覧 
  14. ^ 「CUDA LLVMコンパイラ」 2012年5月7日。
  15. ^ 「clang を使用した CUDAコンパイル – LLVM 22.0.0git ドキュメント」。llvm.org
  16. ^ YouTubeGPU 上の最初の OpenCL デモ
  17. ^ YouTubeNvidia CUDA 対応 GPU 上で実行される DirectCompute Ocean デモ
  18. ^ Vasiliadis, Giorgos; Antonatos, Spiros; Polychronakis, Michalis; Markatos, Evangelos P.; Ioannidis, Sotiris (2008年9月). 「Gnort: グラフィックスプロセッサを用いた高性能ネットワーク侵入検知」(PDF) .侵入検知の最近の進歩. コンピュータサイエンス講義ノート. 第5230巻. pp.  116– 134. doi : 10.1007/978-3-540-87403-4_7 . ISBN 978-3-540-87402-7
  19. ^ Schatz, Michael C.; Trapnell, Cole; Delcher, Arthur L.; Varshney, Amitabh (2007). 「グラフィックス処理ユニットを用いたハイスループット配列アライメント」 . BMC Bioinformatics . 8 474. doi : 10.1186/1471-2105-8-474 . PMC 2222658. PMID 18070356 .  
  20. ^ Manavski, Svetlin A.; Giorgio, Valle (2008). 「CUDA互換GPUカードはSmith-Waterman配列アライメントのため効率的なハードウェアアクセラレータとして役立つ」 . BMC Bioinformatics . 10 (Suppl 2): S10. doi : 10.1186/1471-2105-9-S2-S10 . PMC 2323659. PMID 18387198 .  
  21. ^ 「Pyrit – Google Code」
  22. ^ 「Nvidia GPUを科学計算に活用する」 boinc.berkeley.edu Berkeley Open Infrastructure for Network Computing (BOINC). 2008年12月18日. 2008年12月28日時点のオリジナルよりアーカイブ。 2017年8月8日閲覧
  23. ^ 「Nvidia CUDAソフトウェア開発キット(CUDA SDK)– MAC OS X用リリースノートバージョン2.0」 。2009年1月6日時点のオリジナルよりアーカイブ
  24. ^ 「CUDA 1.1 – Mac OS Xで利用可能」 2008年2月14日. 2008年11月22日時点のオリジナルよりアーカイブ
  25. ^ 「CUDA 11の機能が公開されました」。2020年5月14日。
  26. ^ 「CUDA Toolkit 11.1でGeForce RTX 30シリーズおよびQuadro RTXシリーズGPUのサポートが導入されました」。2020年9月23日。
  27. ^ 「NVIDIA CUDA 11.2の新機能によるメモリ割り当ての強化」 2020年12月16日。
  28. ^ 「CUDA 11.3の新機能を探る」 2021年4月16日。
  29. ^シルバースタイン, マーク;シュスター, アッサフ; ガイガー, ダン; パトニー, アンジュル; オーウェンズ, ジョン D. (2008). 「ソフトウェア管理キャッシュによるGPU上での積和演算の効率的な計算」(PDF) .第22回国際スーパーコンピューティング会議(ICS '08)の議事録(PDF) . 第22回国際スーパーコンピューティング会議(ICS '08)の議事録. pp.  309– 318. doi : 10.1145/1375527.1375572 . ISBN 978-1-60558-158-3
  30. ^ 「CUDA C プログラミングガイド v8.0」(PDF) . nVidia Developer Zone . 2017年1月. p. 19. 2017年3月22日閲覧
  31. ^ 「NVCCは.cuファイルのC++コンパイルを強制する」 2011年11月29日。
  32. ^ Whitehead, Nathan; Fit-Florea, Alex. 「精度とパフォーマンス:Nvidia GPUの浮動小数点およびIEEE 754準拠」(PDF) . Nvidia . 2014年11月18日閲覧
  33. ^ 「CUDA対応製品」 . CUDA Zone . Nvidia Corporation . 2008年11月3日閲覧。
  34. ^ 「Corianderプロジェクト: CUDAコードをOpenCLにコンパイルしてどこでも実行」。Phoronix。
  35. ^ Perkins, Hugh (2017). 「cuda-on-cl」(PDF) . IWOCL . 2017年8月8日閲覧
  36. ^ 「hughperkins/coriander: OpenCL™ 1.2デバイス用NVIDIA® CUDA™コードの構築」 GitHub。2019年5月6日。
  37. ^ 「CU2CLドキュメント」 . chrec.cs.vt.edu .
  38. ^ 「GitHub – vosen/ZLUDA」 . GitHub .
  39. ^ Larabel, Michael (2024-02-12)、「AMDがROCm上に構築されたドロップインCUDA実装に静かに資金提供:オープンソース化」Phoronix2024年2月12日閲覧
  40. ^ 「GitHub – chip-spv/chipStar」 . GitHub .
  41. ^ 「新しいSCALEツールにより、CUDAアプリケーションをAMD GPUで実行可能」 Tom's Hardware、2024年7月17日。
  42. ^ 「PyCUDA」
  43. ^ "pycublas" . 2009年4月20日時点のオリジナルよりアーカイブ2017年8月8日閲覧。
  44. ^ "CuPy" . cupy.dev . 2025年9月23日閲覧
  45. ^ a b「NVPTXバックエンドのユーザーガイド — LLVM 22.0.0gitドキュメント。llvm.org
  46. ^ 「NVIDIA CUDAプログラミングガイド バージョン1.0」(PDF) 2007年6月23日。
  47. ^ 「NVIDIA CUDAプログラミングガイド バージョン2.1」(PDF)。2008年12月8日。
  48. ^ 「NVIDIA CUDAプログラミングガイド バージョン2.2」(PDF)。2009年4月2日。
  49. ^ 「NVIDIA CUDAプログラミングガイド バージョン2.2.1」(PDF)。2009年5月26日。
  50. ^ 「NVIDIA CUDAプログラミングガイド。バージョン2.3.1」(PDF)。2009年8月26日。
  51. ^ 「NVIDIA CUDAプログラミングガイド バージョン3.0」(PDF) 2010年2月20日。
  52. ^ 「NVIDIA CUDA C プログラミングガイド。バージョン3.1.1」(PDF)。2010年7月21日。
  53. ^ 「NVIDIA CUDA C プログラミングガイド バージョン3.2」(PDF) 2010年11月9日。
  54. ^ 「CUDA 11.0 リリースノート」。NVIDIA Developer
  55. ^ 「CUDA 11.1 リリースノート」。NVIDIA Developer
  56. ^ 「CUDA 11.5 リリースノート」。NVIDIA Developer
  57. ^ 「CUDA 11.8 リリースノート」。NVIDIA Developer
  58. ^ 「サポートマトリックス – NVIDIA cuDNNバックエンド」 . docs.nvidia.com . 2025年8月20日閲覧
  59. ^ 「NVIDIA Quadro NVS 420の仕様」 TechPowerUp GPUデータベース2023年8月25日。
  60. ^ Larabel, Michael (2017年3月29日). 「NVIDIA、NouveauでTegra X2 GPUのサポートを開始」 . Phoronix . 2017年8月8日閲覧
  61. ^ TechPowerUp のNvidia Xavier の仕様(暫定版)
  62. ^ 「ようこそ – Jetson Linux開発者ガイド 34.1 ドキュメント」
  63. ^ 「NVIDIA が Xavier SoC 向けにオープンソースの Volta GPU サポートを開始」
  64. ^ 「NVIDIA Ada Lovelace アーキテクチャ」
  65. ^マイクロベンチマークによるチューリング GPU アーキテクチャの分析
  66. ^ 「H.1. 機能と技術仕様 – 表13. コンピューティング能力ごとの機能サポート」 . docs.nvidia.com . 2020年9月23日閲覧
  67. ^ 「CUDA C++ プログラミング ガイド」
  68. ^実際に実行された Fused-Multiply-Add、密行列
  69. ^ 7.5 以降は SASS、8.0 以降は PTX
  70. ^ a b SASSでの非公式サポート
  71. ^ “技術概要。NVIDIA Jetson AGX Orin シリーズ” (PDF) . nvidia.com 2023 年9 月 5 日に取得
  72. ^ 「NVIDIA Ampere GA102 GPUアーキテクチャ」(PDF) . nvidia.com . 2023年9月5日閲覧
  73. ^ルオ、ウェイル;ファン、ルイボ。リー、ゼユ。ドゥ、ダヨウ。王、強。チュー、シャオウェン(2024)。 「Nvidia Hopper GPU アーキテクチャのベンチマークと分析」。arXiv : 2402.13499v1 [ cs.AR ]。
  74. ^ 「データシート NVIDIA A40」(PDF) . nvidia.com . 2024年4月27日閲覧
  75. ^ 「NVIDIA AMPERE GA102 GPUアーキテクチャ」(PDF) 2024年4月27日。
  76. ^ 「データシート NVIDIA L40」(PDF) . nvidia.com . 2024年4月27日.
  77. ^ホワイトペーパーでは、Tensor Coreの立方体図は、ドット積ユニットの幅を高さで割った値(VoltaとTuringでは4 FP16、A100では8 FP16、GA102では4 FP16、GH100では16 FP16)を表しています。他の2つの次元はドット積ユニットの数を表しています(VoltaとTuringでは4x4 = 16、AmpereとHopperでは8x4 = 32)。結果として得られる灰色のブロックは、1サイクルあたりのFP16 FMA演算です。Tensor CoreなしのPascalは速度比較のためのみ示されており、FP16以外のデータ型を持つVolta V100も同様です。
  78. ^ 「NVIDIA Turingアーキテクチャホワイトペーパー」(PDF) . nvidia.com . 2023年9月5日閲覧
  79. ^ 「NVIDIA Tensor Core GPU」(PDF) . nvidia.com . 2023年9月5日閲覧
  80. ^ 「NVIDIA Hopper アーキテクチャの詳細」。2022年3月22日。
  81. ^ a b形状 x 変換されたオペランドサイズ、例:2つのテンソルコア x 4x4x4xFP16/サイクル = 256バイト/サイクル
  82. ^ a b = 製品の最初の3つのテーブル行
  83. ^ a b = 前の2つの表の行の積; 形状: 例: 8x8x4xFP16 = 512 バイト
  84. ^ Sun, Wei; Li, Ang; Geng, Tong; Stuijk, Sander; Corporaal, Henk (2023). 「マイクロベンチマークによるTensorコアの解析:レイテンシ、スループット、数値挙動」. IEEE Transactions on Parallel and Distributed Systems . 34 (1): 246– 261. arXiv : 2206.02874 . Bibcode : 2023ITPDS..34..246S . doi : 10.1109/tpds.2022.3217824 . S2CID 249431357 . 
  85. ^ 「並列スレッド実行 ISA バージョン 7.7」
  86. ^ Raihan, Md Aamir; Goli, Negar; Aamodt, Tor (2018). 「ディープラーニングアクセラレータ対応GPUのモデリング」. arXiv : 1811.08309 [ cs.MS ].
  87. ^ 「NVIDIA Ada Lovelace アーキテクチャ」
  88. ^ a b賈、浙;マッジョーニ、マルコ。スミス、ジェフリー。ダニエレ・パオロ・スカルパッツァ (2019) 「マイクロベンチマークによる NVidia Turing T4 GPU の分析」。arXiv : 1903.07486 [ cs.DC ]。
  89. ^バージェス、ジョン (2019). 「RTX ON – NVIDIA TURING GPU」. 2019 IEEE Hot Chips 31 シンポジウム (HCS) . pp.  1– 27. doi : 10.1109/HOTCHIPS.2019.8875651 . ISBN 978-1-7281-2089-8. S2CID  204822166 .
  90. ^バージェス、ジョン (2019). 「RTX ON – NVIDIA TURING GPU」. 2019 IEEE Hot Chips 31 シンポジウム (HCS) . pp.  1– 27. doi : 10.1109/HOTCHIPS.2019.8875651 . ISBN 978-1-7281-2089-8. S2CID  204822166 .
  91. ^デバイスによって異なります
  92. ^ a b「Tegra X1」。 2015 年 1 月 9 日。
  93. ^ NVIDIA H100 Tensor コア GPU アーキテクチャ
  94. ^ H.1. 機能と技術仕様 – 表14. コンピューティング能力ごとの技術仕様
  95. ^ NVIDIA Hopper アーキテクチャの詳細
  96. ^プログラミングガイドによると160個の整数命令しか実行できない
  97. ^ [1]によれば128。FP32からの64 + 64の個別ユニット?
  98. ^ 64 個の FP32 コアと 64 個の柔軟な FP32/INT コア。
  99. ^ 「CUDA C++ プログラミング ガイド」 . docs.nvidia.com .
  100. ^ 32 個の FP32 レーンを合計 16 個の FP64 レーンに統合します。モデルによってはこれより少なくなる場合があります。
  101. ^ 16 個の FP32 レーンのみでサポートされ、4 個の FP64 レーンに統合されます
  102. ^ a b c d e fモデルによって異なります
  103. ^実効速度はおそらくFP32ポート経由です。実際のFP64コアについては説明がありません。
  104. ^整数の加算や比較にも使えます
  105. ^各SMパーティションにつき2クロックサイクル/命令Burgess, John (2019). 「RTX ON – The NVIDIA TURING GPU」2019 IEEE Hot Chips 31 Symposium (HCS) . pp.  1– 27. doi : 10.1109/HOTCHIPS.2019.8875651 . ISBN 978-1-7281-2089-8. S2CID  204822166 .
  106. ^ Durant, Luke; Giroux, Olivier; Harris, Mark; Stam, Nick (2017年5月10日). 「Voltaの内側:世界最先端データセンターGPU」 . Nvidia開発者ブログ.
  107. ^ Fermi や Kepler とは異なり、スケジューラとディスパッチャには専用の実行ユニットがあります。
  108. ^ディスパッチは、1サイクル以上かかる場合、同時にオーバーラップできます(実行ユニットが32/SMパーティションより少ない場合)。
  109. ^ MADパイプとSFUパイプを二重発行可能
  110. ^一度に2つの命令を発行できるスケジューラは1つだけです。最初のスケジューラは奇数IDのワープを担当し、2番目のスケジューラは偶数IDのワープを担当します。
  111. ^ a b共有メモリのみ、データキャッシュなし
  112. ^ a b c d e f共有メモリは別ですが、L1にはテクスチャキャッシュが含まれます
  113. ^ 「H.6.1. アーキテクチャ」 . docs.nvidia.com . 2019年5月13日閲覧
  114. ^ Wong, Henry; Papadopoulou, Misel-Myrto; Sadooghi-Alvandi, Maryam; Moshovos, Andreas (2010年3月).マイクロベンチマーキングによるGPUマイクロアーキテクチャの解明(PDF) . 2010 IEEE International Symposium on Performance Analysis of Systems & Software (ISPASS). White Plains, NY, USA: IEEE Computer Society. doi : 10.1109/ISPASS.2010.5452013 . ISBN 978-1-4244-6023-6
  115. ^ a b賈、浙;マッジョーニ、マルコ。スタイガー、ベンジャミン。スカルパッツァ、ダニエレ P. (2018)。 「マイクロベンチマークによる NVIDIA Volta GPU アーキテクチャの分析」。arXiv : 1804.06826 [ cs.DC ]。
  116. ^賈、浙;マッジョーニ、マルコ。スミス、ジェフリー。ダニエレ・パオロ・スカルパッツァ (2019) 「マイクロベンチマークによる NVidia Turing T4 GPU の分析」。arXiv : 1903.07486 [ cs.DC ]。
  117. ^ 「マイクロベンチマークによる Ampere GPU アーキテクチャの分析」
  118. ^ Jia、Zheに注意してください。マッジョーニ、マルコ。スミス、ジェフリー。ダニエレ・パオロ・スカルパッツァ (2019) 「マイクロベンチマークによる NVidia Turing T4 GPU の分析」。arXiv : 1903.07486 [ cs.DC ]。これに反対し、SMパーティションあたり2 KiBのL0命令キャッシュとSMあたり16 KiBのL1命令キャッシュを主張する。
  119. ^ "asfermi オペコード" . GitHub .
  120. ^ a bテクスチャエンジンのみでアクセスする場合
  121. ^ RTX 4060、RTX 4070、RTX 4070 Ti、RTX 4090では25%が無効
  122. ^ RTX 5070 TiとRTX 5090では25%が無効
  123. ^ 「CUDA C++プログラミングガイド、コンピューティング機能」 . docs.nvidia.com . 2025年2月6日閲覧
  124. ^ 「nVidia CUDAバイオインフォマティクス:BarraCUDA」 . BioCentric . 2019年7月19日. 2019年10月15日閲覧
  125. ^ 「パートV:物理シミュレーション」。NVIDIA Developer 。 2020年9月11日閲覧
  126. ^ 「oneAPIプログラミングモデル」 . oneAPI.io . 2024年7月27日閲覧
  127. ^ "仕様 | oneAPI" . oneAPI.io . 2024年7月27日閲覧
  128. ^ 「oneAPI仕様 – oneAPI仕様1.3-rev-1ドキュメント」 . oneapi-spec.uxlfoundation.org . 2024年7月27日閲覧
  129. ^ Cherney, Max A.; Cherney, Max A. (2024年3月26日). 「独占記事:ソフトウェアを標的にNvidiaのAI支配を打ち破る陰謀の背後」ロイター. 2024年4月5日閲覧
  130. ^ 「質問:ROCmは何の略ですか? · Issue #1628 · RadeonOpenCompute/ROCm」 . Github.com . 2022年1月18日閲覧

さらに読む