C++AMPが何に適しているのかわかりません。アプリケーション(この場合はレイトレーサー)をすでにマルチスレッド化してシステム上のn個のコアすべてを使用している場合、C ++ AMPを使用する必要がありますか、それとも実際にボトルネックが増えるのでしょうか?(マルチスレッド化しようとすると、すべてのCPUコアがすでに100%使用されています)
2 に答える
C ++ AMPを使用すると、GPUでコードを実行できます。パフォーマンスが得られるかどうかは、計算でハードウェアをどれだけうまく活用できるかによって異なります。より多くのコアを自由に使用できますが、PCIeを介してデータを転送する必要があるため、データ移動の初期コストを完済するために、計算はかなりの量になる必要があります。レイトレーサーなどのデータ並列問題はよく一致します。
詳細については、C ++ AMPの紹介記事をご覧ください:http://blogs.msdn.com/b/nativeconcurrency/archive/2012/08/30/learn-c-amp.aspx
または、C ++ AMPの紹介プレゼンテーションをご覧ください:http: //channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-802T
AMPは、各要素またはスレッドが互いに独立している膨大なデータ配列を計算する場合に適しています。たとえば、1億個の粒子の配列内の粒子の位置を計算する場合、CPUで数時間かかります。ただし、GPUでは、各パーティクルを1つのスレッドにすることができ、GPUは一度に数千のスレッドを実行できます。8コアCPUと比較すると、一度に実行できるスレッドは8つだけです。