---
title: 'Intelコンパイラ クラシック'
---
[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) slurm x) SysB/2022 x) intel/2022.3 x) PrgEnvIntel/2022
```
<!--
コンパイラのバージョンは、上表に記載のデフォルトのバージョンが設定されています。
Intelコンパイラのバージョンを切り替えたい場合は、PrgEnvIntel がロードされている状態で、以下のようにmoduleコマンドを実行してください。
```nohighlight
$ module switch intel/2022 intel/2019
```
ログイン時に自動で環境設定を行いたい場合は、ログインシェルの起動ファイルに必要なmoduleコマンドを記述してください。詳細は [環境設定](/config) をご覧ください。
moduleコマンドの詳細は [Modules](/config/modules) をご覧ください。
-->
## コンパイル方法{#usage}
### コマンド{#command}
| 言語 | コマンド | 実行形式 |
| - | - | - |
| C | icc | icc [オプション] ファイル名 |
| C++ | icpc | icpc [オプション] ファイル名 |
| Fortran | ifort | ifort [オプション] ファイル名 |
### オプション{#option}
|オプション名 |説明|
|-|-|
|-o FILENAME |オブジェクトファイルの名前を指定します。|
|-mcmodel=medium |2Gbyteを超えてメモリを利用できるようになります。|
|-shared-intel |インテルが提供するライブラリをすべて動的にリンクします。 |
|-fpic |位置に依存しないコードを生成します。|
|-qopenmp |OpenMP指示子を有効にしてコンパイルします。|
|-parallel | 自動並列化を行います。 |
|-O0/-O1/-O2/-O3 |最適化のレベルを指定します(デフォルトは-O2)。|
|-fast |プログラムの実行速度が最大になるように最適化します。-fast オプションにより、次のオプションが付与されます。<br>`-ipo, -O3, -no-prec-div, -static, -fp-model fast=2 -xHost `|
|-ip |単一ファイル内で、手続き間の処理を最適化します。 |
|-ipo |複数ファイル間で、手続き間の処理を最適化します。|
|-qopt-report |実施した最適化についての情報を表示します。|
#### 2GB以上のメモリを使う場合のオプション
2GB以上のメモリを使うプログラムをコンパイルする場合は、以下のオプションを指定してください。 <br>
`-mcmodel=medium -shared-intel`
## コンパイル例{#sample}
### 逐次プログラム{#serial}
```nohighlight
$ icc test.c # C言語の例
$ icpc test.cpp # C++の例
$ ifort test.f90 # Fortranの例
$ tssrun ./a.out # 実行
```
### 自動並列化の利用{#auto_parallel}
```nohighlight
$ ifort -parallel test.f90
$ tssrun --rsc p=1:t=4:c=4 ./a.out # 並列数4を指定して実行
```
### OpenMPの利用{#openmp}
OpenMPは、プログラムの並列化のためのオープン規格です。
ソースコードに#pragma ompで始まる指示を書き込み、所定のオプションをつけてコンパイルするだけで、コンパイラに自動で並列化を行わせることができます。
OpenMPへの指示を書き込んだソースコードをコンパイルするには、-qopenmpオプションをつけます。
```nohighlight
$ icc -qopenmp test.c
```
コンパイルしたプログラムを実行する際、--rscオプションでtとcに並列数を指定すると、その並列数でプログラムが実行されます。
```nohighlight
$ tssrun --rsc p=1:t=8:c=8 ./a.out # 並列数8を指定して実行
```
## コンパイル時メッセージ{#compile_message}
Intel コンパイラは、プログラムの誤りや通知すべき情報があるときに、以下に示す形式でメッセージを出力します。
### C/C++{#message_c}
```nohighlight
ファイル名(行番号): XXX #YYY: メッセージ本文
ソースコードの該当行の内容
^
```
- XXX : メッセージ種別(error/warning)
- YYY : メッセージの通し番号
- ポインタ(^) : ソースコードの該当行でエラーが発見された正確な場所
**出力例**
```nohighlight
sample.c(27): warning #175: subscript out of range
printf(" %d , %d\n",c[1][0],c[1][10]);
^
```
### Fortran{#message_fortran}
```nohighlight
ファイル名(行番号): XXX #YYY: メッセージ本文
ソースコードの該当行の内容
--------------^
```
- XXX : メッセージ種別(error/warning)
- YYY : メッセージの通し番号
- ポインタ(^) : ソースコードの該当行でエラーが発見された正確な場所
**出力例**
```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コンパイラを利用する場合、以下の数値計算ライブラリを利用できます。各ライブラリの利用方法については、個別のページをご覧ください。
ライブラリ | システムA | システムB | システムC | システムG | クラウド
- | -
[MKLライブラリ](/software/mkl) | + | + | + | - | +
<!--
[NAGライブラリ](/compilers/nag) | AU
[IMSLライブラリ](/compilers/imsl) | AU
-->
\+ : すべてのユーザが利用可能
AU : 学術研究機関限定で利用可能
\- : 利用不可
## マニュアル{#manual}
- [Intel C++ Compiler Classic Developer Guide and Reference](https://www.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-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)