問題タブ [cuda-arrays]
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.
arrays - テストのためにCUDAテクスチャを読み戻す方法は?
これまでのところ、ホストコンピューター(float型)で配列を作成し、それをGPUにコピーしてから、別の配列としてホストに戻すことができます(元の配列と比較してコピーが成功したかどうかをテストするため) )。
次に、GPU上のアレイからCUDAアレイを作成します。次に、その配列をCUDAテクスチャにバインドします。
ここで、そのテクスチャを読み返して、元の配列と比較します(ここでも、正しくコピーされたことをテストします)。readTexel()
以下に示す関数を使用するサンプルコードをいくつか見ました。私にはうまくいかないようです...(基本的に、bindToTexture(float* deviceArray)
関数の行から始まるセクションを除いて、すべてが機能しreadTexels(SIZE, testArrayDevice)
ます)。
これを行うための別の方法の提案はありますか?または、コードで見逃した明らかな問題がいくつかありますか?
助けてくれてありがとう!
cuda - CUDA: GPU での 2D 配列の割り当て
次のスレッドを既に読みましたが、コードを動作させることができませんでした。
GPU に 2D 配列を割り当て、値を入力して、CPU にコピーしようとしています。私のコードは次のとおりです。
どうすればこれを達成できますか?
cuda - CUarray で cuMemset を実行することは可能ですか?
cuGraphicsSubResourceGetMappedArray() を介して OpenGL コンテキストから取得した CUarray があります。cuMemset*() で使用する可能性はありますか?
cuda - cudaMemcpyToArray
関数cudaMemcpyToArrayに問題があるようです。次のコマンドがあります。
私が理解している限り、これにより、h_dataのデータからbmp.width x bmp.heightの次元を持つcuArrayの2D配列が得られます。これは、bmp.width*bmp.heightの次元の1D配列です。残念ながら、最後のコマンドでセグメンテーション違反が発生します。私はひどく間違ったことをしていますか?
cuda - デバイスコードでcudaArrayを読み取る
cudaArray
テクスチャ参照/オブジェクトでラップせずにデバイスからaの値を読み取る方法はありますか?私が見たすべての例は、cudaArray
テクスチャを作成するためだけに使用されています。それがそれらを使用できる唯一の方法ですか、または私は次のようなことをすることができます:
それで、基本的に、そこの代わりに何をすべきtex1D
ですか?また、これが可能であれば、これを行うことでパフォーマンス上の利点があると誰かが考えているかどうか知りたいと思いますが、私自身のテストも実行して確認します。
ありがとう!
c++ - Cuda cudaGetTextureReference が「無効なテクスチャ参照」を返す
この厄介なtex refの問題に悩まされている小さなcuda libを開発しています。
これは、Cuda C プログラミング ガイドの 43 ~ 44 ページのサンプル コードです。
実行すると、行 cudaGetTextureReference(...) がエラー コードを返しますcudaErrorInvalidTexture
。インターネット上で cudaGetTextureReference に関する他の多くのサンプルを見つけることができませんでした。それらのほとんどは、上記のサンプル コードとまったく同じ手順に従っています。
イライラしたので、後で高レベルの API を試しました。
同じ問題。カーネルでそのテクスチャから読み取った場合、取得できるのはゼロ値だけです。
私の完全なおもちゃのテスト コード、100% の再現率: (win7、cuda 5.0)
この問題についての洞察をいただければ幸いです。ありがとう
cuda - CUDA テクスチャ オブジェクト -- 非正規化モードでの補間が正しくない
CUDA 配列にバインドされた CUDA テクスチャ オブジェクトからの正規化されていない線形補間は、正しくない結果を返すようです。補間された値は、0.5
予想よりも小さい係数になっているようです。正規化された線形補間は適切に機能しているようです。
このコードに何か問題がありますか? 正規化されていないテクスチャ補間を行う場合、2 倍する必要がありますか?
コード:
結果:
上記のコード、makefile、および正規化された補間のコードについては、この要点を参照してください。
cuda - クラスメンバーとしてのCUDAテクスチャ?
インスタンスごとのテクスチャでクラスを定義しようとしています。はい、そのクラスのインスタンス数は少なくなります。CUDA テクスチャはグローバル変数でなければならないという制限を回避するために、次のアプローチを試しました。
- テクスチャのグローバル テーブルを定義します。
- インスタンス ID データ メンバーをクラスに追加します。
- クラス メソッドで ID を使用してテーブルからテクスチャを選択し、それを引数として CUDA カーネルに渡します。
うまくいきません。テクスチャは引数として渡すことはできず (ポインターや参照によっても)、カーネルは配列名を認識せず、インデックスで渡すことはできません。おそらくswitchステートメントでそれを行うことができますが、それは醜いです。助言がありますか?
opengl - CUDA キューブ マップ テクスチャ
CUDA で OpenGL キューブ マップ テクスチャを処理するにはどうすればよいですか?
CUDA カーネルで OpenGL テクスチャを使用したい場合、行うことの 1 つは、登録された画像とマップされたリソース (この場合はテクスチャ) から CUDA 配列を取得することです。ドライバー API ではcuGraphicsSubResourceGetMappedArray
呼び出しによって行われますが、2D テクスチャの場合は問題ありません。しかし、前述のキューブ マップについて話すと、この関数の 3 番目のパラメーターにはフェイス列挙型 ( などCU_CUBEMAP_FACE_POSITIVE_X
) が必要です。したがって、いくつかの疑問が生じます。そのような列挙型を渡すと、返されるテクスチャ配列には、その特定の面のデータのみが含まれますよね? 次に、キューブ テクスチャ全体を使用して、同様にキューブ マッピングを実行する方法:
または、CUDA カーネルでこれを行うことは不可能であり、ユーザー コードで適切な計算とサンプリングを使用して 2D テクスチャを使用する必要がありますか?