CUDA CUDAの概要

CUDA

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/11 07:13 UTC 版)

CUDA
開発元 NVIDIA
最新版
12.3 / 2023年10月20日 (4か月前) (2023-10-20)[1][2]
対応OS Microsoft Windows, Linux, Android[3][4]
種別 GPGPU
公式サイト CUDA Zone
テンプレートを表示

概要

CUDAの処理の流れ
1. メインメモリ(ホストメモリ)からデータをGPU用メモリ(デバイスメモリ)にコピーする。
2. CPUがGPUに対して処理を指示する。
3. GPUが必要なデータを取り込み各コアで並列実行する。
4. 結果をGPU用メモリからメインメモリにコピーする。
[9] [10]

もともとリアルタイムグラフィックス表示用途、特にゲームグラフィックス用途に特化したGPUを開発していたのがNVIDIAやATI (現AMD) であるが、プログラマブルシェーダーの発展によるプログラマビリティの向上を受け、その高い処理性能をグラフィックス以外にも活用できるようにするためにNVIDIAが開発した技術がCUDAである。このような汎用コンピューティング向けのGPU活用技術をGPGPU (General-Purpose computing on Graphics Processing Units) と呼ぶ。

GPU向けのプログラミング環境としてはHLSLGLSLNVIDIA Cgを用いたものもあるが、こちらはDirect3DもしくはOpenGLをバックエンドとするリアルタイムCG描画専用のプログラミング環境となっており、変数にGPU特有の型しか使えない(特に出力として用いるテクスチャメモリのフォーマットに制約が大きい)など汎用的なプログラムの記述は困難である。CUDAでは、HLSLやGLSLと異なり、よりC言語に近い構文および言語機能(ポインタなどを含む)を採用しており、またDirect3D/OpenGLといったバックエンドを使うことなくプログラムロジックを記述できるため、汎用コンピューティングに適している。

GPUはシンプルな演算ユニットを多数搭載しており、ピーク理論演算性能 (FLOPS) は同一価格帯のCPUをしのぐものもある。そのため、並列性や演算密度の高い処理を行なう場合、少数で複雑な構成を備えた同規模のCPUと比べて高い処理性能が出せる。 その逆に複雑な分岐処理(演算密度の低い処理)はCPUと比較して苦手であり、またGPUへ入力データを供給する、あるいはGPUによる演算結果をCPU側へリードバックするには接続バス (PCI-Express) を通してデータを転送する必要があり、これがボトルネックとなりうる可能性もあるため、適用分野や問題を解くアルゴリズムを慎重に選ぶ必要がある[11]

また、CUDAで作成したプログラムを最大限最適化するためには、Warpや共有メモリなどのNVIDIA GPUデバイスアーキテクチャに関する深い知識も必要となる[12]

なお、CUDAの発表は2006年11月[13]、CUDA 1.0の提供開始は2007年7月[14]であり、後発のGPGPU関連技術にはOpenCL (1.0仕様公開は2008年[15]) やDirectCompute (DirectXコンピュートシェーダー。Windows 7/DirectX 11.0と同時に2009年に一般提供開始[16]) などが存在するが、それぞれ技術用語は異なるものの全体としてはCUDAに非常に似通った特徴を持つ。先発技術であるCUDAは、2014年時点で教育・研究機関での採用事例が多い[17]ほか、機械学習などの分野で産業界でも採用への取り組みが進んでいる[18]

対応言語

CUDA C はC言語C++の一部の構文のみ対応。C言語を拡張している。CUDA C/C++のソースコードの拡張子には通例.cuが使われ、ヘッダーの拡張子には.cuhが使われる[19]BLASインターフェイス経由でベクトル行列演算が可能(cuBLAS[20])。FFTライブラリ(cuFFT[21])も付属する。SDKとなるCUDA Toolkitには、CUDA実装によるC++向けのテンプレートベース並列アルゴリズムライブラリ「Thrust」も付属する[22]

