問題タブ [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++11 は C99 制限指定子を追加しますか? そうでない場合、なぜですか?
restrict
は、コンパイラがポインタに対して「以前は fortran のみ」の最適化を実行できるようにすることで、最近多くの注目を集めている C99 の機能です。また、Microsoft が最近 C++AMP 仕様の基盤として発表したのと同じキーワードでもあります。
そのキーワードは実際に FCD に含まれていますか? そうでない場合、それが省略された特定の理由はありますか?
language-agnostic - 並行性とメモリ モデル
GPGPU と新しい C++ AMP ライブラリに関する Herb Sutter によるこのビデオを見ています。彼はメモリ モデルについて話し、弱いメモリ モデル、次に強いメモリ モデルについて言及しています。また、読み取り/書き込みの順序などについて言及していると思いますが、よくわかりません。
Google はメモリ モデルに関するいくつかの興味深い結果 (主に科学論文) を出していますが、誰かが弱いメモリ モデルとは何か、強いメモリ モデルとは何か、およびそれらと同時実行性との関係を説明できますか?
c++ - C ++ AMPで「synchronize()」の呼び出しが不要なのはいつですか。
背景:C ++ AMPの概要については、DanielMothの最近のBUILDトークを参照してください。
ここ、ここ、ここ、そしてここで最初のウォークスルーを通過します。
その最後の参照でのみ、彼らはを呼び出しますarray_view.synchronize()
。
これらの簡単な例では、への呼び出しsynchronize()
は不要ですか?いつ除外しても安全ですか?parallel_for_eachがそれなしで「同期的に」動作することを信頼できますか(進行中のコードなし)?
c++ - C++ AMP retrict(direct3d) コードで double が予期される int インデックスを使用する
グーグルはあまり役に立ちませんでした。AMP を使用したことのある人はいますか?
以下のコード スニペットでは、integer から double (double v = idx.x) へのキャストにより、「シェーダーの作成に失敗しました」という実行時エラーが発生します。私は、restrict(direct3d) がコンパイル時に GPU が処理できないことを警告してくれると思っていました。pow() に代わるものはありますか? または、そのためにループを作成する必要がありますか?
c++ - C ++ AMPは互換性のあるGPUのないマシンで実行されますか?
C ++AMPはDirectX11をサポートするGPUによって高速化されることを理解しています。
ただし、私の質問は、コンパイルされたC ++AMPプログラムがDirectX11互換のGPUを搭載していないマシンで実行された場合、どうなるかということです。
DirectComputeのソフトウェア実装によってエミュレートされますか?
CPUで実行されますか(おそらくSSEスタイルの命令を使用して)?
それとも、実行に失敗するだけですか?
c++ - C++ AMP で 2 次元配列を使用して array_view または配列オブジェクトを宣言する方法
int myarray[2][3]
オブジェクトの初期化などに配列を使用しようとしていarray_view
ます。私は試しましたがarray_view<int, 2> a(2,3, myarray);
、うまくいきません。ベクトルでも同じことができるようにしたいと思います。何か案は?
c++ - parallel_for_each でサポートされていない型エラー
私は C++ AMP をいじっていますが、何らかの理由で最も馬鹿げたコードがコンパイルされません。これ:
次のエラーが発生します。
エラー C3576: 'wmain::': Concurrency::details::_Parallel_for_each 引数 #3 にサポートされていない型 c:\program files (x86)\microsoft visual studio 11.0\vc\include\amp.h があります
ラムダ式が渡されるのが好きではないようですconst _Kernel_type& _Kernel
ノート; AMP サポートを含む Visual Studio 11 Developer Preview を使用しています。「restrict(direct3d)」は、問題のコードを実行するアクセラレータの制御をサポートする新しいキーワードです。
何か案は?いくつかの異なる例からコピーしようとしましたが、何も機能しないため、少し困惑しています。
c++ - C++AMPでのインデックス変数の制御
私はC++AMPを試し始めたばかりで、現在取り組んでいるプロジェクトで試してみることにしました。ある時点で、私は持っているベクトルの距離行列を作成する必要があり、これのために以下のコードを書きました
ただし、ご覧のとおり、これは距離行列の対称性を考慮していません。行列iとjのsqrsumを計算するとき、 iとjの順序が逆になっているときに、同じ計算を再度実行したくありません。これを達成する方法はありますか?私は次のトリックを思いついたが、これがパフォーマンスを大幅に向上させるかどうかはわからない
if-conditionはその仕事をすることができますか?それとも、ifステートメントがパフォーマンスを不必要に損なうと思いますか?私はそれに代わるものを思い付くことができませんでした
ところで、上記のコードが私のマシンでは機能しないことに気づきました。そのgpuは単精度しかサポートしていません。その問題を回避するために何かすることはありますか?エラーメッセージは次のとおりです。「runtime_exception:Concurrency ;; parallel_for_eachは、選択したアクセラレータでサポートされていない機能を使用します。ID3D11Device:: CreateComputeShader:Shaderは、現在のデバイスでサポートされていない倍精度浮動小数点演算を使用します。」
c++ - C++ AMP ライブラリの使用
私は<amp.h>
ライブラリをいじり始めようとしています。しかし、入力すると#include amp.h
、ソースファイルを開けないというエラーが表示されます<amp.h>
。これを利用できるようにするために何か特別なことをする必要がありますか?