パスワードを忘れた? アカウント作成
7742 story

インテル製コンパイラ icc の FreeBSD サポート開始 48

ストーリー by yoosee
でーもん君高速化ドーピング 部門より

BSD 曰く、 " Alexander Leidinger 関係者にあてたメール (日本語訳)によると、 icc によって FreeBSD カーネルをコンパイルするためのパッチがコミットされたとのことだ。 インテルの icc コンパイラを入手するにはライセンスを取得しなければならないが (参考情報)、 ライセンス取得し icc をダウンロードすれば、誰でも簡単にカーネルが再コンパイル できるようだ。i386系では icc は gcc より最適化されたコードを 生成するので、新しいカーネルは従来のものより多少速く動くようだ。 そのうち、i386系はカーネル、ユーザランドの両方とも icc でコンパイルされた バイナリが配布されるようになるのかもしれない。"

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by tt (2867) on 2004年03月14日 19時37分 (#514180) 日記
    ものすごく素朴な疑問なんですが、iccでカーネル作ってうれしいのでしょうか…?いやもちろん技術的には面白いのはわかるのですが。

    複雑怪奇なループ構造がある数値計算がメインなプログラムで、何度も使うもので速度がとっても重要である、というのならiccを使う意味は大きいと思います。まあマシンとコードによりますが、大抵においてgccよりは良い速度になるので(そうじゃないのもあるわけですが)。

    でも、カーネルとかデバイスドライバって、そういった部分ってそんなにない気がしています。ハードを待つ時間とかの方がよっぽど大きいわけで、その待つ時間をpollingではなく他の仕事が出来るよう、うまくlockとかpreemptiveの仕組みとかを用意することの法が重要に思えます。

    また、iccが超優秀で、たとえばメモリコピーのコードにprefetchをうまくはさんでくれて、速度が30%改善!とかになったとしても、アルゴリズム的な改善(RCUとか使ってコピーそのものをなくすとか)されたら、ひとたまりもありません(まあこれは一般的なプログラムでも当てはまることではあるのですが)。

    そんなわけで、どっちかというとportsとかを全部iccでコンパイルできるようにパッチを用意しました!とかを期待したいなあと思ってたり。出来る限り自分の書くコードはgccでもiccでも通るように頑張ってますが世間一般ではそうじゃないのがちょっと残念だったりします。

    --
    -- Takehiro TOMINAGA // may the source be with you!
    • by Anonymous Coward on 2004年03月15日 0時17分 (#514342)

      > ものすごく素朴な疑問なんですが、iccでカーネル作ってうれしいのでしょうか…?
      > いやもちろん技術的には面白いのはわかるのですが。

      > 出来る限り自分の書くコードはgccでもiccでも通るように頑張ってますが
      > 世間一般ではそうじゃないのがちょっと残念だったりします。


      BSD氏の日記にあるFreeBSD: 半期毎状況報告 [srad.jp]によると

      • インテル C コンパイラによる FreeBSD のコンパイル

      • URL: http://www.Leidinger.net/FreeBSD/
        担当: Alexander Leidinger

        FreeBSD に icc を移植し、それによって FreeBSD を再構築している。現在、 パッチ修正された icc 7.1 によってそれが可能になっている。 icc でコンパイルされたカーネルで NFS が動かないとか、 IP がこわれているとか、いくつかのバグが残っている。 コンパイル環境の整備ができたら、この分野に詳しい 人たちが、これらの問題を解決してくれるだろう。カーネルが動けば、 次はユーザランドである。一通りうまくいけば、このバイナリが配布できる であろう。

        利点は以下の通りである。コンパイラからのエラーメッセージが違うため、 ソースデバッグのヒントとして役立つ。ソースの移植性が高くなる。P4 により最適化された コードになる。(gcc はこの分野でいくつかの弱点がある。)

      とのことなので、FreeBSDの中の世間一般の人も頑張っているのですよ。

      親コメント
      • # BSDさんの日記はちゃんと読んでおります

        速度は余り問題にならなさそうなところではなく、速度が重要視されるアプリにおいて「世間一般の人が」いまいちな対応しかしてないところがやだなー、といいたかったんですが舌足らずでしたねすいません。

        個人的にはエラーメッセージなり警告なりが云々、というのはどっちかというとlintでも使えよという気がしないでもないです。

        --
        -- Takehiro TOMINAGA // may the source be with you!
        親コメント
    • by Anonymous Coward on 2004年03月15日 3時03分 (#514404)
      ものすごく素朴な疑問なんですが、iccでカーネル作ってうれしいのでしょうか…?いやもちろん技術的には面白いのはわかるのですが。
      同意。カーネルなんかよりはlibcとかシェルの高速化を行った方がよっぽど体感速度が向上しますね。遅いgli*cとかba*hなんかは特に。
      親コメント
    • ほとんどのユーザーはアプリが動くプラットフォームを欲しているのですから、
      icc で性能が出るのであれば icc を使えばいいのです。

      ポータビリティをあげる努力に使う時間は、性能向上に使ってください。そのほうが世のためです。
  • by Anonymous Coward on 2004年03月14日 12時10分 (#514082)
    たれ込みに対して、モデレートをすることはできないの?
    たれ込み中の変なコメントが多すぎる気がします。
    • > たれ込みに対して、モデレートをすることはできないの?

      モデレートされた結果掲載されてるということでしょう。
      そうはいっても、たれこみ元も編集者も完璧じゃないでしょうから、

      > たれ込み中の変なコメントが多すぎる気がします。

      もし気になってしょうがないのであれば、それをここで具体的に指摘してあげればいいのではないでしょうか。
      (例えば、既に指摘されていますが、記事のタイトルは逆の意味に読めますね)

      ま、タレコミ自体は議論のきっかけだと思ってるので、タレコミ文自体にクドクドとケチをつけてもしょうがないんじゃないのかな、という気もしますけどね。新聞や雑誌のようなこちらが読者として受身にならざるを得ないメディアなら、それも意味があるのでしょうけど。
      親コメント
    • タレコミは4つの文が並んでいますが、どの文も元のメールの 超訳でしかありません。スペースの関係で多少舌足らずになるのは 仕方ないですし、それは元情報を参照すべきだと思います。 「変なコメントが多過ぎる」とありますが、どれでしょうか。 ちゃんと書いたほうが、スラドを読んでいる皆さんにもよく 伝わると思います。
      親コメント
      • 元ACではないですが、変だと思う点を指摘しておきます。

        始めの、
        > icc によって FreeBSD カーネルをコンパイルするためのパッチがコミットされた
        という文は、「icc に、icc によって FreeBSD カーネルをコンパイルするためのパッチがコミットされた」という意味にも読めてしまい、タイトルの
        > インテル製コンパイラ icc の FreeBSD サポート開始
        と相まって、インテルがパッチのコントリビュートを受けて、icc for FreeBSD を作ったよう解釈できちゃいます。

        書くなら、それぞれ、
          「FreeBSD カーネルに、icc でコンパイル可能にするパッチがコミットされた」
          「FreeBSD が icc でのコンパイルを正式サポート」
        とかが適切だと思います。
        --
        なんちゃってプログラマ?
        親コメント
      • by Anonymous Coward

        タレコミは4つの文が並んでいますが、どの文も元のメールの超訳でしかありません。

        ああそうだったんですか。じゃ、「インテルの icc コンパイラを入手するにはライセンス云々」に相当する元のメールの個所を示していただけますか?見つけられなかったもので。

        それから「そのうち、i386系はカーネル、ユーザランドの両方とも icc でコンパイルされたバイナリが配布されるようになるのかもしれない」についても、元のメール内でその主旨の発言をしているところを教えてくださいな。「ライセンス的に配布は可能なんだけど、とてもじゃないがまだまだでき

    • きちんと評価したいんだったら、(モデレートみたいに) 数個の選択肢からえらぶよりは、(コメントによって) あなた自身の言葉で批評したほうがいいんじゃないでしょうか。
    • >> そのうち、i386系はカーネル、ユーザランドの両方とも
      >> icc でコンパイルされたバイナリが配布されるように
      >> なるのかもしれない。"

      この1文のみたれこみ人としての「コメント」だと思われますが、
      これ以前の3文からどうしてこのようなコメントが生まれる
      のか、、あまりに短絡的なロジックではないでしょうか?

      読んだ人は「なんで、突然そういう話になるのよ?」と疑問に
      思っちゃうでしょう。
  • by tty77 (4123) on 2004年03月14日 17時41分 (#514158)
    インテル製品 - 体験版ダウンロード [xlsoft.com]

    その昔、学生のころに、体験版をダウンロードして、
    自分のプログラムをコンパイル&実行したことがあったのだけれど、
    Borland bcc32 でも、GNU gcc でも、icc でもあまり性能が変わらなかったのは、
    数値計算プログラムだったからか、
    それとも、それ以上に酷いプログラムを書いていたからか…。

    # この時期の大学の計算機資源(スパコン)は混みあっているので
    # 自分のパソコンで走らせたほうがはやかった罠…
    • by magi-bot (11763) on 2004年03月14日 18時58分 (#514174)
      いくらiccがIntelプロセッサに最適化されてるとか言っても
      「劇的に」速くなる訳じゃないですよ。
      たかが数%、よくて20%程度ですし。

      やっぱり普段からいかに最適化されたプログラムを書くかが
      性能には一番効くのではないでしょうか。

      ただ、その計算機に最適化されたプログラムというのは
      必ずしも「きれいな」プログラムではないのが難しいところ。

      手で行列を分割したり、loopをunrollしたりするので
      スパゲッティになりがちです。(笑)
      親コメント
  • Scott Long の見解 (スコア:2, 参考になる)

    by tag (10007) on 2004年03月14日 21時55分 (#514250) 日記
    リリースエンジニアリングチームの Scott Long から メール [freebsd.org]による見解が出されています。
    FreeBSD プロジェクトが icc で作られたバイナリを配布する ライセンスも持っていたとしても、 一般的なケースとしてリリース全体を icc で作成したバイナリ で配布するとは思えない。 一つは、リリース用スクリプトが CVS から全てを見つけ出そうとするため、非常に複雑になるだろう。 また、ユーザは icc を使ってカーネルを再コンパイルする ことができなり、オープンソースという重要な利点を失うだろう。

    icc でコンパイルされた GENERIC カーネルが web や ftp で提供 されることは、興味深いことだと思う。 いつの日か、我々は web applet みたいなもので、自分にあった カーネルをコンパイルすることができるようになるのだろう。

    • 似たような感じで
      カスタムブート用フロッピーディスクイメージ作成webサービス
      ってのはどうだってのが
      何年か前にコンダラの人の日記であったなぁ、
      というのを思い出した。
      どちらも結構すぐに実現は出来そうではあるのに
      どこもやらないっすね。
      親コメント
  • 何を根拠に? (スコア:1, すばらしい洞察)

    by Anonymous Coward on 2004年03月14日 9時25分 (#514048)
    >>そのうち、i386系はカーネル、ユーザランドの両方とも
    >> icc でコンパイルされたバイナリが配布されるように
    >>なるのかもしれない。

    ほんとかいなー。。。!?!?
    • by Anonymous Coward on 2004年03月14日 9時40分 (#514053)
      ほんとかいなー。。。!?!?
      俄かに信じがたい。と言うか創造しがたいですね。
      • ライセンス
      • 互換性
      • コミュニティ内の同意
      生成コードの質だけで覆せないでしょ。
      また gdb やプロファイラの様な開発環境全体の対応とか、エラーメッセージの出方(タグジャンプで使うので大事)とか簿妙に調整しなければいけない要素やまづみです。

      むしろ GCC 開発陣営が刺激を受けて奮起してくれる方向の期待度は高いです。
      コード生成を「真似」するのって著作権的にOKなのかとか微妙な話もありますが…
      親コメント
      • Re:何を根拠に? (スコア:3, 参考になる)

        by syun1rou (9886) on 2004年03月14日 12時02分 (#514080) 日記
        ライセンス的には、件のメールの末尾に
        > Note to committers: we have a commercial icc license, so we're allowed
        > to distribute icc compiled binaries (but we're far away from being able
        > to build an entire release with icc).
        とあるので、やろうと思えば可能なようです。
        親コメント
      • by WATT (7709) on 2004年03月14日 12時14分 (#514083) 日記
        > ライセンス
        ライセンスに関しては、商用ライセンスを既に取得している旨がリンク先の末尾に書かれてますし、バイナリ配布は問題なさそうです。
        いつぞやIntelからライセンスを寄付されたとかいう話があったような。どこで見たんだっけ?

        >互換性
        コンパイラ以外の周辺ツールの対応状況は気になります。全く使えない事はないだろうけども、いやな感じな事が起こりそうな…。
        バイナリの互換性については、iccで作ったカーネルとgccで作ったとモジュールが(あるいはその逆も)一緒に使えるようです。
        以前出ていたNFSが使えない問題とかは解決したのかな。

        >コミュニティ内の同意
        こればっかりは、今後の動向を見守るしかないですね。あるいは1ユーザーとして動向の一部を担いましょう。:)

        現状、カーネルのサポートだけとcurrent-MLに流れてたので、worldまでできたら個人的に試してみようと思ってます。
        ports関連はiccにすると通らないものが多いみたいですね。devel/stlport-iccのようなものが大量にできるか、Mkの中身が大幅に変わるかだと、後者の可能性が高いかな。

        # と、日曜昼間に(内容含め)だらだらと書き込み
        親コメント
        • Re:何を根拠に? (スコア:3, 参考になる)

          by Anonymous Coward on 2004年03月14日 17時18分 (#514154)

          いかにも /.J らしい無責任な発言が横行 (ACに限らず) しているので、誤解を与えそうな箇所を指摘しておく。

          ライセンスに関しては、商用ライセンスを既に取得している旨がリンク先の末尾に書かれてますし、バイナリ配布は問題なさそうです。

          商用ライセンスを取得したのは、元のメールでいう「We」であることを忘れないように。商用ライセンスを取得した人や団体は当該ライセンスの下でバイナリを配布できる。

          第三者である任意のFreeBSDユーザがバイナリを配布する場合は、各自でIntelと契約を結んだ上でその契約に従って行う必要がある。

          親コメント
          • by WATT (7709) on 2004年03月14日 22時00分 (#514257) 日記
            以前のStatus Reportで記事になっていたのと自分が普段使っているICCが非商用ライセンスなので、話題的にFreeBSD.org(ライセンス保有はFreeBSD Foundation?)での配布だけを想定して、商用ライセンスを持たない人間がバイナリ配布する可能性が頭の中からすっぽり抜けてました。
            当たり前といえば当たり前なんですが、確かに誤解を招きそうな書き方でしたね。ご指摘ありがとうございます。

            で、件の非商用ライセンス、ちょっと抜き出すと
            If you are using the Materials under the control of a Noncommercial-Use license, you as an individual may use the Materials for only personal, noncommercial and research purposes. The Materials may not be used for any other purpose, whether "for profit" or "not for profit." Any work performed or produced as a result of use of the Materials cannot be performed or produced for the benefit of other parties for a fee, compensation or any other reimbursement or remuneration.

            と書いてあります。金銭授受とそれに類するものを伴う形での成果物の実行・生産が禁止なのは当然なんですが、そうでない場合の配布に関する部分がちょっとわからないんですよね。
            配布に関する条項が、商用・非商用の区別のないところに書かれているけど、研究目的からはずれるからだめかなぁ。Intelに確認してみるしかない。

            と、これだけでは何なので、おまけ。
            current-MLでもバイナリ配布の話題が出てますね。GENERIC以外のカーネルをコンパイルするのに結局ユーザーがiccを持ってる必要になるじゃないか、みたいなことをScott氏が言ってます。そりゃそうだ。
            親コメント
      • by ken-1 (4041) on 2004年03月14日 10時29分 (#514060)
        プログラミングとかする人ではないのでよくわからないのですが、

        >> icc でコンパイルされたバイナリが配布される

        のに

        > gdb やプロファイラの様な開発環境全体の対応とか、エラーメッセージの出方(タグジャンプで使うので大事)とか

        はあまり関係ないのでは?
        親コメント
        • Re:何を根拠に? (スコア:1, 参考になる)

          by Anonymous Coward on 2004年03月14日 11時56分 (#514078)
          プログラミングとかする人には、
          >> gdb やプロファイラの様な開発環境全体の対応とか、エラーメッセージの出方(タグジャンプで使うので大事)とか
          が、大きく関係するんですよ。

          # iccに対応した開発環境がないと、そもそもバイナリ配布まで
          # こぎ着けないでしょ、って話。
          親コメント
          • by Anonymous Coward
            c++ならともかく、cならよほど凝ったことしないかぎり、
            コンパイラかえてリコンパイルで通ると思うので、
            CC=gccで開発して、CC=iccでリリースすればよいのでは?
            • by dangan (17715) on 2004年03月14日 14時13分 (#514112)
              > CC=gccで開発して、CC=iccでリリースすればよいのでは?

              コンパイラ間の差異が少ない事が予想される、としても
              開発版と違うコンパイラ使ってリリースをビルドするのはリスクが高いと思いますが。
              親コメント
        • by Anonymous Coward

          > gdb やプロファイラの様な開発環境全体の対応とか、エラーメッセージの出方(タグジャンプで使うので大事)とか

          はあまり関係ないのでは?

          icc の gcc との互換性がどれくらいかは知らないのでただの一般論ですが、ありますよ。

          例えば gdb はバイナリに埋めこまれたデバッグ情報を参照しています。ソースコードがあってデバッグオプションを有効にしていれば、実行時にソースの

      • by Tsann (15931) on 2004年03月14日 12時34分 (#514090)
        > むしろ GCC 開発陣営が刺激を受けて奮起してくれる方向の期待度は高いです。

        高いのかな?
        別に競合するコンパイラがあるからといってGCCが刺激を受けるとは限らないと思います。
        Intelに限らずプロセッサメーカはコンパイラ出してたりしません?

        ちなみに過去にintelはGCCを30%ほど高速化するパッチを出してますよね。
        GCC→egcs→Pentium GCCあたりがそのコードを取り込んでませんでしたっけ?
        http://www.goof.com/pcg/pgcc-faq.html#SEC0118
        これって少なくともGCC 2.9系で取り込まれてますよね?

        ところで3.4リリースって近いのかな?
        親コメント
        • by Anonymous Coward
          GCCが30%高速化するんじゃなくて、高速なコードを生成するんじゃなかったっけ?
          GCCが30%高速化されたらとてもうれしい。
          # GCC3.4 snapshotのPCH使っても全然速くならないです。
        • by Anonymous Coward
          2.9 って姫野ベンチとかめちゃめちゃ遅いですよ。
        • by Anonymous Coward
          このトピックに対しての投稿に、コンサバな雰囲気が 漂ってるように感じるんですが、何故でしょう? オープンソースのクリエータとユーザの間の意識に 温度差があるということ?
  • by Anonymous Coward on 2004年03月14日 10時04分 (#514055)
    これじゃIntel C++ Compilerが稼働する環境としてFreeBSDがインテルによって加えられた(つまり"Intel C++ Compiler for FreeBSD")、としか読めないよ。
  • INTEL for AMD (スコア:1, 興味深い)

    by Anonymous Coward on 2004年03月14日 10時24分 (#514059)
    このiccでコンパイルしたコードをAthlonで走らせたら
    どんなパフォーマンスになるんでしょう?

    あまり情報がないもんで。
    • Re:INTEL for AMD (スコア:5, 参考になる)

      by SHNSK (10099) on 2004年03月14日 11時42分 (#514075)
      #FreeBSD に限らず...の話題ですよね?

      きちんとコンパイラオプションを設定してあげれば
      Athlon でも icc の方が速くなることが多いようです.
      #ただし,プロファイラからの出力で最適化してやらないと
      #あんまし意味ない

      例えば Spec に載っている AMD の CPU を使った計算機の結果も
      icc によって出た値です.コンパイラのオプションなどは,
      ここらあたりが参考になるでしょう.
      http://www.spec.org/cpu2000/results/res2003q2/cpu2000-20030505-02154.html

      ただ,正直な話,gcc も 3系になってからは template まわりは
      まともにサポートするようになったし,速度も icc とそれ程かわらない
      ようなので,自分はわざわざ icc を使うようなことはしていません.

      また,icc と gcc とでは C++ の Hash Map あたりの扱いなどを含め,
      コードの互換性を保つためには工夫が(ちょっとだけ)必要なので
      icc 導入の苦労に見合うかどうかは微妙です.
      親コメント
      • by yuu3261 (11831) on 2004年03月14日 14時11分 (#514110)
        >ただ,正直な話,gcc も 3系になってからは template まわりは
        >まともにサポートするようになったし,

        ん、(過去の)boost regression testなどを見ても、初期のiccのほうが
        よっぽど酷かったと思うけどなぁ。v6あたり。

        >また,icc と gcc とでは C++ の Hash Map あたりの扱いなどを含め,
        >コードの互換性を保つためには工夫が(ちょっとだけ)必要なので

        "C++"のHashMapって?標準規格にないクラスをあたかもそうである
        かのように扱ったらそりゃ面倒はあるでしょう。
        親コメント
    • その昔 (スコア:3, おもしろおかしい)

      by gonta (11642) on 2004年03月14日 13時57分 (#514104) 日記
      Windows3.1で、EPSONの98互換機向けに作られたWin3.1の方が
      NECのWin3.1よりも高速に動作した、みんなEPSONのWin3.1を
      NEC PC-98で動かした、という話を思い出してしまった。
      --
      -- gonta --
      "May Macintosh be with you"
      親コメント
  • by kuroyagi (2767) on 2004年03月15日 11時52分 (#514516) ホームページ 日記

    以下、メモ

    • ports に icc8(icc [freebsd.org]) とicc7 [freebsd.org] が両方存在している
    • STL は Intel の配布物には含まれていないので ports の stlport [freebsd.org] を利用する (stlport-icc [freebsd.org]) が、 master port の Makefile で、 icc かつ OS version が 4.6 以降なら test target を実行するようになっていて、これが icc8 では失敗する。答えは、 ML にあるように test しない [freebsd.org]。
    • OpenMP の機能は FreeBSD では利用できないようで 殺してある [freebsd.org]
    --
    「それがどうした、おれたちには関係ない」
typodupeerror

計算機科学者とは、壊れていないものを修理する人々のことである

読み込み中...