問題タブ [c++-amp]
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.
c++ - C++ AMP が異なる次元の array_views を反復処理する
Windows 8 の Visual Studio 2012 で C++ AMP を使用していexperimentData
ますexperimentFactors
。2D array_view の最初の次元と 1D array_view の 1 次元を反復処理したいと考えています。これは私が持っているものですが、これにはオーバーロードがないというエラーが常に発生します。numberOfTests
最初の次元であるを反復処理したいと考えています。私は行が欲しいです:
データの行全体を返します。の方法はこれを行う方法だと思いますが、section
方法array_view
がわかりません。
オブジェクトはのtest
1xN セクションである必要がありますexperimentData
array_view
。オブジェクトは からのfactors
1 つのアイテムである必要がありますexperimentFactors
array_view
。
明確化
array_viewexperimentData
には M 行と N 列があります
array_viewexperimentFactors
には M 行があります
gpgpu - 2D AMP 配列を行ごとに埋める
次のような CPU 側のデータのソースがあるとします。
内部のすべての行ベクトルが同じサイズ (ギザギザではないギザギザの 2D ベクトル) であると仮定します。
これを配列内の GPU メモリの単一ブロックにコピーしたいと考えています。これを行ごとに行う方法はありますか?このようなもの:
私はこれがコンパイルされないことを知っています。それは私がやろうとしていることを示しています。これを達成するものはありますか?私が見つけた唯一の解決策は、cpu ベクトルを 1D ベクトルにコピーし、それを array_view にマップするか、配列にコピーすることでした。
それは機能しますが、無駄が多く、一部のアルゴリズムでは、連続する 1D ベクトルが残りのメモリ空間に収まらない場合があります。
私はAMPを理解するのに苦労しているので、どんなアドバイスも大歓迎です.
visual-c++ - DirectX 11.1は、タイムアウト検出リカバリをトリガーしないデバイスを作成しようとしています
C ++ AMPを使用して、GPUで長時間実行されているカーネルを実行しようとしています。これには、DirectXを使用して、タイムアウトしないデバイスを作成する必要があります。フラグを設定していますが、それでもタイムアウト検出リカバリがトリガーされています。モニターを接続せずに、専用のRadeonHD7970をボックスに入れています。Windows 8がカーネルを終了する前にキャンセルしないようにするために他に何かする必要がありますか?
qt - qmakeを使用したC++AMPのコンパイルが失敗する
私は次のmain.cppファイルを持っています:
および.proファイル:
Visual Studio 2012コマンドラインからmain.cppをコンパイルすると(cl / EHsc main.cppを使用するだけで)、すべてが正常に機能します。しかし、qmakeとnmakeを使用すると、常にリンクエラーが発生し、未解決の外部シンボル(ampからのシンボル)が存在します。誰かがこの問題を解決する方法を知っていますか?
c++-amp - GPU から CPU にデータをコピーする
C++ AMP を使用して行列を計算しようとしています。幅と高さが 3000 x 3000 の配列を使用し、計算手順を 20000 回繰り返します。
計算の前に、行列をホスト メモリから GPU メモリにコピーし、array_view
0 から 7 までの , コード行を作成します。
その後、何らかの操作を計算するためのループを開始し、それを 20000 回繰り返します。反復ごとに、parallel_for_each
C++ AMP を使用して計算するループを開始します。
GPU は非常に高速に計算しますが、結果をホストにコピーするとarray _main
、この操作に多くの時間がかかることがわかりましたnumber
。また、20000 から 2000 に減らすと、コピーの時間も短縮されることがわかりました。
なぜこれが起こるのですか、それは同期の問題ですか?
c++-amp - C++ AMP GPU メモリで値を返す方法は?
次のようなアルゴリズムがあるとします。
CPU と CUDA ではこれで問題ありません。ここでは、GPU メモリのブロックへのポインターを返す関数を作成し、別の関数でその中間値を消費させることができます。
C++ AMP でこれを行うにはどうすればよいですか? concurrency::array オブジェクトを使用する必要があると思いますが、これを行うサンプル コードが見つかりません。
c++ - 生のバッファ データによる別のテクスチャへのテクスチャのスケーリングと回転
これをgamedevに提出しましたが、かなり遅いように見えるので、ここで答えを見つけられることを願っています.
私は C++ AMP と OGRE をいじって、自分の好みに合わせてテクスチャを簡単に書き込んだり変更したりしようとしました。これで、「動的な」テクスチャにテクスチャを描画しようとしましたが、奇妙な結果になりました。画像の 3/4 が切り落とされているように見えますが、修正方法が見つからないので気が狂いそうです。
ここに問題のビデオがあります: http://www.youtube.com/watch?v=uFWxHtHtqAI
そして、問題が実際にカーネルにかかっているにもかかわらず、理解のために必要なすべてのコードを次に示します。
DynamicTexture.h
main.cpp
ご覧のとおり、ダイナミック テクスチャはウィンドウのサイズ (この場合は 800x600) で、minotaur.jpg は 84x84 です。単純に、幅と高さの半分 (中央) に配置し、角度 (ラジアン) で回転させ、4 倍にスケーリングしています。
カーネル自体では、単純に 2D 回転行列に従いました (ここで、x と y はパラメーター 'x' と 'y' によってオフセットされます)。
また、idx[1] は配列内の x 値を表し、idx[0] は y を表すことに注意してください。これは、配列がそのように配置されているためですvalue = buffer[y + (x * height)]
(または、これらの行に沿ったものですが、正しい形式であることを知っているだけです)。
助けてくれてありがとう!
よろしく、 Tannz0rz
c++ - ハードウェアでの C++ AMP のクラッシュ (GeForce GTX 660)
C++ AMP コードの記述に問題があります。サンプルを入れました。エミュレートされたアクセラレータでは正常に動作しますが、ハードウェア (Windows 7、NVIDIA GeForce GTX 660、最新のドライバー) ではディスプレイ ドライバーがクラッシュしますが、コードに問題はありません。
私のコードに問題がありますか、それともハードウェア/ドライバー/コンパイラーの問題ですか?
microsoft-metro - Direct2D での C++ AMP の使用
C++ AMP で生成されたテクスチャをスクリーン バッファとして使用することはできますか?
C++ AMP コード (既に実行済み) を使用して画像を生成し、この画像を使用して Windows 8 メトロ アプリの画面全体を埋めたいと考えています。画像は 1 秒間に 60 回更新されます。
私は Direct3D にまったく精通していません。Direct2d テンプレート アプリを出発点として使用しました。
最初に C++ AMP コードのスワップ チェーンからバッファを直接操作しようとしましたが、そのテクスチャに書き込もうとするとエラーが発生しました。
GPU で AMP を使用してデータを処理し、それを CPU メモリに移動して、D2D API で使用できるビットマップを作成するのは効率が悪いようです。
スワップ チェーン バッファ テクスチャを C++ AMP で直接 (データが GPU から出ることなく) 操作できるようにするコードを誰かが共有できますか? または、少なくともそのバッファに GPU から出ない別のテクスチャからのデータを入力できますか?