---
title: 'Intel oneAPI DPC++/C++コンパイラ'
visible: false
---
[toc]
## 利用環境{#enviroment}
### 利用できるバージョン・システム{#version}
バージョン | システムA | システムB | システムC | システムG | クラウド | 備考
-------- | ----------- | ----------- | ----------- | ---- | ----- | ----- | -----
2022.1.2 | + | + | + | - | + | Intel oneAPI 2022
### 環境設定{#modules}
| バージョン | moduleファイル名 |
| --- | --- |
| 2022.1.2 (default) | intel/2022 |
システムにログインした時点で、Intelコンパイラがデフォルトで設定されています。
```nohighlight
$ module list
Currently Loaded Modulefiles:
x) SysB/2022 x) PrgEnvIntel/2022 x) intel/2022
```
ログイン時に自動で環境設定を行いたい場合は、ログインシェルの起動ファイルに必要なmoduleコマンドを記述してください。詳細は[環境設定](/config)をご覧ください。 moduleコマンドの詳細は[Modules](/config/modules)をご覧ください。
## コンパイル方法
### コマンド
| 言語 | コマンド | 実行形式 |
| --- | --- | --- |
| DPC++ | dpcpp | dpcpp [オプション] ファイル名 |
| C | icx | icx [オプション] ファイル名 |
| C++ | icpx | icpx [オプション] ファイル名 |
### オプション
| オプション名 | 説明 |
| --- | --- |
| -o FILENAME | オブジェクトファイルの名前を指定します。 |
| -mcmodel=medium | 2Gbyteを超えてメモリを使用できるようになります。<br>※SYCLでは使用できません。 |
| -shared-intel | インテルが提供するライブラリをすべて動的にリンクします。 |
| -fpic | 位置に依存しないコードを生成します。 |
| -qopenmp | OpenMP指示子を有効にしてコンパイルします。<br>指定した GPU へのオフロードを有効にするには、-fopenmp-targets を併せて使用します。 |
| -O0/-O1/-O2/-O3 | 最適化のレベルを指定します(デフォルトは-O2) |
| -fast | プログラムの実行速度が最大になるように最適化します。-fastオプションにより、次のオプションが付与されます。<br>-ipo, -O3, -static, -fp-model fast=2 |
| -ipo | 複数ファイル間で、手続き間の処理を最適化します。 |
| -qopt-report | 実施した最適化についての情報をYAMLで出力します。 |
| -qopt-report-file=KEYWORD | 実施した最適化についての情報を、ファイル(filename) / 標準エラー出力(stderr) / 標準出力(stdout)に出力します。 |
## コンパイル例{#sample}
### 逐次プログラム{#serial}
```nohighlight
$ dpcpp test.cpp # dpc++の例
$ icx test.c # C言語の例
$ icpx test.cpp # C++の例
$ tssrun ./a.out # プログラムの実行
```
### OpenMPの利用{#openmp}
OpenMPは、プログラムの並列化のためのオープン規格です。 ソースコードに#pragma ompで始まる指示を書き込み、所定のオプションをつけてコンパイルするだけで、コンパイラに自動で並列化を行わせることができます。
OpenMPへの指示を書き込んだソースコードをコンパイルするには、-qopenmpオプションをつけます。
```nohighlight
$ icx -qopenmp test.c
```
コンパイルしたプログラムを実行する際、-Aオプションでtとcに並列数を指定すると、その並列数でプログラムが実行されます。
```nohighlight
$ tssrun -A p=1:t=8:c=8 ./a.out # 並列数8を指定して実行
```
## マニュアル{#manual}