グラフィックス処理ユニット グラフィックス処理ユニット(GPU)は、特殊なプロセッサです。3Dグラフィックスなどの リアルタイム 高解像度で計算負荷の高いタスクの要求に対応します。2012年までに、GPUは高度に並列化されたマルチコア システムへと進化し、大量のデータ を効率的に処理できるようになりました。この設計は、以下のような大量のデータを並列処理するアルゴリズムにおいて、汎用 中央処理装置 (CPU)よりも効果的です。
オントロジー 以下の表は、CUDAオントロジー のおおまかな概要を示しています。
利点 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++スタイルの例外処理は、ホストコードでのみサポートされており、デバイスコードではサポートされていません。 第1世代のCUDA演算能力1.xデバイスの単精度演算 では、非正規化数は サポートされておらず、代わりにゼロにフラッシュされます。また、除算と平方根演算の精度は、IEEE 754準拠の単精度演算よりもわずかに低くなっています。演算能力2.0以上をサポートするデバイスでは、非正規化数がサポートされ、除算と平方根演算はデフォルトでIEEE 754に準拠しています。ただし、コンパイラフラグを設定して正確な除算と正確な平方根を無効にし、非正規化数をゼロにフラッシュするようにすれば、必要に応じて演算能力1.xデバイスの以前の高速なゲームグレードの演算を実現できます。[ 32 ] OpenCL とは異なり、CUDA対応GPUはNvidiaからのみ入手可能であり、これはCUDAが独自技術であるためである。[ 33 ] [ 3 ] 他のGPUにCUDAを実装しようとする試みには以下のようなものがある。
例 このC++ のサンプルコードは、画像からテクスチャを読み込み、GPU上の配列に格納します。
texture < 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 ]
import numpy import pycuda.autoinit from numpy.typing import NDArray , float32 from pycuda.compiler import SourceModule from pycuda.driver import 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 ( dest - a * b ) 行列乗算演算を簡略化するための追加のPythonバインディングは、 pycublas プログラムで見つけることができます。[ 43 ]
import numpy from pycublas import 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 ( dest - a * b )
サポートされているGPU 表記に関する注記:NvidiaのプロフェッショナルソフトウェアおよびNvidiaがLLVMに提供したコードでは、計算能力XYはSMXYまたはsm_XY(例:10.3はSM103またはsm_103)とも表記されます。[ 45 ]
以下は、CUDA SDKのバージョンとマイクロアーキテクチャに基づいてサポートされているCUDAコンピューティング機能をコード名順に一覧にした表です。
注:CUDA SDK 10.2はmacOS向けの最後の公式リリースであり、以降のリリースではmacOSのサポートは提供されません。
バージョン別のCUDA演算能力と、それに関連するGPU半導体およびGPUカードモデル(様々なアプリケーション分野別に分類):
* – OEM 専用製品
↑ CUDA Toolkit 13.0 では、Thor GPU 用の SM101 が SM110 に名称変更されました。
バージョン機能と仕様 注: 演算能力の高い GPU は、演算能力の低い GPU 向けに作成された PTX コードを実行できます。ただし、CUDA コードを、1 つのファミリー (同じ「X」) の GPU でのみ動作する形式にコンパイルすることは可能です。既存のコードがこのようにコンパイルされている場合、新しい GPU で動作させるには再コンパイルが必要になります。[ 45 ]
[ 66 ]
データ型
バージョンサポート 注:行が欠落している場合や空欄がある場合は、その項目に関する情報が不足していることを示しています。[ 67 ]
マルチプロセッサアーキテクチャ
詳細については、Nvidia CUDA C++ プログラミング ガイドを参照してください。[ 122 ]
競合他社との比較 CUDAは、 Intel OneAPI やAMD ROCm といった他のGPUコンピューティングスタックと競合する。
NvidiaのCUDAはクローズドソースであるのに対し、IntelのOneAPIとAMDのROCmはオープンソースである。
Intel OneAPI oneAPI は 、複数のハードウェア アーキテクチャ向けのソフトウェア開発をサポートするために作成されたオープン スタンダードに基づくイニシアチブです。[ 125 ] oneAPI ライブラリは、特別利益団体によって公開で議論されるオープン仕様を実装する必要があり、これにより、あらゆる開発者や組織が独自の oneAPI ライブラリを実装することが可能になります。[ 126 ] [ 127 ]
元々はインテルが開発した製品だが、富士通やファーウェイなどもハードウェアを採用している。
ユニファイド・アクセラレーション・ファンデーション(UXL)Unified Acceleration Foundation (UXL) は、OneAPI イニシアチブの継続に取り組む新しいテクノロジー コンソーシアムであり、ワーキング グループと特別利益団体 (SIG) を通じて、新しいオープン スタンダード アクセラレータ ソフトウェア エコシステム、関連するオープン スタンダード、および仕様プロジェクトを作成することを目標としています。目標は、Nvidia の CUDA に代わるオープンな代替手段を提供することです。主な背後にある企業は、Intel、Google、ARM、Qualcomm、Samsung、Imagination、および VMware です。[ 128 ]
参考文献 ↑ 「NVIDIA® CUDA™ が GPUコンピューティングのパワーを解き放つ - プレスリリース」。nvidia.com 。 2007年3月29日のオリジナルからアーカイブ。 2025年 1月26日 取得 。 ↑ "Index of /compute/cuda/redist" 。 2026年 6月16日 取得 。 1 2 Shah, Agam. 「NvidiaはサードパーティによるCUDAチップ製造に完全に反対しているわけではない」 www.theregister.com 2024 年4月25日 取得 。 ↑ 「Nvidia CUDA ホームページ」 。2017年7月18日。 ↑ Shimpi, Anand Lal; Wilson, Derek (2006年11月8日). "NvidiaのGeForce 8800 (G80): DirectX 10 向けに再設計されたGPU " . AnandTech. 2010年4月24日の オリジナルからアーカイブ済み。 2015年 5月16日 取得 。 ↑ 「はじめに – nsight-visual-studio-edition 12.6 ドキュメント」 。docs.nvidia.com 。 2024年10月10日 取得 。 1 2 Abi-Chahla, Fedy (2008年6月18日). 「NvidiaのCUDA:CPUの終焉か?」 . Tom's Hardware . 2015年 5月17日 取得 。 ↑ ジョーンズ、スティーブン (2025-04-22). CUDA とは? (動画). Computerphile . 2025-07-24 に YouTube 経由で取得。 ↑ Zunitch, Peter (2018-01-24). "CUDA vs. OpenCL vs. OpenGL" . Videomaker . 2018-09-16 に取得. ↑ 「OpenCL」 。NVIDIA 開発者 。2013年4月24日。 2019年11月4日 取得 。 1 2 コスグローブ、エマ。 「イアン・バックはNvidiaの秘密兵器を構築した。彼は残りのキャリアをその擁護に費やすかもしれない」 。Business Insider 。 2025年7月24日 取得 。 ↑ 「ジョン・ニコルズ氏の訃報 – カリフォルニア州ロスアルトス」 。 マーキュリー・ニュース 。2011年9月29日 。 2025年11月 23日閲覧。 ジョン・リチャード・ニコルズ氏は、癌との勇敢な闘病の末、2011年8月13日にカリフォルニア州ロスアルトスで亡くなりました。彼は1950年3月6日にケネスとキャスリン・ニコルズ夫妻の間に生まれ、マサチューセッツ州ウィルブラハムで育ちました。 ↑ スティーブン・ウィット (2023-11-27). 「ジェンセン・フアンのNvidiaはいかにしてAI革命を推進しているか」 . ザ・ニューヨーカー . ISSN 0028-792X . 2023-12-10 閲覧 。 ↑ 「CUDA LLVMコンパイラ」 。2012年5月7日。 ↑ "clang を使用した CUDA のコンパイル – LLVM 22.0.0git ドキュメント" . llvm.org . ↑ YouTube で公開された GPU上での初のOpenCLデモ ↑ Nvidia CUDA対応GPU上で動作するDirectCompute Oceanのデモ ( YouTube) ↑ Vasiliadis, Giorgos; Antonatos, Spiros; Polychronakis, Michalis; Markatos, Evangelos P.; Ioannidis, Sotiris (2008年9月). "Gnort: グラフィックスプロセッサを用いた高性能ネットワーク侵入検知" (PDF) . Recent Advances in Intrusion Detection . Lecture Notes in Computer Science. Vol. 5230. pp. 116– 134. doi : 10.1007/978-3-540-87403-4_7 . ISBN 978-3-540-87402-7 。↑ Schatz, Michael C.; Trapnell, Cole; Delcher, Arthur L.; Varshney, Amitabh (2007). "High-throughput sequence alignment using Graphics Processing Units" . BMC Bioinformatics . 8 474. doi : 10.1186/1471-2105-8-474 . PMC 2222658. PMID 18070356 . ↑ 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 . ↑ 「 Google Code Archive - Google Codeプロジェクトホスティングの長期保存」 code.google.com . ↑ 「科学計算にはNvidia GPUを使用してください」 。boinc.berkeley.edu 。バークレーオープンネットワークコンピューティングインフラストラクチャ(BOINC)。2008年12月18日。2008年12月28日のオリジナルからアーカイブ 。 2017 年 8月8日 取得 。 ↑ 「Nvidia CUDAソフトウェア開発キット(CUDA SDK)- MAC OS X版バージョン2.0リリースノート」 。 2009年1月6日に オリジナル からアーカイブされました。 ↑ 「CUDA 1.1 – Mac OS X で利用可能に」 。2008年2月14日。 2008年11月22日の オリジナル からアーカイブ済み。 ↑ 「CUDA 11の新機能が明らかに」 。2020年5月14日。 ↑ 「CUDA Toolkit 11.1でGeForce RTX 30シリーズおよびQuadro RTXシリーズGPUのサポートが導入されました」 。2020年9月23日。 ↑ 「NVIDIA CUDA 11.2 の新機能によるメモリ割り当ての強化」 。2020 年 12 月 16 日。 ↑ 「CUDA 11.3 の新機能を探る」 。2021 年 4 月 16 日。 ↑ Silberstein, Mark; Schuster, Assaf ; Geiger, Dan; Patney, Anjul; Owens, John D. (2008). "Efficient computation of sum-products on GPUs through software-managed cache" (PDF) . Proceedings of the 22nd annual international conference on Supercomputing – ICS '08 (PDF) . Proceedings of the 22nd annual international conference on Supercomputing – ICS '08. pp. 309–318 . doi : 10.1145/1375527.1375572 . ISBN 978-1-60558-158-3 。↑ 「CUDA C プログラミング ガイド v8.0」 (PDF) 。nVidia Developer Zone。2017 年 1 月。p. 19。2017 年 3 月 22 日 取得 。 ↑ 「NVCCは.cuファイルのC++コンパイルを強制する」 。2011年11月29日。 ↑ ホワイトヘッド、ネイサン、フィット=フロレア、アレックス。 「精度とパフォーマンス:Nvidia GPU の浮動小数点と IEEE 754 準拠」 ( PDF) 。Nvidia。2014 年 11 月 18 日 取得 。 ↑ 「CUDA対応製品」 . CUDA Zone . Nvidia Corporation . 2008年11月3日 取得 。 ↑ 「Corianderプロジェクト:CUDAコードをOpenCLにコンパイルし、あらゆる場所で実行」 。Phoronix。 ↑ パーキンス、ヒュー (2017)。 「cuda-on-cl」 (PDF) 。IWOCL 。 2017年 8月8日 取得 。 ↑ "hughperkins/coriander: OpenCL™ 1.2 デバイス向け NVIDIA® CUDA™ コードのビルド" . GitHub. 2019 年 5 月 6 日. ↑ 「CU2CL ドキュメント」 . chrec.cs.vt.edu . ↑ "GitHub – vosen/ZLUDA" . GitHub . ↑ Larabel, Michael (2024-02-12), "AMDがROCmをベースにしたドロップインCUDA実装に静かに資金提供:現在はオープンソース" , Phoronix , 2024-02-12に取得 ↑ "GitHub – chip-spv/chipStar" . GitHub . ↑ 「新しいSCALEツールにより、CUDAアプリケーションをAMD GPU上で実行可能」 。Tom's Hardware。2024年7月17日。 ↑ 「PyCUDA」 。 mathema.tician.de 。 ↑ "pycublas" 。 2009年4月20日に オリジナルからアーカイブされました 。 2017年8月8日 に取得。 ↑ "CuPy" . cupy.dev . 2025-09-23 に取得. 1 2 "NVPTXバックエンドのユーザーガイド - LLVM 22.0.0gitドキュメント" . llvm.org . ↑ 「NVIDIA CUDA プログラミング ガイド バージョン 1.0」 (PDF) 。2007 年 6 月 23 日。 ↑ 「NVIDIA CUDA プログラミング ガイド バージョン 2.1」 (PDF) 。2008 年 12 月 8 日。 ↑ 「NVIDIA CUDA プログラミング ガイド バージョン 2.2」 (PDF) 。2009 年 4 月 2 日。 ↑ 「NVIDIA CUDA プログラミング ガイド バージョン 2.2.1」 (PDF) 。2009 年 5 月 26 日。 ↑ 「NVIDIA CUDA プログラミング ガイド バージョン 2.3.1」 (PDF) 。2009 年 8 月 26 日。 ↑ 「NVIDIA CUDA プログラミング ガイド バージョン 3.0」 (PDF) 。2010年2月20日。 ↑ 「NVIDIA CUDA C プログラミング ガイド バージョン 3.1.1」 (PDF) 。2010 年 7 月 21 日。 ↑ 「NVIDIA CUDA C プログラミング ガイド バージョン 3.2」 (PDF) 。2010年11月9日。 ↑ 「CUDA 11.0 リリースノート」 。NVIDIA 開発者 。 ↑ 「CUDA 11.1 リリースノート」 。NVIDIA 開発者 。 ↑ 「CUDA 11.5 リリースノート」 。NVIDIA 開発者 。 ↑ 「CUDA 11.8 リリースノート」 。NVIDIA 開発者 。 ↑ 「サポートマトリックス – NVIDIA cuDNN バックエンド」 。docs.nvidia.com 。 2025年8月20日 取得 。 ↑ 「NVIDIA Quadro NVS 420 の仕様」 。TechPowerUp GPU データベース 。2023 年 8 月 25 日。 ↑ Larabel, Michael (2017年3月29日). "NVIDIAがNouveauでTegra X2 GPUのサポートを開始" . Phoronix . 2017年 8月8日 閲覧 。 ↑ TechPowerUpに掲載されたNvidia Xavierのスペック(暫定版) ↑ 「ようこそ — Jetson Linux開発者ガイド 34.1 ドキュメント 」 。docs.nvidia.com 。 ↑ 「NVIDIAがXavier SoC向けにオープンソースのVolta GPUサポートを開始 」 ↑ 「NVIDIA Ada Lovelace Architecture」 。 ↑ 「マイクロベンチマークによるチューリングGPUアーキテクチャの解析」 (PDF ) ↑ 「H.1. 機能と技術仕様 – 表 13. コンピューティング能力ごとの機能サポート」 。docs.nvidia.com 。 2020年9月23日 取得 。 ↑ 「CUDA C++ プログラミング ガイド 」 ↑ 融合乗算加算、実際に実行、密行列 ↑ 7.5以降はSASS、8.0以降はPTXとして使用されています。 1 2 SASSにおける非公式サポート ↑ 「技術概要。NVIDIA Jetson AGX Orin シリーズ」 (PDF) 。 nvidia.com 。 2023 年 9 月 5 日 に取得 。 ↑ 「NVIDIA Ampere GA102 GPUアーキテクチャ」 (PDF) 。nvidia.com 。 2023年 9月5日 取得 。 ↑ ルオ、ウェイル。ファン、ルイボ。リー、ゼユ。ドゥ、ダヨウ。王、強。チュー、シャオウェン(2024)。 「Nvidia Hopper GPU アーキテクチャのベンチマークと分析」。 arXiv : 2402.13499v1 [ cs.AR ]。 ↑ 「NVIDIA A40 データシート」 (PDF) 。nvidia.com 。 2024年 4月27日 取得 。 ↑ 「NVIDIA AMPERE GA102 GPUアーキテクチャ」 (PDF) 。2024年4月27日。 ↑ 「NVIDIA L40 データシート」 (PDF) 。nvidia.com 。 2024 年4月27日。 ↑ ホワイトペーパーでは、テンソルコアのキューブ図は、ドット積ユニットの幅を高さに換算して表しています(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演算です。テンソルコアなしのPascalと、FP16以外のデータ型を使用したVolta V100は、速度比較のためにのみ表示されています。 ↑ 「NVIDIA Turingアーキテクチャホワイトペーパー」 (PDF) 。nvidia.com 。 2023年 9月5日 取得 。 ↑ 「NVIDIA Tensor Core GPU」 (PDF) 。nvidia.com 。 2023年 9月5日 取得 。 ↑ 「NVIDIA Hopperアーキテクチャの詳細」 。2022年3月22日。 1 2 形状 x 変換されたオペランドサイズ、例: 2 つのテンソルコア x 4x4x4xFP16/サイクル = 256 バイト/サイクル 1 2 = 最初の 3 つの表の行の積 1 2 = 前の 2 つのテーブル行の積。形状: 例: 8x8x4xFP16 = 512 バイト ↑ Sun, Wei; Li, Ang; Geng, Tong; Stuijk, Sander; Corporaal, Henk (2023). "マイクロベンチマークによるテンソルコアの解析: レイテンシ、スループット、および数値的挙動". 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 . ↑ 「並列スレッド実行ISAバージョン7.7」 。 ↑ Raihan, Md Aamir; Goli, Negar; Aamodt, Tor (2018). "ディープラーニングアクセラレータ対応GPUのモデリング". arXiv : 1811.08309 [ cs.MS ]. ↑ 「NVIDIA Ada Lovelace Architecture」 。 1 2 嘉、浙。マッジョーニ、マルコ。スミス、ジェフリー。ダニエレ・パオロ・スカルパッツァ (2019) 「マイクロベンチマークによる NVidia Turing T4 GPU の分析」。 arXiv : 1903.07486 [ cs.DC ]。 1 2 Burgess, John (2019). "RTX ON – 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 . ↑ デバイスによって異なります 1 2 「Tegra X1」 。2015年1月9日。 ↑ "gtc22-whitepaper-hopper.pdf" . nvdam.widen.net . ↑ 「CUDAプログラミングガイド — CUDAプログラミングガイド 」 .docs.nvidia.com . ↑ 「NVIDIA Hopperアーキテクチャの詳細」 。NVIDIA テクニカルブログ 。2022年3月22日。 ↑ プログラミングガイドによると、160個の整数命令しか実行できない ↑ 128によるとFP32からの64 + 64個の独立したユニット? ↑ FP32コア64個と、柔軟なFP32/INTコア64個。 ↑ 「 CUDA C++ プログラミング ガイド」 。docs.nvidia.com 。 ↑ 32 FP32 レーンが 16 FP64 レーンに統合されます。モデルによってはそれより少なくなる場合もあります。 ↑ 16 FP32 レーンのみでサポートされ、4 FP64 レーンに統合されます 1 2 3 4 5 6 (モデルによる) ↑ 実効速度は、おそらくFP32ポート経由の場合。実際のFP64コアに関する記述はありません。 ↑ 整数の加算や比較にも使用できます ↑ 各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 . ↑ Durant, Luke; Giroux, Olivier; Harris, Mark; Stam, Nick (2017年5月10日). 「Voltaの内部:世界で最も先進的なデータセンターGPU」 . Nvidia開発者ブログ . ↑ FermiやKeplerとは異なり、スケジューラとディスパッチャには専用の実行ユニットがあります。 ↑ ディスパッチは、実行単位が 32/SM パーティションより少ない場合、1 サイクル以上かかる場合は同時にオーバーラップする可能性があります。 ↑ MADパイプとSFUパイプの両方を発行できます ↑ 1つのスケジューラが同時に発行できる命令は2つまでです。最初のスケジューラはIDが奇数のワープを担当し、2番目のスケジューラはIDが偶数のワープを担当します。 1 2 共有メモリのみ、データキャッシュなし 1 2 3 4 5 6 共有メモリは別々だが、L1にはテクスチャキャッシュが含まれる ↑ 「H.6.1. アーキテクチャ」 . docs.nvidia.com . 2019年5月13日 取得 。 ↑ 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 。1 2 嘉、浙。マッジョーニ、マルコ。スタイガー、ベンジャミン。スカルパッツァ、ダニエレ P. (2018)。 「マイクロベンチマークによる NVIDIA Volta GPU アーキテクチャの分析」。 arXiv : 1804.06826 [ cs.DC ]。 ↑ 賈、浙;マッジョーニ、マルコ。スミス、ジェフリー。ダニエレ・パオロ・スカルパッツァ (2019) 「マイクロベンチマークによる NVidia Turing T4 GPU の分析」。 arXiv : 1903.07486 [ cs.DC ]。 ↑ Van Sandt, Peter; Jia, Zhe (2021年4月). 「マイクロベンチマークによるAmpere GPUアーキテクチャの解析」 . nvidia.com . ↑ Jia、Zhe に注意してください。マッジョーニ、マルコ。スミス、ジェフリー。ダニエレ・パオロ・スカルパッツァ (2019) 「マイクロベンチマークによる NVidia Turing T4 GPU の分析」。 arXiv : 1903.07486 [ cs.DC ]。 これに異議を唱え、SMパーティションあたり2 KiBのL0命令キャッシュとSMあたり16 KiBのL1命令キャッシュを主張する。 ↑ "asfermi Opcode" . GitHub . 1 2 テクスチャエンジンのみでアクセス可能 ↑ RTX 4060、RTX 4070、RTX 4070 Ti、RTX 4090では25%無効化されています ↑ RTX 5070 Ti および RTX 5090 では 25% 無効になっています ↑ 「CUDA C++ プログラミング ガイド、計算機能」 。docs.nvidia.com 。 2025年2月6 日 取得 。 ↑ "nVidia CUDA バイオインフォマティクス: BarraCUDA" . BioCentric . 2019-07-19 . 2019-10-15 に取得. ↑ 「パートV:物理シミュレーション」 。NVIDIA 開発者。 2020年9月11日 取得 。 ↑ 「oneAPIプログラミングモデル」 。oneAPI.io 。 2024年7月27 日 取得 。 ↑ 「仕様 | oneAPI」 。oneAPI.io 。 2024年7月27日 取得 。 ↑ "oneAPI仕様 – oneAPI仕様1.3-rev-1ドキュメント" . oneapi-spec.uxlfoundation.org . 2024年7月27日 取得 . ↑ Cherney, Max A.; Cherney, Max A. (2024年3月26日). 「独占記事:ソフトウェアを標的にNvidiaのAI支配を打破する陰謀の裏側」 . ロイター. 2024年4月5日 閲覧 . ↑ 「質問:ROCmは何の略ですか? · Issue #1628 · RadeonOpenCompute/ROCm」 . Github.com . 2022年 1月18日 取得 。
さらに読む Buck, Ian; Foley, Tim; Horn, Daniel; Sugerman, Jeremy; Fatahalian, Kayvon; Houston, Mike; Hanrahan, Pat (2004-08-01). "Brook for GPUs: グラフィックスハードウェア上でのストリームコンピューティング" . ACM Transactions on Graphics . 23 (3): 777– 786. doi : 10.1145/1015706.1015800 . ISSN 0730-0301 . Nickolls, John; Buck, Ian; Garland, Michael; Skadron, Kevin (2008-03-01). "CUDAによるスケーラブルな並列プログラミング:CUDAはアプリケーション開発者が待ち望んでいた並列プログラミングモデルなのか?" . ACM Queue . 6 (2): 40– 53. doi : 10.1145/1365490.1365500 . ISSN 1542-7730 .
外部リンク 公式サイト CUDAの教科書