なおCUDAバージョン7では、C++11規格のサポートが強化され、デバイスコードにおけるラムダ式の利用などが可能となっている[23] [24]。 CUDAバージョン8では、機械学習向けのライブラリが強化され、Pascalアーキテクチャの固有機能を利用した拡張が多数追加された[25][26]

CUDA FortranThe Portland Group (PGI) から提供されている[27]Fortran 2003 を拡張している[28]

NVIDIAのCUDAコンパイラnvcc自体はLLVMベースであり、新しいプログラミング言語や新しいプロセッサのサポートを追加するコンパイラSDKも提供されている[29]

言語バインディング

C言語以外からCUDAを呼べるようにしたバインディングがある。

他にも、Ruby, Lua, MATLAB, IDL, Mathematica などもある。


注釈

  1. ^ 2023年現在、これらのブランドは消失してNVIDIAブランドに統合されているものもあるが、便宜上ここでは旧ブランド名を用いている。
  2. ^ Keplerアーキテクチャ採用。
  3. ^ macOS 10.14以降ではCUDAドライバーがインストールできなくなっているため、旧バージョンの利用も不可能である。

出典

  1. ^ Release Notes :: CUDA Toolkit Documentation
  2. ^ NVIDIA CUDA Toolkit Release Notes
  3. ^ NVIDIA CodeWorks for Android | NVIDIA Developer
  4. ^ NVIDIA GameWorks Documentation - NVIDIA CUDA for Android
  5. ^ What Is CUDA | NVIDIA Official Blog
  6. ^ Accelerated Computing | NVIDIA Developer
  7. ^ 開発者向けのCUDA並列コンピューティングプラットフォーム | NVIDIA
  8. ^ 第3回 CUDAとGPUコンピューティングの広がり | Think IT
  9. ^ 日経エレクトロニクス 2007/10/8 「プロセサはマルチ×マルチへ」
  10. ^ 第7回 CUDAプログラミングモデル② | G-DEP:
  11. ^ HPCシンポジウムで見えたTSUBAME2.0の設計思想 (1) ポストペタスケールへ向けGPUをどう活用していくのか
  12. ^ 第6回 CUDAプログラミングモデル① | G-DEP
  13. ^ Press Release | NVIDIA
  14. ^ NVIDIA CUDA 1.0、GPUコンピューティング向けに機能を強化 | NVIDIA
  15. ^ 並列プログラミング規格「OpenCL 1.0」が標準として批准 - @IT
  16. ^ 西川善司の3Dゲームファンのためのグラフィックス講座。台頭するDirectCompute技術 - GAME Watch
  17. ^ NVIDIA GPUコンピューティング応用事例のご紹介
  18. ^ 【GTC2014】NVIDIA、基調講演でCUDAを自動車にもたらす開発キット「JETSON TK1」の提供開始など発表 / NVLink、3Dメモリで、帯域幅問題を解消する新GPU「Pascal(パスカル)」も計画 - Car Watch
  19. ^ CUDA プロジェクト | CLion
  20. ^ cuBLAS - NVIDIA CUDA ZONE
  21. ^ cuFFT - NVIDIA CUDA ZONE
  22. ^ Thrust - NVIDIA CUDA ZONE
  23. ^ NVIDIA Pushes CUDA 7 RC With C++11 Features, Runtime Compilation - Phoronix
  24. ^ The Power of C++11 Programming in CUDA 7 | Parallel Forall
  25. ^ CUDA 8 PERFORMANCE OVERVIEW - November 2016, NVIDIA
  26. ^ CUDA 8.0 新機能のご紹介 - GTC Japan 2016
  27. ^ NVIDIAのCUDAアーキテクチャGPUにおけるFortranサポート
  28. ^ PGI CUDA Fortran のコンパイル・オプション
  29. ^ CUDA LLVM Compiler | NVIDIA Developer
  30. ^ CUDA-X”. NVIDIA Developer. 2024年3月11日閲覧。
  31. ^ 第3回 CUDAとGPUコンピューティングの広がり | Think IT(シンクイット)
  32. ^ CUDA 7.5: Pinpoint Performance Problems with Instruction-Level Profiling | Parallel Forall
  33. ^ コンパイラ、そしてもっと:アクセラレーター・プログラミング
  34. ^ Faster Parallel Reductions on Kepler | Parallel Forall
  35. ^ Kepler GPUアーキテクチャとプログラム最適化 (10) Keplerから搭載されたレジスタ内のデータの入れ替え命令 | マイナビニュース
  36. ^ 第3回 CUDAとGPUコンピューティングの広がり | Think IT
  37. ^ ASCII.jp:OpenCLでCUDAを追撃!? AMD「ATI Stream」が狙うものは
  38. ^ AMDがSC15にて、「Boltzmann Initiative」を発表 – AMD GPU用C++とCUDAコンパイラー - 株式会社エーキューブ
  39. ^ HIP : C++ Heterogeneous-Compute Interface for Portability - GPUOpen
  40. ^ SIGGRAPH ASIA 2009 - 非プラットフォーム依存パラレルの本命、「OpenCL」最新事情 (6) OpenCLはCUDAやDirectComputeと競合するのか | マイナビニュース
  41. ^ "GeForceの父" David Kirk博士、東大で並列コンピューティングについて講演 (4) CUDAの動作の仕組み | マイナビニュース
  42. ^ CUDA Toolkit 6.5
  43. ^ CUDA 7.0 Downloads | NVIDIA Developer
  44. ^ CUDA 7.5 Downloads Archive | NVIDIA Developer
  45. ^ CUDA Toolkit 8.0 - Feb 2017 | NVIDIA Developer
  46. ^ CUDA Toolkit 9.2 Download | NVIDIA Developer
  47. ^ CUDA Toolkit 10.2 Download | NVIDIA Developer
  48. ^ CUDA Toolkit 11.8 Downloads | NVIDIA Developer
  49. ^ a b Release Notes :: CUDA Toolkit Documentation (v11.0)
  50. ^ NVIDIA CUDA Toolkit Release Notes”. CUDA Toolkit Documentation. 2020年7月26日閲覧。
  51. ^ Installation Guide Mac OS X :: CUDA Toolkit Documentation
  52. ^ NVIDIA CUDA Toolkit - Developer Tools for macOS | NVIDIA Developer
  53. ^ CUDA Toolkit 12.1 Downloads | NVIDIA Developer
  54. ^ NVIDIA® OptiX™ Ray Tracing Engine
  55. ^ NVIDIA OptiX™ Legacy Downloads | NVIDIA Developer
  56. ^ How to Get Started with OptiX 7 | NVIDIA Technical Blog
  57. ^ GPU changes (for CUDA and OpenGL) in After Effects CC (12.1) | After Effects region of interest
  58. ^ 4Gamer.net ― NVIDIA製GPUが「Photoshop」「After Effects」「Premiere Pro」の最新版「CS4」アクセラレーションをサポート。ムービーでその効果をチェック
  59. ^ Premiere Pro CCでは、2基のNVIDIA Quadro M6000上でCUDAを活用することで、1基のIntel Xeon E5-2697 v3を用いる場合と比較して、最大で24倍の速度性能向上を提供できるとしている。Adobe Premiere Pro CC – さらにスピーディーなビデオ編集 | NVIDIA
  60. ^ ただし、CUDAによって必ずしも処理が高速化するわけではない。CUDA/OpenCL/Mercury Playback Engine について(Adobe Premiere Pro)
  61. ^ Doc:JA/2.6/Manual/Render/Cycles/GPU Rendering - BlenderWiki
  62. ^ NVIDIA CUDA に対応した GPU に対する MATLAB GPU 演算のサポート - MATLAB & Simulink
  63. ^ Using GPUs in MATLAB » Loren on the Art of MATLAB
  64. ^ OpenCV 2.2 Released - ROS robotics news





英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「CUDA」の関連用語

CUDAのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



CUDAのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのCUDA (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS