CUDA
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/11 07:13 UTC 版)
メリット・デメリット
ここでは従来のCPUベースのプログラミングとの比較ではなく、類似のGPGPU関連技術とCUDAとの比較を行なう。
メリット
CUDAはNVIDIAが独自に開発を進めているGPGPU技術であり、NVIDIA製のハードウェア性能を最大限引き出せるように設計されている[33]。CUDAを利用することで、NVIDIA製GPUに新しく実装されたハードウェア機能をいち早く活用することができる。例えばKepler世代以降のGPUで使用可能なWarpシャッフル命令を使用することで、共有メモリを介するよりもさらに高速な並列リダクションを実行することができる[34] [35]。CUDA同様の類似GPGPU技術として代表的なものはOpenCLやDirectComputeが挙げられるが、いずれもハードウェアアーキテクチャを標準化しベンダーの違いを吸収するAPI層であるため、CUDAと比較すると抽象化の度合いは低いローレベルAPIではあるものの、ハードウェア特有の先進的機能を使った細やかなチューニングによりそのハードウェアの限界性能を引き出すのは難しい[36]。
また、OpenCLやDirectComputeでは、カーネルと呼ばれるデバイス用並列処理プログラムコード片(並列実行の最小単位)を専用のOpenCL-CやHLSLといった言語で記述した上で、OpenCL APIやDirect3D APIを使用してカーネルを発行する必要があるため、準備のための手間が必要となるが、CUDAの場合はより抽象化されており、カーネルコードの発行をC/C++における通常の関数呼び出しに近い形で記述できるなど、より本質的なアプリケーションコードやアルゴリズムの実装のみに注力できるようになっている。
デメリット
ハードウェアベンダーに依存しないOpenCLやDirectComputeと比較すると、CUDAはNVIDIA製のGPUでしか使えないという制約がある。このため、CUDAの機能に過度に依存したプログラムを書くと、アプリケーションのポーティング・移植が困難になる可能性がある(ベンダーロックイン)[37]。AMDはCUDAアプリケーションをAMDおよび他のGPUプラットフォーム向けにソースコードレベルで移植しやすくするためのC++用APIとして、HIP (Heterogeneous-Compute Interface for Portability) の提供を開始した[38][39]が、CUDAと完全な互換性を持っているわけではない。
また、最初からグラフィックス連携用途を想定して設計されたDirectComputeと比較すると、(相互運用APIが用意されているとはいえ)GPU演算結果をグラフィックス用途に直接利用する場合はオーバーヘッドが大きくなる[40]。
注釈
出典
- ^ Release Notes :: CUDA Toolkit Documentation
- ^ NVIDIA CUDA Toolkit Release Notes
- ^ NVIDIA CodeWorks for Android | NVIDIA Developer
- ^ NVIDIA GameWorks Documentation - NVIDIA CUDA for Android
- ^ What Is CUDA | NVIDIA Official Blog
- ^ Accelerated Computing | NVIDIA Developer
- ^ 開発者向けのCUDA並列コンピューティングプラットフォーム | NVIDIA
- ^ 第3回 CUDAとGPUコンピューティングの広がり | Think IT
- ^ 日経エレクトロニクス 2007/10/8 「プロセサはマルチ×マルチへ」
- ^ 第7回 CUDAプログラミングモデル② | G-DEP:
- ^ HPCシンポジウムで見えたTSUBAME2.0の設計思想 (1) ポストペタスケールへ向けGPUをどう活用していくのか
- ^ 第6回 CUDAプログラミングモデル① | G-DEP
- ^ Press Release | NVIDIA
- ^ NVIDIA CUDA 1.0、GPUコンピューティング向けに機能を強化 | NVIDIA
- ^ 並列プログラミング規格「OpenCL 1.0」が標準として批准 - @IT
- ^ 西川善司の3Dゲームファンのためのグラフィックス講座。台頭するDirectCompute技術 - GAME Watch
- ^ NVIDIA GPUコンピューティング応用事例のご紹介
- ^ 【GTC2014】NVIDIA、基調講演でCUDAを自動車にもたらす開発キット「JETSON TK1」の提供開始など発表 / NVLink、3Dメモリで、帯域幅問題を解消する新GPU「Pascal(パスカル)」も計画 - Car Watch
- ^ CUDA プロジェクト | CLion
- ^ cuBLAS - NVIDIA CUDA ZONE
- ^ cuFFT - NVIDIA CUDA ZONE
- ^ Thrust - NVIDIA CUDA ZONE
- ^ NVIDIA Pushes CUDA 7 RC With C++11 Features, Runtime Compilation - Phoronix
- ^ The Power of C++11 Programming in CUDA 7 | Parallel Forall
- ^ CUDA 8 PERFORMANCE OVERVIEW - November 2016, NVIDIA
- ^ CUDA 8.0 新機能のご紹介 - GTC Japan 2016
- ^ NVIDIAのCUDAアーキテクチャGPUにおけるFortranサポート
- ^ PGI CUDA Fortran のコンパイル・オプション
- ^ CUDA LLVM Compiler | NVIDIA Developer
- ^ “CUDA-X”. NVIDIA Developer. 2024年3月11日閲覧。
- ^ 第3回 CUDAとGPUコンピューティングの広がり | Think IT(シンクイット)
- ^ CUDA 7.5: Pinpoint Performance Problems with Instruction-Level Profiling | Parallel Forall
- ^ コンパイラ、そしてもっと:アクセラレーター・プログラミング
- ^ Faster Parallel Reductions on Kepler | Parallel Forall
- ^ Kepler GPUアーキテクチャとプログラム最適化 (10) Keplerから搭載されたレジスタ内のデータの入れ替え命令 | マイナビニュース
- ^ 第3回 CUDAとGPUコンピューティングの広がり | Think IT
- ^ ASCII.jp:OpenCLでCUDAを追撃!? AMD「ATI Stream」が狙うものは
- ^ AMDがSC15にて、「Boltzmann Initiative」を発表 – AMD GPU用C++とCUDAコンパイラー - 株式会社エーキューブ
- ^ HIP : C++ Heterogeneous-Compute Interface for Portability - GPUOpen
- ^ SIGGRAPH ASIA 2009 - 非プラットフォーム依存パラレルの本命、「OpenCL」最新事情 (6) OpenCLはCUDAやDirectComputeと競合するのか | マイナビニュース
- ^ "GeForceの父" David Kirk博士、東大で並列コンピューティングについて講演 (4) CUDAの動作の仕組み | マイナビニュース
- ^ CUDA Toolkit 6.5
- ^ CUDA 7.0 Downloads | NVIDIA Developer
- ^ CUDA 7.5 Downloads Archive | NVIDIA Developer
- ^ CUDA Toolkit 8.0 - Feb 2017 | NVIDIA Developer
- ^ CUDA Toolkit 9.2 Download | NVIDIA Developer
- ^ CUDA Toolkit 10.2 Download | NVIDIA Developer
- ^ CUDA Toolkit 11.8 Downloads | NVIDIA Developer
- ^ a b Release Notes :: CUDA Toolkit Documentation (v11.0)
- ^ “NVIDIA CUDA Toolkit Release Notes”. CUDA Toolkit Documentation. 2020年7月26日閲覧。
- ^ Installation Guide Mac OS X :: CUDA Toolkit Documentation
- ^ NVIDIA CUDA Toolkit - Developer Tools for macOS | NVIDIA Developer
- ^ CUDA Toolkit 12.1 Downloads | NVIDIA Developer
- ^ NVIDIA® OptiX™ Ray Tracing Engine
- ^ NVIDIA OptiX™ Legacy Downloads | NVIDIA Developer
- ^ How to Get Started with OptiX 7 | NVIDIA Technical Blog
- ^ GPU changes (for CUDA and OpenGL) in After Effects CC (12.1) | After Effects region of interest
- ^ 4Gamer.net ― NVIDIA製GPUが「Photoshop」「After Effects」「Premiere Pro」の最新版「CS4」アクセラレーションをサポート。ムービーでその効果をチェック
- ^ Premiere Pro CCでは、2基のNVIDIA Quadro M6000上でCUDAを活用することで、1基のIntel Xeon E5-2697 v3を用いる場合と比較して、最大で24倍の速度性能向上を提供できるとしている。Adobe Premiere Pro CC – さらにスピーディーなビデオ編集 | NVIDIA
- ^ ただし、CUDAによって必ずしも処理が高速化するわけではない。CUDA/OpenCL/Mercury Playback Engine について(Adobe Premiere Pro)
- ^ Doc:JA/2.6/Manual/Render/Cycles/GPU Rendering - BlenderWiki
- ^ NVIDIA CUDA に対応した GPU に対する MATLAB GPU 演算のサポート - MATLAB & Simulink
- ^ Using GPUs in MATLAB » Loren on the Art of MATLAB
- ^ OpenCV 2.2 Released - ROS robotics news
- CUDAのページへのリンク