---
title: 'Intel oneAPI コンパイラ'
taxonomy:
category:
- docs
external_links:
process: true
no_follow: true
target: _blank
mode: active
published: false
---
[toc]
## 利用環境{#enviroment}
### 利用できるバージョン・システム{#version}
バージョン | モジュールファイル名 | システムB/C | システムG | クラウドシステム | 備考
--- | --- | --- | --- | --- | ---
2022.3 | intel/2022.3 | + | - | + | 2022年11月導入
\+ : すべてのユーザが利用可能
\- : 利用不可
システムB、C、クラウドでは、システムにログインした時点で、Intelコンパイラがデフォルトで設定されています。システムGではIntelコンパイラは使えません。
```nohighlight
$ module list
Currently Loaded Modulefiles:
x) SysB/2022 x) PrgEnvIntel/2022 x) intel/2022
```
<!--
コンパイラのバージョンは、上表に記載のデフォルトのバージョンが設定されています。
Intelコンパイラのバージョンを切り替えたい場合は、PrgEnvIntel がロードされている状態で、以下のようにmoduleコマンドを実行してください。
```nohighlight
$ module switch intel/2022 intel/2019
```
ログイン時に自動で環境設定を行いたい場合は、ログインシェルの起動ファイルに必要なmoduleコマンドを記述してください。詳細は [環境設定](/config) をご覧ください。
moduleコマンドの詳細は [Modules](/config/modules) をご覧ください。
-->
## コンパイル方法{#usage}
### コマンド{#command}
| 言語 | コマンド | 実行形式 |
| - | - | - |
| C | icx | icx [オプション] ファイル名 |
| C++ | icpx | icpx [オプション] ファイル名 |
| Fortran | ifx | ifx [オプション] ファイル名 |
<!--
| DPC++ | dpcpp | dpcpp [オプション] ファイル名 |
-->
### オプション{#option}
|オプション名 |説明|
|-|-|
|-o FILENAME |オブジェクトファイルの名前を指定します。|
|-mcmodel=medium |2Gbyteを超えてメモリを利用できるようになります。<br>※SYCLでは使用できません。|
|-shared-intel |インテルが提供するライブラリをすべて動的にリンクします。<br>指定した GPU へのオフロードを有効にするには、-fopenmp-targets を併せて使用します。 |
|-fpic |位置に依存しないコードを生成します。|
|-qopenmp |OpenMP指示子を有効にしてコンパイルします。|
|-O0/-O1/-O2/-O3 |最適化のレベルを指定します(デフォルトは-O2)。|
|-fast |プログラムの実行速度が最大になるように最適化します。-fast オプションにより、次のオプションが付与されます。<br>`-ipo, -O3, -no-prec-div, -static, -fp-model fast=2 -xHost (ifx)` <br>`-ipo, -O3, -static, -fp-model fast=2 (dpcpp, icx, icpx)`|
|-ipo |複数ファイル間で、手続き間の処理を最適化します。|
|-qopt-report |実施した最適化についての情報をYAMLで表示します。|
<!--
(\*1) dpc++, icx, icpx, ifx で使用可
-->
(\*1) icx, icpx, ifx で使用可
## コンパイル例{#sample}
### 逐次プログラム{#serial}
```nohighlight
$ icx test.c # C言語の例
$ icpx test.cpp # C++の例
$ ifx test.f90 # Fortranの例
$ tssrun ./a.out # 実行
```
<!-- $ dpcpp test.cpp # dpc++の例
-->
### OpenMPの利用{#openmp}
OpenMPは、プログラムの並列化のためのオープン規格です。
ソースコードに#pragma ompで始まる指示を書き込み、所定のオプションをつけてコンパイルするだけで、コンパイラに自動で並列化を行わせることができます。
OpenMPへの指示を書き込んだソースコードをコンパイルするには、-qopenmpオプションをつけます。
```nohighlight
$ icx -qopenmp test.c
```
コンパイルしたプログラムを実行する際、--rscオプションでtとcに並列数を指定すると、その並列数でプログラムが実行されます。
```nohighlight
$ tssrun --rsc p=1:t=8:c=8 ./a.out # 並列数8を指定して実行
```
## コンパイル時メッセージ{#compile_message}
Intel コンパイラは、プログラムの誤りや通知すべき情報があるときに、以下に示す形式でメッセージを出力します。
* Intel oneAPI DPC++/C++コンパイラ クラシック
```nohighlight
ファイル名(行番号): XXX #YYY: メッセージ本文
ソースコードの該当行の内容
^
```
* Fortranコンパイラ
```nohighlight
ファイル名(行番号): XXX #YYY: メッセージ本文
ソースコードの該当行の内容
--------------^
```
- XXX : メッセージ種別(error/warning)
- YYY : メッセージの通し番号
- ポインタ(^) : ソースコードの該当行でエラーが発見された正確な場所
**出力例**
* Intel oneAPI DPC++/C++コンパイラ クラシック
```nohighlight
sample.c(27): warning #175: subscript out of range
printf(" %d , %d\n",c[1][0],c[1][10]);
^
```
* Fortranコンパイラ
```nohighlight
sample.f90(26): error #5560: Subscript #2 of the array C has value 20 which is greater than the upper bound of 2
print *, c(1,1),",", c(1,20)
-----------------------^
compilation aborted for sample.f90 (code 1)
```
## 利用可能なライブラリ{#library}
### MPIライブラリ{#mpi_library}
Intel MPIライブラリが利用できます。MPIプログラムのコンパイル、リンク、実行方法については、[Intel MPIライブラリ](/compilers/intelmpi) をご覧ください。
### 数値計算ライブラリ{#numerical_library}
Intelコンパイラを利用する場合、以下の数値計算ライブラリを利用できます。各ライブラリの利用方法については、個別のページをご覧ください。
ライブラリ | システム
- | -
[MKLライブラリ](/compilers/mkl) | +
<!--
[NAGライブラリ](/compilers/nag) | AU
[IMSLライブラリ](/compilers/imsl) | AU
-->
\+ : すべてのユーザが利用可能
AU : 学術研究機関限定で利用可能
\- : 利用不可
## マニュアル{#manual}
* [Intel oneAPI DPC++/C++ Compiler Developer Guide and Reference](https://www.intel.com/content/www/us/en/develop/documentation/oneapi-dpcpp-cpp-compiler-dev-guide-and-reference/top.html)
* [Intel Fortran Compiler Classic and Intel Fortran Compiler Developer Guide and Reference](https://www.intel.com/content/www/us/en/develop/documentation/fortran-compiler-oneapi-dev-guide-and-reference/top.html)