CUDA

CUDA

CUDA (Compute Unified Architecture) はNVIDIA社が開発・提供しているGPU向けの汎用並列コンピューティング プラットフォームで、逐次実行が不要なタスクをGPU上で並列に実行します。

CUDAを高速化

CUDAとは?

演算能力向上のニーズは日増しに高まっていますが、サイズや温度といった制限がCPU性能向上の障壁になっています。このような現状でソリューション プロバイダーは、性能向上のための別の方法を模索し始めています。性能の大幅アップを実現するソリューションのひとつがGPUを使った並列計算です。GPUにはCPUよりもはるかに多くのコアが搭載されているだけでなく、大量のタスクを並列に実行するという特徴があります (CPUは逐次実行)。

CUDA (Compute Unified Architecture) はNVIDIA社が開発・提供しているGPU向けの汎用並列コンピューティング プラットフォームで、逐次実行が不要なタスクをGPU上で並列に実行します。C、C++、Fortranなどの言語に対応しており、計算負荷の高いタスクを簡単にNVIDIAのGPUにオフロードできます。CUDAは多くの計算能力が必要な領域や高い性能が必要かつ並列実行が可能なシナリオ、例えば機械学習、医療や物理分野の研究・分析、スーパー コンピューティング、暗号通貨のマイニング、科学的モデリング、シミュレーションなどで使われています。

歴史

GPUによる並列コンピューティングが始まったのは、スタンフォード大学の研究グループが汎用的なプログラミングモデルのプラットフォームであるBrookを発表した20年ほど前のことです。この研究はNVIDIA社からの資金提供を受けており、グループリーダーのIan Buck氏は後にNVIDIA社に迎えられ、GPUベースの並列コンピューティングの商用製品を開発しました。これがCUDAです。これまでに30回以上のバージョンアップが行われており、現在の最新バージョンは「CUDA Toolkit 11.3 Update 1」となっています (2021/5/26現在)。当初はC言語のみに対応していましたが、現在はC++にも対応しています。

しくみ

CUDAコンパイラ内で修飾子「__global__」をつければ、どんなコードでもGPU上で実行可能です。GPU上のメモリ領域を確保するためにCUDAガイドラインに従って malloc/newfree/delete の呼び出しを変更する必要があります。計算が終わると結果が同期されてCPUに返されます。

無料トライアルは

こちらをクリック

ダウンロード手順

最新のCUDAはこちらからダウンロードできます。CUDAはWindows、LinuxなどOSごとに異なるバージョンがあります。旧バージョンはこちらからダウンロードできます。

WindowsでCUDAを使う

CUDAに対応したGPU、Windowsバージョン、Visual Studioが必要です。CUDAをダウンロードする前にお使いのシステムのGPUがCUDAに対応しているかどうかを確認してからCUDAをダウンロードしてインストールしてください。詳しいインストール手順はこちらをご覧ください。

LinuxでCUDAを使う

CUDAに対応したGPU、Linuxバージョン (GCCコンパイラとツールチェーンを搭載) が必要です。各種Linuxディストリビューション用のインストーラーはこちらからダウンロードできます。また、ご利用のLinuxディストリビューションのパッケージ管理システムを使ってインストールすることもできます。各種Linuxディストリビューション向けの詳しいインストール手順はこちらをご覧ください。

メリット

  • 無料
  • インストールが簡単
  • 既存のC、C++、Fortranで使用できるので新しく覚えることが少ない
  • 他のプログラミング言語 (Java、Pythonなど) 用のサードパーティ製ラッパーも利用可能
  • 活気のあるコミュニティ
  • さまざまな並列計算タスク向けの幅広いライブラリ
  • 競合他社のOpenCLと比べて高速

Incredibuildとの統合

Incredibuildはローカルネットワークやクラウドに接続されたリモートホストの眠っているCPUにプロセスをシームレスかつ並列に分散します。これによりネットワーク上のマシンが数百コアのスーパーコンピューターに変わり、コンパイルはもちろん、CUDAコンパイルやNVIDIA NSight開発環境、テストなど、膨大な負荷のかかる計算処理が高速化し、コンパイル時間が大幅に短縮します。

Nsight SystemsとCUDA

Nvidia Nsight SystemsでCPU、GPU、ドライバ、カーネルから収集したデータをタイムライン上に表示して、時系列でプログラムの動作を把握できます。NsightにはNsight ComputeとNsight Graphicsという2つのモジュールと多数のAPIがあります。

Nsight Computeはまずプログラムを実行してパフォーマンスが低下するボトルネックを特定し、実行プロセスを変更してパフォーマンスを向上させます。Nsight GraphicsはグラフィックSDKで構築されたフレームのデバッグ、プロファイリング、エクスポートができるスタンドアロンの開発ツールです。

代替ソリューション

CUDAの代わりに使われるソリュ-ションで最も有名なのがOpenCLです。OpenCLはApple社とクロノスグループによって開発され、2009年にリリースされました (AppleのハードウェアではOpenCLとOpenGL非推奨APIで、Metal 2の利用が推奨されています)。

OpenCLとCUDAの最大の違いは対応ハードウェアにあります。CUDAはNvidia製のGPUに特化して設計されていますが、OpenCLはNvidia製とAMD製の両方のGPUで利用できます。OpenCLのコードはGPUとCPU両方で実行できますが、CUDAのコードはGPUでしか実行できません。ただし、CUDAはNvidia製のGPUでより高速に動作するため機械学習の研究者から高い支持を得ています。

icon

まとめ

GPU向けの汎用並列コンピューティングプラットフォーム (並列してタスクを実行) として有名です。

無料ライセンス