問題タブ [cuda]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
architecture - cuda に関する質問
GPU プログラミングについて調べていて、CUDA についてもっと知りたいと思っています。私はすでにそれについて多くのことを読んできました (ウィキペディア、Nvidia、およびその他の参考文献から) が、まだいくつか質問があります。
次のアーキテクチャの説明は正確ですか?: GPU にはマルチプロセッサがあり、すべてのマルチプロセッサにはストリーミング プロセッサがあり、すべてのストリーミング プロセッサはスレッドのブロックを同時に実行できます。
すべての参照は、1 つのブロック内に作成するスレッドの最小数が 32 であると述べています...なぜですか?
ATI Radeon ビデオ カードを使用しています。エミュレーションモードなしで簡単なCUDAプログラムをコンパイルできました!!. サポートされているNvidia VGAでのみCUDAプログラムをコンパイルして実行できると思いました。誰か説明してくれませんか?
c++ - CUDAの例をコンパイルするとビルドエラーが発生します
VisualStudio2008でWindows764ビットを実行しています。CUDAドライバーとSDKをインストールしました。SDKには、コンパイルされた実行可能ファイルやソースコードなど、かなりの数の例が付属しています。コンパイルされた実行可能ファイルは素晴らしく実行されます。vc90ソリューションを開いて、Win32構成でビルドすると、次のエラーが発生します。
ビルドログ:
x64でコンパイルしようとすると、まったくビルドされず、プロジェクトをスキップするだけです。
私はC++を初めて使用し、しばらくの間C#を実行しています。私が見逃している小さなものがあると確信していますが、あなたが提供できる手がかりをいただければ幸いです。
cuda - CUDAでのクリティカルセクションの実装
アトミック命令を使用してCUDAにクリティカルセクションを実装しようとしていますが、問題が発生しました。問題を示すためのテストプログラムを作成しました。
このコードは、残念ながら、私のマシンを数秒間ハードフリーズし、最後に終了して、メッセージを出力します。
つまり、これらのwhileループの1つが戻ってこないということですが、これは機能するはずです。
リマインダーとして、atomicExch(unsigned int* address, unsigned int val)
アドレスに格納されているメモリ位置の値をアトミックに設定し、その値をval
返しold
ます。したがって、私のロックメカニズムの背後にある考え方は、最初はであるということです0u
。したがって、1つのスレッドはループを通過し、他のすべてのスレッドは。として読み取られるためwhile
、ループを待機する必要があります。次に、スレッドがクリティカルセクションで完了すると、ロックがリセットされ、別のスレッドが入ることができるようになります。while
locks[id]
1u
0u
私は何が欠けていますか?
ちなみに、私はコンパイルしています:
cuda - 初心者向けの最も単純な CUDA ラッパー
言語だけでなく、CUDA でプログラミングする方法を学び始めたいと思っていますが、プログラム設計のようなものです - 私が聞いたことによると - すべてのスレッドが同じ命令を実行し、最小限の同期オーバーヘッド。
私が聞いたところによると、Python ラッパーは、C ライブラリよりもはるかに直感的に使用およびコーディングできます。
では、私が既に知っている/知らない言語が障壁ではないと仮定すると、どの言語で CUDA の学習を開始するのが最適でしょうか?
CUDA の DO と DONT について最もよく理解し、最も簡単に学習できるのはどれですか?
algorithm - CUDAで三角形を描く
私は独自のグラフィックス ライブラリを作成しており (そう、宿題です:)、cuda を使用してすべてのレンダリングと計算を高速に実行しています。
塗りつぶされた三角形の描画に問題があります。1つのプロセスで1つの三角形を描くように書きました。シーンに小さな三角形がたくさんある場合は問題なく動作しますが、三角形が大きい場合はパフォーマンスが完全に低下します。
私の考えは、2 つのパスを実行することです。最初に、スキャンラインに関する情報を含むタブのみを計算します (ここからそこまで描画します)。これは、現在のアルゴリズムのようにプロセス計算ごとに三角形になります。2 番目のパスでは、三角形ごとに複数のプロセスでスキャンラインを実際に描画します。
しかし、それは十分に速いでしょうか?多分もっと良い解決策がありますか?
c++ - Visual Studio 2008で新しいCUDAプロジェクトを開始するにはどうすればよいですか?
これは非常に基本的な質問ですが、Visual Studio 2008で新しいCUDAプロジェクトを開始するにはどうすればよいですか?CUDA関連の問題についてはたくさんのドキュメントを見つけましたが、新しいプロジェクトを開始する方法については何も見つかりませんでした。私はWindows7x64 Visual Studio 2008C++を使用しています。基本的なプログラムをコンパイルして実行するための、本当に基本的なHelloWorldアプリを見つけたいと思います。
編集:
トムのステップを試してみました。コンソールアプリをセットアップします。次に、ドロップインするデフォルトの.cppを削除し、コンパイルするためだけにテンプレートプロジェクトから3つのファイルをコピーしました。それをコンパイルすると、template_gold.cppがstdafx.hが含まれていないと文句を言ったので、それを含めました。これでビルドは失敗します:
c++ - 初心者 CUDA プログラムの未解決の外部シンボル
Visual Studio 2008 C++ で Windows 7 64 ビットを実行している空のプロジェクトとして、新しい Win32 コンソール アプリを作成します。この記事の下部からサンプル コードを取得してビルドしようとしています: http://www.ddj.com/architect/207200659
プロジェクトのカスタム ビルド ルールに CUDA ビルド ルール v2.3.0 を追加します。利用可能なルールファイルリストにチェックボックスがあるのはこれだけです
ソース ファイル (フォルダー/フィルター???) に moveArrays.cu を作成します。
そのファイルに次のコードを追加します。
ビルドすると、次のエラーが発生します。
SDK に付属のサンプル CUDA プログラムをコンパイルして実行できます。ここで単純なものが欠けていることはわかっていますが、それは何ですか?
cuda - カーネル呼び出し内でassertを使用する
デバイスモードでのカーネル呼び出し内でアサートを使用するための便利な方法はありますか?
c++ - CUDA コードを複数のファイルに分割する方法
C ++で実際のアプリを作成することに近づくために、CUDAプログラムを2つの個別の.cuファイルに分割しようとしています。私は簡単な小さなプログラムを持っています:
ホストとデバイスにメモリを割り当てます。
ホスト配列を一連の数値に初期化します。ホスト配列をデバイス配列にコピーします デバイス カーネルを使用して、配列内のすべての要素の 2 乗を見つけます デバイス配列をホスト配列にコピーして戻します 結果を出力します
すべてを 1 つの .cu ファイルに入れて実行すると、これはうまく機能します。それを 2 つの別々のファイルに分割すると、リンク エラーが発生し始めます。最近の私のすべての質問と同様に、これが些細なことであることはわかっていますが、それは何ですか?
KernelSupport.cu
MyKernel.cu
ビルドログ:
Windows 7 64 ビットで Visual Studio 2008 を実行しています。
編集:
これについては、もう少し詳しく説明する必要があると思います。ここで私が探している最終結果は、Main.cpp のようなint main()
イベントを含む通常の C++ アプリケーションを作成し、そこから実行することです。.cpp コードの特定の時点で、CUDA ビットを参照できるようにしたいと考えています。したがって、私の考え (ここにもっと標準的な規則がある場合は訂正します) は、CUDA カーネル コードを .cu ファイルに入れ、デバイスとの通信と呼び出しを処理するサポート .cu ファイルを用意することです。カーネル関数とそうでないもの。
c++ - CUDA.cuコードをC++アプリと統合する方法
この投稿は、以前の投稿とよく似ています。CUDAコードを複数のファイルに分割する方法 私は、実際に求めていたものを大失敗させて、そこで修正しようとすると混乱しすぎるのではないかと心配しています。
このコードは、CUDASDKのcppIntegrationの例に大まかに基づいています。
関数でmain.cppを使用main()
し、GPUでいくつかの作業を行うために別の.cuファイルを呼び出すようにします。別の.cuファイルで、別の.cuファイルにあるカーネルコードを呼び出せるようにします。Main.cpp、KernelWrapper.cu、およびMyKernel.cuの3つのファイルを想定しています。テスト用のMain.cppRunTest()
は、KernelWrapper.cuにある関数を呼び出す以外は何もしません。このRunTest()
メソッドは、TestDevice(int *deviceArray)
MyKernel.cuにあるカーネルを実行します
Main.cpp:
KernelWrapper.cu:
MyKernel.cu:
これらのエラーが発生します。
VisualStudio2008をWindowsVista764ビットで実行しています
編集:
トム、これがコード生成を/MTに設定した結果のビルドログです