- 326 名前:317 mailto:sage [2006/07/17(月) 23:01:47 ]
- ひーん、諦めかけてからレスがたくさんついてる〜
#あ、icc使用って書くの忘れてた。 そもそも、「コンパイラよりもアセンブラの方が絶対速い。ループ内部だけでもアセンブリ化しろ」と 主張する頭の固い人たちを納得させられればいいので、ループの最適化には手を出さずに済ませたいわけです。 で、「xmmレジスタは並列演算できるのだから絶対速い」というヒント(という名の指示)の元、 >317のようなコードを書いてみたわけですが。 処がこの程度のアセンブリ化ではC部分とのI/Fに時間を取られるようで効率が上がっていません。 実際元のソースをiccでコンパイルするとループをアンロールして4回分ずつ回すようです。 勿論SSE命令も使うし並列化オプションを指定すれば並列化してくれるし。 なので、このまま「保守性と開発工数を考えればコンパイラに任せたほうが無難」という報告をしてもいいのですが、 念のため(と技術的興味から)アセンブリ部分で無駄がないかを聞いてみたかったのです。 >>318 恐らく2回分ずつアンロールしたコードを書くと速そうですが、コンパイラも同じ程度のコードを出しそうです。 >>320 正直私には、gcc辺りのコードを書くのがやっと。iccに勝てるコードを書けるとは思いません。 #この場合、Cの単純な翻訳と言う意味で。 >>321 iccのマニュアルをさっと読んだ限りでは見た記憶がないのですが、調べてみます。 >>322-325 えーと、最終的なコードはもそっと複雑になるのでロジックレベルの最適化は>317で止めた次第です。 #後出しすんません。 ってことで、何かあれば引き続きお願いします。 #FPU命令とSSE命令って組み合わせるとどうなるのかなぁ。こればっかりはニモニック表にらめっこしてもわからん……
|

|