質問

仕事をしているVisual Studio2008のプロジェクトの設定のオプションのためのプライバシーポリシーを拡張命令セット"できるように設計してい設定無し、SSEはSSE2

そのコンパイラへのバッチの指示で一緒にご利用いただくため、SIMD指示?

ルールがあるのでいい方法の最適化コードをコンパイラでeffiecientアセンブラを用いこれらの拡張子?

例えば現在のようにraytracer.Aシェーダーの一部の入力、計算からの入力、出力、色のようになります:

PixelData data = RayTracer::gatherPixelData(pixel.x, pixel.y);
Color col = shadePixel(data);

では、例えば有益のshadercodeなることを陰で4つの異なるピクセル以内に指導電話のかけ方は?のようなこと:

PixelData data1 = RayTracer::gatherPixelData(pixel1.x, pixel1.y);
...
shadePixels(data1, data2, data3, data4, &col1out, &col2out, &col3out, &col4out);

加工複数のdataunitsます。この有のためのコンパイラを使用SSE指示?

よろしく!

役に立ちましたか?

解決

  

私は、Visual Studio 2008で、私はのためのオプションは、私はなし、SSEやSSE2に設定することができ、「拡張命令セットをアクティブにする」を参照してくださいプロジェクト設定で働いています。

     

コンパイラが

?SIMD命令を利用するために一緒にバッチ命令にしようとしますので、

いいえ、コンパイラが独自にベクトル命令を使用しません。それはのx87のものの代わりにスカラーSSE命令を使用します。

あなたが説明することは、「自動ベクトル化」と呼ばれています。マイクロソフトのコンパイラはこれをしない、やるのインテル®コンパイラーます。

で、Microsoftのコンパイラは、手動SSE最適化を実行するために組み込み関数に使用することができますます。

他のヒント

三る。

  1. 最speedupsないから最適な 良いアルゴリズム.くする権利です。この意味でのライブラリの特定の領域です。

  2. まだアルゴリズムの右側で .よくあ80/20ルールです。20%のさまざまな取り組みが認められ80%を実行す。が実現を図るため、その部分に必要な良いプロファイラ. インテルコマ できるだけサンプリングプロファイル毎の機能と素敵なるという報告をピンポイントのキラー.別無料インタビューを受けたことがあ AMD CodeAnalyst またAMD CPUを搭載しています。

  3. コンパイラのautovectorization能力ではない銀の弾です。●このように感(特に Intel C++ まが必要となるケースが少なくあり助けることになっている変換アルゴリズムをベクター。できることが多くより良い結果による手作りの一部は、ボトルネックのコードを使用SIMDください。で行うことができますのCコード(照VJoの上記リンク)を使用intrinsicsまたは使用インライン。

もちろん部品は2-3形反復プロセスです。だが本当に深刻なことがあれば、それはいくつかの良い書籍をテトなど のソフトウェアの最適化Cookbook のプロセッサを参照明文をまたあげていました。

コンパイラは、すべての強大ないが、それはいくつかの制限があります。 (右旗が渡された場合と)それは、それはSSE命令を使用することができます。それが何をしたかを確認する唯一の方法は、コンパイラによって生成されたアセンブリコードを調べることです。

別のオプションは、C SSE / SSE2命令を使用することです。窓のためには、それらをここに見つけることができます:

http://msdn.microsoft.com/ EN-US /ライブラリ/ y0dh78ez%28VS.80%29.aspxする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top