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

IntelがClangベースのC++コンパイラを開発 41

ストーリー by hylom
普及が進むというべきか、利用されているというべきか 部門より
あるAnonymous Coward 曰く、

Intel独自のコンパイラ(Intel Compiler)はIntel CPU向けの最適化が施されていることで一部では有名だが、このたびオープンソースのコンパイラ環境LLVMの一部として開発されているC++フロントエンドClangを使ったコンパイラをIntelが開発したそうだ。

資料PDFによると、C++フロントエンドとしてClangを使ってLLVM中間コード(IR)を生成したのち、プロプライエタリなIntel製のコンパイラでその中間コードをネイティブコードにコンパイルする、という仕組みのようだ。

Clangのは最新のC++規格のサポートが進んでいることに加え、最新版のClangではOpenMP 4.0やCilk PlusといったIntel独自機能もIntelからの貢献により利用できるようになっているという。これにより、Intel CompilerではC++最新規格との高い互換性を実現でき、またOpenMP 4.0やCilk Plusといった技術をClangに提供することでオープンソース的な貢献もできるとしている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by osakanataro (17131) on 2014年05月02日 16時06分 (#2593174) 日記

    2014年4月7,8日に開催された「2014 European LLVM Conference [llvm.org]」でポスター展示されたみたいですね

    現行のIntel C++ Compiler 14.0のマニュアル見てみると
    User and Reference Guide for the Intel® C++ Compiler 14.0「Compatibility Options : clang-name [intel.com]」とかの説明に

    Note: This option applies to the Intel compiler running in a CLANG environment. It does not apply to the Intel CLANG-based compiler.

    とかあったりするので、着実に対応が進んでる、ってことなんでしょうかね

  • by Anonymous Coward on 2014年05月02日 17時07分 (#2593216)
    g++に比べて遅いだのなんだの言われてますが、こうやって、Intelがllvmからネイティブコードへの最適化部分を頑張ってくれれば、いろんなものが速くなりますね。
    • by shima_tetsuo (46446) on 2014年05月03日 13時39分 (#2593692) 日記

      Intelコンパイラの顧客が最新の言語仕様を使えるようになっただけで、LLVMは実績が1つ増えただけの事だね。

      親コメント
    • by Anonymous Coward

      対応が面倒な最新言語規格への対応はLLVMに任せて、プロプライエタリなバックエンドを頑張るという風に読めましたが。

    • by Anonymous Coward

      フロントエンドが行う各言語からllvmまでの最適化の比重ってどれくらいなんでしょうか。
      llvmの中間コードってごく普通のレジスタマシンなので、JavaVMみたいなスタックマシンと違ってバックエンドの最適化の比重は低いと思ってました。

      • by Anonymous Coward on 2014年05月02日 18時42分 (#2593287)
        あくまでも、llvmの上位レイヤーでの最適化はCPUアーキテクチャに依存しない最適化ですから、ベクタライズや、命令の並べ替え、場合によっては、llvmの粒度の小さいインストラクションから、CISC的な大きな命令の置き換えなど、やることは結構あるでしょう。
        長年のIntelの蓄積、経験、感が頼りにされる、Intelにしかできない仕事があると思います。
        親コメント
        • by Anonymous Coward on 2014年05月03日 1時04分 (#2593511)

          llvmのレジスタマシンはx86+FPUに類似していて、現状のバックエンドはシンプルで済む反面、SSEなどの拡張命令を利用した最適化は申し訳程度。
          そのため、自社CPUを知り尽くしたIntelが、AVXなどの新命令セットの利用に加え、uOPやパイプラインなどのマイクロアーキテクチャを考慮したバックエンドの最適化により、それなりの性能向上が期待できますね。
          AMDもOpenCLとllvmベースでAPUのHSAを作っていますし、非x86でもバックエンドの最適化はホットな話題と思います。

          親コメント
    • by Anonymous Coward

      いろんなものが速くなりますね。

      Intelコンパイラは速いかもしれんけどClangは遅いままでしょ

      • by Anonymous Coward

        コンパイラではなく、コンパイルして出来上がったアプリが速くなると元コメは言っているんでしょ。

        • by Anonymous Coward

          Clangの生成するコードの質は変わらん → 影響なし
          Intelコンパイラの生成するコードの質は変わらん → 影響なし
          GCCの生成するコードの質は変わらん → 影響なし
          VCの生成するコードの質は変わらん → 影響なし

          何が速くなるという主張??

          • by Anonymous Coward

            Clangの生成するLLVMで動作するコードの質は変わらん → 影響なし
            LLVMからネイティブへのコンパイラをIntelが改良→影響あり

  • by Anonymous Coward on 2014年05月02日 17時21分 (#2593231)

    Intelのこれまでの貢献を知ってて「利用されているというべきか」と言うからにはhylomは余程凄い貢献をしてきたんですね。(棒

    この手の幼稚なアンチ巨人・アンチプロプラには反吐が出るわ。

  • by Anonymous Coward on 2014年05月02日 20時10分 (#2593344)

    ちょっと待てみんな、これ Clang の将来性とか性能の話じゃなくって、Mac OS X の libstdc++-4.2.1 ではどう逆立ちしても C++11 とか C++14 とか対応できなくなってきた為だからじゃないのか。

     

    • by Anonymous Coward

      ということにしたいのですね

    • by Anonymous Coward

      何でそう思っちゃったのカナ??

    • by Anonymous Coward

      バカなの?

    • by Anonymous Coward

      もしそれだけだったら、Intelはコンパイラを変える必要はないですよね。libc++を使ったり、Mac OS X付属に拘らなければ最新のlibstdc++を使えばよいだけなのですから。

      • by Anonymous Coward

        libstdc++のようなライブラリの修正だけでは、C++11やC++14には殆ど対応できません。

        C++11 とか C++14 は C++の構文レベルでの仕様変更が目玉なので、
        コンパイラ側の構文解析器のソースコードの修正が必要です。

        今までintelは独自にC++のコンパイラを全部自前で作ってきたわけですが
        clang/llvm のフレームワークに乗っかれば
        構文解析器はclangのものがそのまま流用できるので、
        開発がかなり楽になる、という点が一番大きいと思います。

        • by Anonymous Coward

          > 今までintelは独自にC++のコンパイラを全部自前で作ってきたわけですが

          フロントエンドはエジソンだけど

          • by Anonymous Coward

            ちなみに10年以上前のサイトの記述ですが、エジソンのC++パーサは40万行もあったそうです

        • by Anonymous Coward

          いや全くもってその通りだから、

          > Mac OS X の libstdc++-4.2.1 ではどう逆立ちしても C++11 とか C++14 とか対応できなくなってきた為

          というのは文章としておかしいってことでしょ。
          コンパイラも変えなきゃダメだというのはその通りで、わざわざlibstdc++を持ち出さなくてもいいし。
          #2593344 への返信として直接ぶら下げてたら完全同意かな。

    • by Anonymous Coward

      なんでMac限定?
      それにOS Xって既にGCCからLLVMに移行してるんじゃなかったっけ。

      • by Anonymous Coward

        元コメ主です。
        不慣れでちと荒れてしまいましたがここにぶら下げてみます。
        Mac 限定なのは、OS X が GCC を捨てて Clang に移行しているのに Intel Compiler (icc/icpc)は GCC 環境に依存していた為です。

        ・Intel Composer XE 2012 辺りまでは幸せでした。
         当初のサポート対象は OS X 10.5 と 10.6。Linux 版との GCC バージョンの違いもそう無いため、Linux と同じコードがコンパイルできました。

        ・Intel Composer XE 2013 SP1 (icpc version 14) で Mac OS X だけ取り残されました。
         SP1 でついに RHEL5 が deprecated になりRHEL6 の gcc-4.4 が最古

typodupeerror

にわかな奴ほど語りたがる -- あるハッカー

読み込み中...