soaraによる
2009年04月25日 12時15分の掲載
更に磨きをかけました部門より。
更に磨きをかけました部門より。
hylom 曰く、
4月21日、GCC 4.4.0がリリースされた(マイコミジャーナル記事)。GCC 4.4.0での変更点や新機能、バグフィックスなどはChanges, New Features, and Fixesに挙げられている。
個人的に気になるのがGraphiteブランチの取り込みによる最適化の強化。コード中の多重ループの個所において、ループの順序を入れ替えることによってメモリアクセスの高速化などが期待できるようだ。また、GCC 4.2からOpenMPがサポートされているが、4.4.0からは最新のOpenMP 3.0が新たにサポートされるようになっている。
ポーティングガイドによると、プリプロセッサの条件評価も常に行われるように修正されたとのこと。
教育者泣かせ (スコア:3, おもしろおかしい)
> コード中の多重ループの個所において、ループの順序を入れ替える
> ことによってメモリアクセスの高速化などが期待できるようだ。
「ね、こういう順序でアクセスするようにコード書かなきゃ遅くなるでしょ」
っていう実例見せて授業してる私の立場は?
コメントを書く
Re:教育者泣かせ (スコア:4, おもしろおかしい)
そして、授業の最後に最適化オプションの指定で自動でやってくれる事を伝え、
一言、「昔は、よかった。」といえばOKです。
コメントを書く
親コメント
Re:教育者泣かせ (スコア:4, 興味深い)
まだ大学にsunosが山のようにあったころ。
課題をだしたら一部の人がlinux1.0やpanix(NEC PC98で動くUNIX)でgccで-Oしてきたのですが、運悪く-Oのバグに遭遇したようで他の人と実行結果が異なるレポートをだしてきた人が何名かいました。
アセンブリレベルで「私はこうやったからこうなった。コンパイラのバグだ」ってレポートに記載した強者が一人いました。
彼は6809の機械語を話せる強者でした。
教育現場なんですから、コンパイラが頑張ったのなら「なぜコンパイラはこんなに頑張って最適化ができるのか」を考えさせ、逆にコンパイラがタコなら「なぜコンパイラはこんなにタコなのか」を考えさせればよいのではないでしょうか。
まぁその水準に達する学生さんがどのくらいいるかは......
コメントを書く
親コメント
Re:教育者泣かせ (スコア:3, 興味深い)
コメントを書く
親コメント
Re:教育者泣かせ (スコア:3, 興味深い)
レジスタ割り付けを重視しすぎて、アドレスを増やしながらアクセスすれば良いものを、むちゃくちゃな順でアクセスして、バースト転送、キャッシュラインフィルの特性を台無しにしていた。少しは改善されたのかな。
コメントを書く
親コメント
Re:教育者泣かせ (スコア:3, 興味深い)
組み込み系だと、本当にコンパイラのバグで最適化をすると動かなくなることが、
(PC上のプログラミングと比べると)結構発生します。
なので、
ではなく、「組み込み系だからこそ」かと。
まあ普通は、最適化オプションを切るよりは、
コンパイラのバグを避けるような記述に書き換えるんですが。
コメントを書く
親コメント
Re:教育者泣かせ (スコア:3, 興味深い)
gccの最適化のおかげで動かなくなった事例 [slashdot.jp]。#598754 [slashdot.jp]のリンク先にあるコミットログには「GCCのアグレッシブな最適化のおかげで壊れた」みたいなことが書いてあります。
むしろブートローダや組み込みのような制約の多い環境の方が、最適化の負の面(メモリ使用量の増加とか)の影響を受けやすいんじゃないですかね。
コメントを書く
親コメント