SSE(AVX)でintとfloatの両方を扱うときは、すべてのintを浮動小数点数に変換して浮動小数点数でのみ動作させることをお勧めしますか? それ以降はほんの少しのSIMD命令が必要なので、私たちが使用する必要があるのは、この変換を完全に保持する必要がある加算命令と比較命令(<, <=, ==
)です。SSE ints vs. floats実践
答えて
私のコメントを回答に拡大します。
基本的に次のようなトレードオフを計量:整数と
スティック:
- 整数SSEは、低レイテンシ、高スループットです。 (Sandy Bridgeのデュアル発行)
- 128ビットSIMD幅に制限されています。
浮動小数点への変換:256ビットのAVXから
- 給付。
- 単一の問題の加算/減算(Sandy Bridge上)のみ
- 最初の変換オーバーヘッドが発生します。
- 正確度の低下なしに
float
に収まるものに入力を制限します。
私は今のところ整数に固執します。 float
バージョンのコードを複製したくない場合は、それがあなたの呼び出しです。
整数を浮動小数点でエミュレートする速度が速くなったのは、除算が必要なときだけです。
手作業によるベクトル化のダイビングは、パフォーマンスがより重要であることを意味するため、わかりやすさについては言及していません。
AVX浮動小数点はSandy Bridgeでは単発ではありません。正確な特性は簡潔に記述するのが難しいですが、Sandy BridgeはFP加算を実行し、すべてのサイクル(ロード、ストア、および置換のいくつかの組み合わせ)を掛けることができます。詳細については、インテル®最適化マニュアルの2.1.4を参照してください。 (公正では、質問者は乗算をしていないようですので、あなたは完全にマークではありません) –
私はadd + mulの問題をよく知っています(何らかのシャッフルと一緒に)。しかし、はい、私はFP-追加が単発であることを指していました。 (私はそれについてもう少し明確にできたと認めますが) – Mysticial
- 1. Python Flask:ルートvs add_url_rule、SSE
- 2. SSEが__m128にSSEをロードする
- 3. Codeigniter MVC実践
- 4. C++実践プログラム
- 5. Gitでの実践
- 6. SQL Northwindの実践
- 7. gitブランチングの実践
- 8. セマンティックHTML実践:ナビゲーションリスト
- 9. より良いプログラミング実践
- 10. リソース処理の実践
- 11. Android parsing ints efficiency
- 12. log4netとints
- 13. nan、float、ints
- 14. 実践のためのVisual Sourcesafeサーバー
- 15. Ajaxを使ったルーティング実践
- 16. チームでの知識移転の実践
- 17. 良いプログラミング実践:配列の参照
- 18. ストライプを使った実践体験?
- 19. レルムファイルサイズの最小化:実践的アプローチ
- 20. Ruby on Rails。高負荷。建築実践
- 21. PHP - オブジェクト指向実践と継承
- 22. ブーストタイプ消去の実践と発見
- 23. 良いMEFチュートリアルと実践ラボ?
- 24. SSE(SIMD拡張)gccの
- 25. 128ビットSSEカウンタ?
- 26. copy対int std :: move for ints
- 27. AVX SSEと_mm_load1_ps
- 28. SSE strangeness with Functions
- 29. ASP.NET MVC 3で "Floats"が呼び出されていないEditorTemplate
- 30. SSE命令:Byte + Short
理想的には、整数ではなく浮動小数点数を取り除くことは理想的です。インチは、より速く、より良いと強くなります:) –
SSEでさえ???私は確信していません。私たちは浮動小数点を取り除くことはできません。明らかに、int型の '4 - > 4.00000'の変換はOKですが、等価を保持する必要があります。 – Cartesius00
あなたは何をしようとしているのかの例を示す必要があります。 'int'!=' float'です。また、AVXはまだ256ビット幅の整数演算をサポートしていません。 (AVX2 will)だから私はあなたがこれをしたい理由を理解することができます。それがより速くなるかどうかは、あなたがしようとしていることに大きく依存します。 – Mysticial