HPCシステムズではエンジニアを募集しています。詳しくはこちらをご覧ください。
HPCシステムズのエンジニア達による技術ブログ

Tech Blog

さようならicc、こんにちはicx

Intel社というと、世間一般ではCPUを中心としたハードウェアメーカーという印象が強いと思います。ですが Intel社には、CompilerやMPIといった、アプリケーション開発用ソフトウェアを提供している一面もあります。

科学技術用計算アプリケーションにおいて、最近はpython言語を用いて作成されたソースコードも増えましたが、C/C++言語やFortran言語で作成されている物はまだまだ非常に多い状況です。

この C/C++言語やFortran言語で書かれたソースコードをCompileする際、Intel社の提供している C/C++/Fortran用コンパイラ( Intel Compiler )を使用するケースは結構メジャーで、弊社においても、Intel社製CPUを搭載したハードウェア環境においては基本的に採用しています。

この Intel Compiler を用いてCompileを行う際に、今まで使用されていたのが、C言語においては icc というコマンドで、このコマンド名は20年近く変更されていませんでした。そのため、Intel Compilerといえば、icc というコマンド、という認識の方も多いかと思います。

このicc というコマンドですが、2023年中には、Intel社配布のCompilerからは取り除かれる予定になっています。

現在、Intel社はCompilerを含んだ開発ツール群を、Intel oneAPI という名前で提供しています。この Intel oneAPI の最新版である、Version 2023のReleaseNotesにて、以下のような記述があります。

 

“Intel® C++ Compiler Classic (icc) is deprecated and will be removed in a oneAPI release in the second half of 2023. Intel recommends that customers transition now to using the LLVM-based Intel® oneAPI DPC++/C++ Compiler (icx) for continued Windows* and Linux* support, new language support, new language features, and optimizations. “

 

2023年後半に新しくリリースされる oneAPIから icc が取り除かれると書かれています。
また、今後のIntel社製のC/C++コンパイラはLLVMベースの新しいコンパイラ DPC++/C++ Compiler に移行し、 今まで icc だったコマンドは、icx に変更になります。

この変更のため、” Intel CompilerのC言語用コンパイルコマンド = icc ” 、と決めうちで作成されているようなアプリケーション、スクリプトではそのままでは想定された動作ができなくなります。

勿論、アプリ開発者側もこの変更について認識しています。既に一部のアプリケーションにおいては、従来の icc コマンドを使用するCompilerから、icxを使用する新しい DPC++/C++ Compiler への対応(移行)が始まっており、今後この流れは加速していくことでしょう。しかし、アプリケーションの開発側の対応が間に合わない場合、ビルドを試みるユーザーが対応作業を行う必要が出てくることになります。

 

前述の通り、実行コマンドとしてiccを使用する従来のIntelCompilerが無くなるのは、新しい Intel oneAPI のVersionがリリースされた時になります。残念ながらいつ頃に新しいVersionのリリースがあるのかは分かりませんので、従来の Intel Compiler を継続して使用したい方は、現行の Intel oneAPI version 2023.1 をダウンロードしておくことをお勧めします。(有償ライセンスをお持ちの方は新しいVersionリリース後も古いVersionをダウンロードできますが、無償版oneAPIをご使用の方は、最新のVersion以外をダウンロードできる保証がありません)

 

なお、蛇足となりますが、実行コマンドが ifort で実行できる従来のIntel Fortran Compilerについても、実行コマンドが ifx となる新しいFortran Compilerが既にリリースされています。ただし、本記事で解説した、icc/icpc で実行できる従来の C/C++ Compilerとは異なり、本年度中にoneAPIから取り除かれる予定はありません。