- 【C++】高速化手法【SSE】
919 :デフォルトの名無しさん[]:2015/04/23(木) 02:36:43.48 ID:veeSmdX3 - core i7 2600 Sandy BridgeでAVX使って自作ルーチンの最適化してるけど
1ループの命令数は40個くらい ほとんどスループット1の命令だけを使ってるけど 長い依存関係があるから1ループのレイテンシーは大きい (主にadd_ps, mul_ps, rsqrt_psとか) こういう場合って理論上は40clock/loopで計算出来ると思うけど CPUの能力的に(物理レジスタ数?out of order実行能力?のせいで) 1ループのレイテンシーが大きすぎると理論値を達成できなくなると思う。 これが達成出来なくなるのって、1ループのレイテンシーが どのくらいになったときなんだろう あと、これを避けるために 1次キャッシュに収まるくらいの一時領域を用意して ループを小分けにするのって有効? (例えば単純化した例 for a = b + (c * d) -> for temp = c * d, for a = b + temp) 試す予定だけど、理論的予測とか 予測に使える資料とかあったら教えて欲しい
|