私はいくつかの新しい技術の下で開発することに興味があり、CUDAを試すことを考えていました。さて...彼らのドキュメントはあまりにも技術的で、私が探している答えを提供していません。また、CUDAの経験をお持ちの方からの回答をお待ちしております。
基本的に私の質問はタイトルの質問です:
正確には何IS CUDA?(それはフレームワークですか?それともAPIですか?何ですか?)
それはなんのためですか? (GPUへのプログラミング以上のものはありますか?)
どんな感じ?
CPUにプログラミングする代わりに、CUDAに対してプログラミングすることの利点は何ですか?
CUDAでプログラミングを始めるのに良い場所はどこですか?
CUDAはいくつかのものをまとめます:
CUDAのポイントは、互換性のある超並列SIMDアーキテクチャで実行できるコードを作成することです。これには、いくつかのGPUタイプと、nVidiaTeslaなどの非GPUハードウェアが含まれます。超並列ハードウェアは、CPUよりもはるかに多くの操作を毎秒実行でき、かなり同様の経済的コストで、それを可能にする状況で50倍以上のパフォーマンスの向上をもたらします。
以前の方法に対するCUDAの利点の1つは、汎用コンピューターをエミュレートするためにピクセルシェーダーと頂点シェーダーを使用する代わりに、汎用言語を使用できることです。その言語はCに基づいており、いくつかの追加のキーワードと概念があり、GPU以外のプログラマーが簡単に理解できるようになっています。
これは、nVidiaがハードウェアでの汎用並列化をサポートする用意があることの表れでもあります。「GPUを使ったハッキング」ではなく「ベンダーがサポートするテクノロジーの使用」のように聞こえ、プレゼンスでの採用が容易になりました。非技術的な利害関係者の。
CUDAの使用を開始するには、SDKをダウンロードし、マニュアルを読んで(Cをすでに知っている場合はthat複雑ではありません)、CUDA互換のハードウェアを購入します(can最初はエミュレーターを使用しますが、パフォーマンスがこれの究極のポイントであるため、実際にコードを試すことができればより良いです)
(免責事項:私は2008年の学期プロジェクトにのみCUDAを使用したため、その後状況が変わった可能性があります。)CUDAは、nVidia GPUで実行できるプログラムを作成するための開発ツールチェーンであり、そのようなプログラムをから制御するためのAPIです。 CPU。
GPUプログラミングとCPUプログラミングの利点は、いくつかの高度に並列化可能な問題に対して、大規模スピードアップ(約2桁高速)が得られることです。ただし、多くの問題は、並列化に適した方法で定式化することが困難または不可能です。
ある意味では、通常のCを使用してプログラムを作成できるため、CUDAはかなり単純です。ただし、優れたパフォーマンスを実現するには、Tesla GPUアーキテクチャの多くの低レベルの詳細など、多くのことを考慮する必要があります。