web-dev-qa-db-ja.com

CUDAはどのようなものですか?それはなんのためですか?メリットは何ですか?そして、どのように始めるのですか?

私はいくつかの新しい技術の下で開発することに興味があり、CUDAを試すことを考えていました。さて...彼らのドキュメントはあまりにも技術的で、私が探している答えを提供していません。また、CUDAの経験をお持ちの方からの回答をお待ちしております。

基本的に私の質問はタイトルの質問です:

正確には何IS CUDA?(それはフレームワークですか?それともAPIですか?何ですか?)

それはなんのためですか? (GPUへのプログラミング以上のものはありますか?)

どんな感じ?

CPUにプログラミングする代わりに、CUDAに対してプログラミングすることの利点は何ですか?

CUDAでプログラミングを始めるのに良い場所はどこですか?

26
PedroC88

CUDAはいくつかのものをまとめます:

  • 一般的な(非グラフィック)コードを実行するように設計された超並列ハードウェアと、そのための適切なドライバー。
  • 上記のハードウェアをプログラミングするためのCベースのプログラミング言語、および他のプログラミング言語がターゲットとして使用できるアセンブリ言語。
  • ライブラリ、さまざまなデバッグ、プロファイリング、コンパイルツール、およびCPU側のプログラミング言語がGPU側のコードを呼び出せるようにするバインディングを含むソフトウェア開発キット。

CUDAのポイントは、互換性のある超並列SIMDアーキテクチャで実行できるコードを作成することです。これには、いくつかのGPUタイプと、nVidiaTeslaなどの非GPUハードウェアが含まれます。超並列ハードウェアは、CPUよりもはるかに多くの操作を毎秒実行でき、かなり同様の経済的コストで、それを可能にする状況で50倍以上のパフォーマンスの向上をもたらします。

以前の方法に対するCUDAの利点の1つは、汎用コンピューターをエミュレートするためにピクセルシェーダーと頂点シェーダーを使用する代わりに、汎用言語を使用できることです。その言語はCに基づいており、いくつかの追加のキーワードと概念があり、GPU以外のプログラマーが簡単に理解できるようになっています。

これは、nVidiaがハードウェアでの汎用並列化をサポートする用意があることの表れでもあります。「GPUを使ったハッキン​​グ」ではなく「ベンダーがサポートするテクノロジーの使用」のように聞こえ、プレゼンスでの採用が容易になりました。非技術的な利害関係者の。

CUDAの使用を開始するには、SDKをダウンロードし、マニュアルを読んで(Cをすでに知っている場合はthat複雑ではありません)、CUDA互換のハードウェアを購入します(can最初はエミュレーターを使用しますが、パフォーマンスがこれの究極のポイントであるため、実際にコードを試すことができればより良いです)

29
Victor Nicollet

(免責事項:私は2008年の学期プロジェクトにのみCUDAを使用したため、その後状況が変わった可能性があります。)CUDAは、nVidia GPUで実行できるプログラムを作成するための開発ツールチェーンであり、そのようなプログラムをから制御するためのAPIです。 CPU。

GPUプログラミングとCPUプログラミングの利点は、いくつかの高度に並列化可能な問題に対して、大規模スピードアップ(約2桁高速)が得られることです。ただし、多くの問題は、並列化に適した方法で定式化することが困難または不可能です。

ある意味では、通常のCを使用してプログラムを作成できるため、CUDAはかなり単純です。ただし、優れたパフォーマンスを実現するには、Tesla GPUアーキテクチャの多くの低レベルの詳細など、多くのことを考慮する必要があります。

1