Intel C/C++コンパイラがLLVMを採用

インテルのC/C++コンパイラがLLVMベースとなりました。これまでのコンパイラとは部分的に互換性が無いためガイドに従い修正・変更を行う必要があります。

Intel C/C++コンパイラがLLVMを採用

IntelがC/C++コンパイラにLLVMを採用しました。

Intel C/C++ compilers complete adoption of LLVM
Next generation Intel C/C++ compilers are even better because they use the LLVM open source infrastructure. . I discuss what it means for users of the compilers, why we did it, and the bright future.
LLVMとは
  • 任意のプログラミング言語に対応可能なコンパイラ基盤
  • 最適化が施されるような設計となっている
  • LLVM自体はC++で記述されている
  • AppleやMS等でも利用されている

https://software.intel.com/content/www/us/en/develop/blogs/adoption-of-llvm-complete-icx.html#CoreMark-Pro-i7-8700K

LLVMの採用によりコンパイル時間が短縮されています。

https://software.intel.com/content/www/us/en/develop/blogs/adoption-of-llvm-complete-icx.html#CoreMark-Pro-i7-8700K

またLLVM採用コンパイラでは、実行時パフォーマンスもおよそ20%程度向上しています。

https://software.intel.com/content/www/us/en/develop/blogs/adoption-of-llvm-complete-icx.html

またIntelは C/C++での開発プロジェクトはLLVMベースのものを利用するように推奨しており、Intelがクラシックと呼んでいる過去バージョンも今年中にLLVMを採用したものに変更するよう呼びかけています。

またこれまでのコンパイラは今後 “Legacy Product Support”となり更新はされなくなるとしています。

移行ガイド

これまでのコンパイラからLLVMベースに移行するためのガイドも公開されています。

Porting Guide for DPCPP or ICX
Porting Guide for ICC Users to DPCPP or ICX

デフォルト値の変更や新規オプションの設定に関する記述が見られます。

https://software.intel.com/content/www/us/en/develop/articles/porting-guide-for-icc-users-to-dpcpp-or-icx.html

また、プラグマも変更されているため、クラシックコンパイラやGCCでサポートされているからと言って、ICX(LLVMコンパイラ)でサポートされているとは思わないようにとの記載もあります。

大きなアプリケーションではLLVMベース移行のための修正と確認が大変そうな印象です。

ダウンロード

このC/C++コンパイラは oneAPI Base TookKitに含まれており以下のリンクからダウンロードすることが出来ます。

Windows/macOS/Linuxに対応しています。

Download the Intel® oneAPI Base Toolkit
Select your operating system, distribution channel and then download your customized installation of Intel® oneAPI.

まとめ

LLVM採用で良いことばかり
Intelの発表ではこれまでのクラシックコンパイラと比較し、コンパイル時間、実行時パフォーマンスがLLVMベースが上回っています。
今後はLLVMベースに移行を
今年中にLLVMベースのコンパイラ移行を勧めてており、これまでのコンパイラは今後更新されなくなります。
記事の内容は間違いが無いように気をつけていますが、私の認識違いや、ミスなどにより間違っている可能性もあります。もし発見された場合はお問い合わせフォームよりご連絡頂けると幸いです。