問題タブ [gpu-constant-memory]
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.
memory - CUDA定数メモリ割り当てはどのように機能しますか?
(CUDA 4.2を使用して)一定のメモリがどのように割り当てられるかについての洞察を得たいと思います。使用可能なコンスタントメモリの合計は64KBです。しかし、このメモリが実際にデバイスに割り当てられるのはいつですか?この制限は、各カーネル、cudaコンテキスト、またはアプリケーション全体に適用されますか?
.cu
ファイルに複数のカーネルがあり、それぞれが64K未満のコンスタントメモリを使用しているとしましょう。ただし、一定のメモリ使用量の合計は64Kを超えています。これらのカーネルを順番に呼び出すことは可能ですか?異なるストリームを使用して同時に呼び出された場合はどうなりますか?
それぞれが異なる量のコンスタントメモリを使用する多数のカーネルを備えた大規模なCUDAダイナミックライブラリがある場合はどうなりますか?
それぞれが使用可能なコンスタントメモリの半分以上を必要とする2つのアプリケーションがある場合はどうなりますか?最初のアプリケーションは正常に実行されますが、2番目のアプリはいつ失敗しますか?アプリの起動時、cudaMemcpyToSymbol()
呼び出し時、またはカーネルの実行時?
cuda - cudaは定数メモリを2次元配列として使用します
私はカーネルをマルチスレッドの「ホスト」プログラムに実装しています。ここでは、すべてのホスト スレッドがカーネルを呼び出しています。定数メモリの使用に問題があります。定数メモリにはいくつかのパラメーターが配置されますが、スレッドごとに異なります。問題が発生するサンプルもビルドします。
これがカーネル
そして、pthread がこの関数を呼び出しています。
定数メモリはこのように宣言されています。
ホストスレッドごとに異なる値がh_piCoeff
あり、それを定数メモリにコピーします。
すべての pthread 呼び出しで同じ結果が得られるようになりました c_iaCoeff
。これは、定数メモリがどのように機能するかの問題であり、コンテキストで宣言する必要があると思います。サンプルでは、c_iaCoeff
呼び出しているすべての pthread に対して宣言されているのは 1 つだけで、pthreads によって呼び出されたカーネルは最後の値を取得しますcudaMemcpyToSymbol
。そうですか?
ここで、定数メモリを 2 次元配列に変更しようとしました。2 番目の次元は以前と同じ値になりますが、最初の次元は使用される pthread のインデックスになります。
カーネルでは、このように使用されます。
しかし、この方法で定数メモリを使用できるかどうかはわかりませんね。また、定数メモリにデータをコピーしようとするとエラーが発生しました。
一般的に、定数メモリを 2 次元配列として使用することは可能ですか? はいの場合、私の失敗はどこにありますか?
cuda - コンスタントメモリ
整数を定数メモリにコピーしてグローバル関数で使用するコードを記述しましたが、正しく機能しません。グローバル関数の「cuPrintf」が機能せず、何も出力されないということです。
「if(* num == 5)」のせいだと思いますが、削除したので「cuPrintf」は全部好きなように印刷してくれます!
「if(num == 5)」も試してみましたが、Visual Studioでコンパイルされず、エラーが表示されます。
「cuPrintf」では「num」は正しいのに、「if」ステートメントでは正しくないのはなぜですか。
「if」ステートメントで「num」をどのように使用する必要がありますか?
私が変更した場合:
に
また、変更します。
に
それから
任意の入力で「num=0」と表示されます!
cuda - 定数メモリを使用すると、cudaの値の代わりにアドレスが出力されます
cudacopytosymbol を使用しないカーネルから割り当てられた定数メモリの値を使用して、コードで定数メモリを使用しようとしています。
出力ショー
プログラムで、コード内のケネルを介して定数メモリに割り当てられた値を出力する必要があります。