インテル® parallel studio xe 2019 composer …...インテル® parallel studio xe 2019...
TRANSCRIPT
インテル® Parallel Studio XE 2019Composer Edition for Windows
インテル® Fortran コンパイラー 入門ガイド
エクセルソフト株式会社
バージョン 1.00, 2019 年 1 月 30 日
目次1. はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. サンプルプログラムのダウンロード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. インテル® Fortran コンパイラーを使用してコンパイルする . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
コマンドプロンプトからコンパイルする. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Visual Studio* からコンパイルする . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4. Visual Studio 環境からコンパイラーオプションを使用する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1. サンプルプログラムのビルド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2. プロジェクト・プロパティとビルド構成について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.3. プロジェクト・プロパティへのアクセスと設定項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.4. Release でビルド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.5. 自動ベクトル化機能と最適化診断レポートオプション. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.6. 自動並列化オプション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5. Visual Studio を使用してデバッグする . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.1. ブレークポイントの設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.2. デバッグ実行の開始 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.3. デバッグ実行時の操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6. 関連情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.1. 固定形式と自由形式のコードのコンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.2. 64bitアプリケーションの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.3. ランタイムエラーの対処 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.4. ランタイムライブラリーの不足と再配布可能ファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6.5. スタック・オーバーフロー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.6. 2GB以上のデータを扱うアプリケーション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.7. Compaq Fortran との違い. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.8. 本製品付属ドキュメントの参照 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7. お問い合わせ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8. 参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1. はじめにインテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows* (以下、本製品) は、インテル® Fortran コンパイラーと数値演算ライブラリー(インテル® MKL)を含むソフトウェア開発製品です。
本ドキュメントは、インテル® Fortran コンパイラーを使用したコンパイル方法や、最適化オプションの設定、デバッグ手順の説明を目的としてます。これからインテル® Fortran コンパイラーを使い始める方や VisualStudio の操作に慣れていない方を対象としています。
本ドキュメントでは下記の環境を使用します。
項目 構成CPU インテル® Core™ i7-6700 プロセッサーメモリ DDR4-2133 16GBストレージ HDD 1TBOS Windows 10 1803Visual Studio 製品 Visual Studio 2017 バージョン 18.9 (統合済)
本製品をデフォルトの設定でインストールした場合、以下のフォルダーにインストールされます。
C:\Program Files (x86)\IntelSWTools
製品付属の Microsoft* Visual Studio* 2015 Shell や、本製品でサポートされるその他の Visual Studio*製品を使用している場合でも、基本的な操作は変わりません。
※一部に旧バージョンの画像が使用されてます。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 1 / 51
2. サンプルプログラムのダウンロード本製品向けに提供されているサンプルプログラムを使用します。まずは、サンプルプログラムのパッケージをWeb サイトよりダウンロードします。
1. Intel 社の Web サイトにアクセスします。
サンプルプログラムのダウンロードページ(外部ページ)
2. Web サイトから Intel® Parallel Studio XE for Windows* - Sample Bundle の項目を探し、Download をクリックして .zip ファイルをダウンロードします。
図 1. ダウンロード先 Web サイト
3. ダウンロードしたファイルを解凍します。ここではデスクトップに解凍して使用します。
解凍先: C:\Users\<ユーザー名>\Desktop\ipsxe2019_samples_win_20180731
3. インテル® Fortran コンパイラーを使用してコンパイルするインテル® Fortran コンパイラーを使用したコンパイル方法を説明します。 コマンドプロンプトからコンパイルする もしくは Visual Studio* からコンパイルする から使用できます。
ここでは、サンプルコードのうち、以下の optimize_samples フォルダに配置されている int_sin.f90 を対象とします。
<デスクトップ>\ipsxe2019_samples_win_20180731\compiler_f\optimize_samples\src
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 2 / 51
コマンドプロンプトからコンパイルする1. スタートメニューから [Intel Parallel Studio XE 2019 › コンパイラー 19.0 UP1 インテル(R) 64
VS2017 環境] を開きます。異なる Visual Studio を使用している場合は、 VS2017 の表示を対応したVisual Studio バージョンに読み替えてください。
図 2. スタートメニュー
図 3. 表示されるメッセージ
Tips 1. コンパイラー 19.0 UP1 インテル(R) 64 VS2017 環境
起動時に以下のバッチファイルが実行され、インテル® Fortran コンパイラーの実行に必要な環境変数(PATH、LIB、INCLUDE 等)の設定が自動で行われます。
C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019.1.144\windows\bin\compilervars.bat intel64 vs2017
異なる Visual Studio* を使用している場合でも操作手順は同じです。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 3 / 51
2. ifort を入力して Enter キーで実行します。
図 4. ifort コマンドの実行結果
コンパイラーのバージョン情報が表示されていれば、インテル® Fortran コンパイラーが使用可能な状態です。
Tips 2. ifort コマンドの動作
ifort コマンドは、内部でインテル® Fortran コンパイラー(fortcom.exe)を コールしてコンパイル処理を行い、その後マイクロソフト・リンカー(link.exe)をコールしてリンク処理を行います。
3. ソースコードがあるフォルダーに移動します。
図 5. cd コマンドの実行
4. ifort int_sin.f90 を入力して Enter キー で実行します。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 4 / 51
図 6. ifort コマンドでサンプルプログラムをコンパイル
実行ファイル(int_sin.exe)が生成されていることを確認します。
図 7. コンパイルの実行後
5. int_sin.exe を入力して、Enter キー で実行します。計算結果が表示されることを確認します。
図 8. exeファイルの実行
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 5 / 51
Visual Studio* からコンパイルするインテル® Fortran コンパイラーを Visual Studio* 環境で使用する手順を説明します。サンプルプログラムには、既に Visual Studio* 用のプロジェクトファイルが含まれていますが、新規に Visual Studio* のプロジェクトを作成します。
ここでは、サンプルプログラムのうち、以下のフォルダパスに配置されている ipo_samples を対象とします。ipo_samples
<デスクトップ>\ipsxe2019_samples_win_20180731\compiler_f\ipo_samples/src
1. スタートメニューから Visual Studio 2017 を開きます。
図 9. スタートメニューの Visual Studio のアイコン
図 10. Visual Studio の画面
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 6 / 51
2. 上部メニューから、[ファイル › 新規作成 › プロジェクト] を選択して 新しいプロジェクト ウィンドウを表示します。
図 11. 新しいプロジェクトへアクセス
3. 新しいプロジェクト ウィンドウから [インストール済み › インテル® Fortran › コンソール・アプリケーション] を選択して、続いて 空のプロジェクト を選択します。
4. プロジェクトの名前に ipo_sample、プロジェクトを作成する場所は、<デスクトップ>¥ を指定します。OK をクリックします。
図 12. 新しいプロジェクトの設定
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 7 / 51
5. 作成したプロジェクトにソースファイルを追加します。[ソリューション エクスプローラー] から ソースファイル を右クリックし、[追加 › 既存の項目] を選択して 既存項目の追加 ウィンドウを表示します。
図 13. ソースファイルの追加
6. ソースファイルがあるフォルダーに移動し、ipo_sample_main.f90,ipo_sample_init.f90,ipo_sample_sum.f90 を選択して 追加 をクリックします。
図 14. ソースファイルを指定 (Ctrl を押しながら3ファイルをクリック)
プロジェクトの ソースファイル に、3つのソースファイルが追加されたことを確認します。追加した.f90ファイルをダブルクリックすると、コードがエディターに表示されます。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 8 / 51
7. プロジェクトのビルドを行います。Visual Studio* のメニューから、 [ビルド › ipo_sample のビルド] を選択するか、[ソリューション エクスプローラー] のプロジェクトを右クリックして表示されるメニューから、 ビルド を選択します。
図 15. ipo_sample プロジェクトのビルド
ビルド状況が [出力] ウィンドウに表示されます。正常終了していることを確認します。
図 16. ビルド状況の出力
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 9 / 51
8. ビルドしたプログラムを実行します。Visual Studio* のメニューから、[デバッグ › デバッグなしで開始]を選択します。コマンドウィンドウにプログラムの実行結果(1004000)が表示されます。
図 17. デバッグ無しで開始
9. サンプルプログラムの実行ファイルの場所を確認します。[ソリューション エクスプローラー] のソリューションを右クリックして表示されるメニューから、エクスプローラーでフォルダーを開く を選択します。
図 18. フォルダーを開く
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 10 / 51
Debug フォルダー内に、ipo_sample.exe が生成されています。
図 19. 実行ファイル (exe) の配置場所
4. Visual Studio 環境からコンパイラーオプションを使用するインテル® Fortran コンパイラーには、プログラムの高速化を図るための最適化オプションが多数用意されています。その中で代表的な最適化オプションを使用して、実際にサンプルプログラムを使用してそれらの最適化オプションの使用方法とその効果を説明します。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 11 / 51
4.1. サンプルプログラムのビルドサンプルプログラムでは行列の積和演算を行います。データサイズが 1500x1500 の配列 a、b、c を宣言します。a、b、c 配列の初期化後、3 重ループ内で配列 a と b の掛け算結果を、配列 c へ足し込む処理を行います。配列の初期化と行列積和演算の実行時間を dclock 関数を使用して計測して、最後に計算結果と計算時間を表示しています。
リスト 1. サンプルプログラム
program matmul implicit none
integer, parameter :: SIZE = 1500 real,dimension(SIZE,SIZE) :: a,b,c real*8 clock_start, clock_end integer i, j, k real*8 dclock
write (*, '(/,A,I0,/)') "計算開始 : 行列サイズ = ", SIZE
!時間計測の開始 clock_start = dclock()
!配列の初期化 do i=1, SIZE do j=1, SIZE a(j,i) = 1.0 b(j,i) = i c(j,i) = 0.0 end do end do
!計算処理 do i=1, SIZE do k=1, SIZE do j=1, SIZE c(j,i) = c(j,i) + a(k,i) * b(j,k) end do end do end do
!時間計測の終了 clock_end = dclock()
write (*,*) "計算結果 = ", c(SIZE, SIZE)write (*,*) "計算時間 = ", (clock_end - clock_start), "[秒]"write (*,*) ""
end program matmul
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 12 / 51
1. まずは、サンプルプログラムをビルドするために Visual Studio* を起動します。
2. Visual Studio* のメニューから、[ファイル › 新規作成 › プロジェクト] を選択して [新しいプロジェクト]ウィンドウを開きます。
3. [新しいプロジェクト] ウィンドウから [インストール済み › インテル® Fortran › コンソール・アプリケーション] を選択して、続いて 空のプロジェクト を選択します。
ここでは、プロジェクトの名前*に matmul を指定し、プロジェクトの場所は <デスクトップ>¥ としています。設定の完了後、 OK をクリックします。
図 20. 新規プロジェクトの作成
4. 作成したプロジェクトにサンプルプログラムのソースファイルを追加します。[ソリューションエクスプローラー] の [ソースファイル] を右クリックして、[追加 › 新しい項目] を選択します。
図 21. 新しいソースファイルの追加
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 13 / 51
5. Fortran 自由形式ファイル (.f90) を選択します。
6. [名前] に matmul と入力して、[OK] をクリックします。
図 22. matmul.f90 ファイルを作成
7. matmul.f90 ファイルをダブルクリックして、テキストエディターを開きます。エディターにサンプルプログラムのコードをコピーします。
図 23. サンプルコードをコピー
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 14 / 51
8. プロジェクトをビルドします。正常終了することを確認してください。
図 24. matmul プロジェクトのビルド
9. プログラムを実行します。配列のサイズと計算結果、そして計算時間が出力されます。実行環境により計算にかかる時間が異なります。最適化オプションを使用して、ここで得られた計算時間を短縮します。
図 25. 実行結果
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 15 / 51
4.2. プロジェクト・プロパティとビルド構成についてVisual Studio* では プロジェクト・プロパティから最適化オプションを設定します。プロジェクト・プロパティには、プログラムをビルドするために関係する設定が項目別で表示されており、コンパイラーやリンカーはこの設定内容に従って実行ファイルを生成します。
図 26. プロジェクト・プロパティ
プロジェクト・プロパティはビルド構成という単位で管理されています。プロジェクトを新規作成すると、Debug と Relase の名前が付いた2つのビルド構成が作成されます。ビルド構成ごとにプロジェクト・プロパティが用意されており、それぞれのビルド構成で異なるオプションを設定できます。ビルド構成を変更することで、コンパイラー・オプションを一括で切り替えることが可能です。
図 27. ビルド構成の選択
構成 説明Debug 最適化オプションなしで、デバッグオプションあり(デバッグ用途)Relese 最適化オプションありで、デバッグオプションなし(パフォーマンス重視)
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 16 / 51
4.3. プロジェクト・プロパティへのアクセスと設定項目上部メニューから [プロジェクト › <プロジェクト名 › のプロパティ] を選択します。
図 28. プロジェクト・プロパティへのアクセス
プロパティページの内容を確認します。まず、プロパティページの左上に [構成] があります。Debug と表示されているので、Debug のビルド構成のプロジェクト・プロパティを表示しています。
左側は [構成プロパティ] が表示されており、 [Fortran] 以下の項目からインテル® Fortran コンパイラーのオプションを設定します。項目ごとの設定は右側のウィンドウに表示されます。
図 29. Debug のプロジェクト・プロパティページ
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 17 / 51
4.4. Release でビルド1. ビルド構成を Relase に変更してビルド後、実行します。構成を Debug から Relase に切り替えてビルド
します。
図 30. ビルド構成の切り替え
2. プログラムを実行します。実行結果を見ると、Debug の結果と比較して、計算時間が大幅に短縮されています。これは Relase のプロジェクト・プロパティで最適化オプションが設定されているためです。
図 31. Release でビルドされた Matmul の実行
図 32. Debug でビルドされた Matmul の実行
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 18 / 51
Tips 3. Debug と Release で設定されているオプション
Relase と Debug で使用されている最適化オプションを比較すると、[最適化]項目の [最適化] オプションの内容が異なっています。
図 33. Debug構成のプロジェクト・プロパティページ
図 34. Release構成のプロジェクト・プロパティページ
Debug では 無効(/Od) が設定されているのに対して、Relase では 実行速度 となっています。最適化オプションを使用することでプログラムの実行速度が飛躍的に向上する可能性があります。
実行速度 と表記されている設定のコンパイルオプションは /O2 です。Relase に切り替えることで、最適化のコンパイルオプションが /Od → /O2 に変更されたため、最適化されたプログラムが生成されました。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 19 / 51
4.5. 自動ベクトル化機能と最適化診断レポートオプション自動ベクトル化機能によるパフォーマンスへの効果を確認します。
4.5.1. 自動ベクトル化機能と SIMD 演算についてインテル® コンパイラーの自動ベクトル化機能は、SIMD 演算が可能な箇所をソースコードから探し出し、自動でSIMD 演算を使用するベクトル化コードに変換します。SIMD 演算は単一命令で複数のデータを処理できるため、通常のスカラー演算と比べて大幅に実行効率が向上します。
配列 a、b を足して配列 c に格納する処理を max 回繰り返す場合を例にした場合、 スカラー演算では 1 命令で 1 データを扱うので、ループ処理を max 回実行します。一方、SIMD 演算では 1 命令で4つのデータを扱うことができるため、ループ処理を max / 4 回繰り返すだけで完了します。
リスト 2. ベクトル化の対象となる処理
do i = 1, max c(i) = a(i) + b(i)end do
SIMD 演算では以下の特別な演算命令が使用されており、年々 CPU の進化と共に新しい命令が追加されています。
SSE、SSE2、SSE3、SSSE3、SSE.1、SSE4.2、AVX、AVX2、AVX512
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 20 / 51
4.5.2. 使用される命令セットを制御するインテル® コンパイラーの自動ベクトル化機能が使用する命令セットは、コンパイラーオプションで制御できます。
1. プロジェクト・プロパティの [Fortran › コード生成 › 指定された命令セットの専用コード生成] を確認します。
図 35. 使用する命令セットの指定
実行環境に搭載されているプロセッサーが持つ最新の命令セットが推奨されています。開発環境の PC上でプログラムを実行させる場合は、コンパイルを実行しているホスト・プロセッサーと同じ(/QxHost)を選択することで、PC 上で利用可能な命令セットをコンパイラーが調べて、適切なオプションを設定します。ここでは、/QxCORE-AVX2 のオプションが設定されます。
2. コンパイルを実行しているホスト・プロセッサーと同じ(/QxHost) を選択します。
3. 再度ビルドした後、実行して計算時間を確認します。より上位の命令セットを使用することで、計算時間をより短縮することができます。
図 36. 実行結果
命令セットを指定しない場合、 /arch:SSE2 オプションに相当するベクトル化が適用されます。/arch:SSE2オプションは /O2 を選択すると暗黙的に指定されます。自動ベクトル化オプションを明示的に指定することで、このオプションを上書きしています。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 21 / 51
4.5.3. 最適化レポートを確認する自動ベクトル化機能を含むインテル® コンパイラーが行った最適化は最適化診断レポートで確認します。
最適化診断レポートは、コンパイラーによる最適化の結果を表示する機能です。通常、ベクトル化はコード内のループ処理に対して適用されますが、すべてのループ処理がベクトル化されるわけではありません。
最適化診断レポートを使用することによって、どのループがベクトル化されたのか、されなかったのか、またされなかった場合はその理由などを表示することができます。
1. プロジェクト・プロパティより [診断 › 最適化診断レベル] を レベル 2 (/Qopt-report:2) に設定し、また [診断 › 最適化診断フェーズ] を ベクトル化(/Qopt-report-phase:vec) に設定します。
図 37. 最適化レポートを出力するように設定
最適化診断レベルの数字が大きいほど詳細なレポートを表示します。ここではベクトル化の可否などを調べたいので、比較的情報量の少ないレベル2を選択しています。
また、最適化診断フェーズでは、出力するレポートの内容をベクトル化に注目するように指定しています。
2. プロジェクトをビルドします。ビルド後、matmul.f90 ファイルのコード内に、最適化対象となる各ループに対してレポート結果が表示されます。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 22 / 51
図 38. エディターに最適化レポートを表示
初期化処理の内側ループと行列積和演算の内側ループの2箇所がベクトル化されたことが確認できます。ベクトル化できなかったループに対しては、ベクトル化できなかった理由が表示されていることが確認できます。
4.6. 自動並列化オプション自動並列化機能を使用して実行時間を検証します。自動並列化機能を使用することで、マルチコア、マルチプロセッサーなどの複数のコアを持つ環境上で、効果的なプログラムを作成することができます。
1. プロジェクト・プロパティの [Fortran › 最適化 › 並列化] より はい (/Qparallel) を設定して、自動並列化オプションを有効にします。
図 39. 自動並列化の設定
自動並列化機能について、最適化診断レポートオプションを使用して自動並列化機能が適用されているか確認します。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 23 / 51
2. プロジェクト・プロパティより [診断 › 最適化診断レベル] を レベル 2(/Qopt-report:2) に設定し、また [診断 › 最適化診断フェーズ] を 自動並列化(/Qopt-report-phase:par) に設定します。
図 40. 最適化レポートの設定
3. プロジェクトをビルドします。
ビルド後、matmul.f90 ファイルのコード内に、最適化対象となる各ループに対してレポート結果が表示されます。診断レポートを確認すると初期化処理の外側ループ、および行列積和演算の一番外側のループが自動並列化されたことが確認できます。
図 41. 最適化レポートの確認
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 24 / 51
4. プログラムを実行します。結果を見ると数倍に高速化されていることが確認できます。自動並列化を行うことで、処理を複数のコアに分散して計算させることができます。
図 42. 実行結果
プログラムが複数のコアを使用しているか確認する場合には、方法の1つとして「タスクマネージャー」を使用して各コアの使用率を確認します。実行がすぐ終了してしまい使用率の確認が難しい場合は、配列のサイズを増やしてください。
図 43. タスクマネージャーから CPU 使用率を確認
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 25 / 51
5. Visual Studio を使用してデバッグするVisual Studio* を使用した基本的なデバッグ方法を説明します。Visual Studio* からコンパイルする で作成したプロジェクトを使用します。
[ファイル › 開く › プロジェクト/ソリューション] から ipo_sample プロジェクトを開きます。
図 44. ipo_sample プロジェクトを開く
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 26 / 51
5.1. ブレークポイントの設定ブレークポイントとは、プログラムをデバッグ実行したときに、プログラムを一時中断させる箇所です。プログラムの実行を中断させることで、その時点に実行された処理の結果や、変数の値などを確認することができます。
ソースコード上の停止させたい行の左端をマウスでクリックします。ブレークポイントが設定されると、その行に赤いマークが表示されます。
図 45. ブレークポイントの設定
28 行目の配列データの初期化処理を行うサブルーチンを呼び出している処理、call init(a, n) にブレークポイントを設定します。設定したブレークポイントを解除したい場合は、赤いマークをクリックします。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 27 / 51
5.2. デバッグ実行の開始デバッグ実行は、 [デバッグ › デバッグ開始] を選択するか、 F5 を押します。
図 46. デバッグ実行を開始
デバッグ実行が開始されると、 のマークがある行で処理が停止します。
Visual Studio* にデバッグ用のツールバーが追加され、下部に複数のウィンドウが表示されています。ここに表示される機能を使用して、デバッグ作業の操作、データ内容の確認、編集を行います。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 28 / 51
5.3. デバッグ実行時の操作デバッグ実行時は、 ツールバーのボタンから[続行]、[ステップイン]、[ステップオーバー]、[ステップアウト]の4種類の操作を行います。
操作 説明次のブレークポイントまでプログラムを実行します。ブレークポイントがない場合はプログラムの最後まで実行してデバッグ実行を終了します。1行の処理を実行します。モジュールやサブルーチンがコールされる場合は、その処理のコードに進みます。1行の処理を実行します。モジュールやサブルーチンがコールされる場合でも、現在実行中のプログラムの次の行に進みます。現在実行中の関数、またはサブルーチンを抜けて、親関数または親サブルーチンに戻ります。
図 47. デバッグ中の画面
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 29 / 51
1. 30 行目の print 文にブレークポイントを設定してください。
2. を選択します。ブレークポイントを設定した print 文の行までプログラムが実行されて止ま
ります。
図 48. 続行の選択
図 49. 続行の処理後
3.再度 を選択します。以降の実行箇所にはブレークポイントが設定されていないので、プログラムの最後まで実行してデバッグ実行は終了します。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 30 / 51
4. 再度デバッグ実行を開始します。 [デバッグ › デバッグ開始] を選択します。
5. を選択すると、表示されるソースコードが切り替わり、init サブルーチン内の先頭行に進んだことが確認できます。
図 50. ステップインの実行
図 51. ステップインの処理後
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 31 / 51
6. 続けて を選択します。
init サブルーチン内の do 文の行で停止し、この動作で処理を1ステップ実行したことが確認できます。デバッグでは通常、変数宣言の行には止まりません。実際の処理がデバッグ実行の対象になります。
図 52. ステップオーバーの実行
図 53. ステップオーバーの処理後
7. ステップオーバーを再度実行します。
次の行であるループ文の処理内容、つまり配列 a への代入処理に進んだことが確認できます。ステップオーバーを再度実行すると、代入処理を実行して次の行 end do で止まります。さらにステップオーバーを実行すると、代入処理を実行して次の行 end do で止まります。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 32 / 51
図 54. ステップオーバーを続けて実行
8. を選択します。
init サブルーチンを抜けて親関数である main プログラムに戻ります。init サブルーチンの実行を完了して親関数に実行が戻された状態です。
9. デバッグ実行を終了します。その後、再度デバッグ実行を開始します。
前回の手順で設定した call init(a, n) の行で実行が中断され、ウィンドウがいくつか表示されます。デバッグ中に、変数や配列に格納されているデータを確認してみましょう。プログラムの実行中にどのようにデータが変移しているのか、簡単に把握することができます。
10. [ローカル] ウィンドウをクリックして開いてください。
[ローカル] ウィンドウは、プログラムの変数や配列などのデータ内容を表示します。以下の例では、配列A と 変数 RES が表示されており、RES の値は現在まだ不定なのでデフォルト値が表示されています。
図 55. [ローカル]ウィンドウの表示
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 33 / 51
11. ローカルウィンドウ内の配列 A の左側にある をクリックして内容を展開表示します。
内容を確認すると各要素の値はすべてゼロに設定されていることが分かります。
図 56. 配列 A の要素値
12. 表示を元に戻すには、 をクリックします。ローカルウィンドウには変数の型も表示されていることが確認できます。本サンプルプログラムでは REAL(4) が使用されています。
図 57. データ型の確認
13. init サブルーチンの中へステップイン実行します。
14. 続けてステップオーバーを実行して、do 文まで進めます。ローカルウィンドウの表示内容が init サブルーチンで使用される変数に切り替わります。
ここでは引数 N の値が 1000 であることが確認でき、do 文のループ回数が 1000 であることが分かります。また変数 I の値は不定値であることも確認できます。
図 58. 実行中の変数を確認
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 34 / 51
15. 続けてステップオーバー実行して、do 文の処理の中に入ります。不定値であった変数 I の値が更新され、1 になります。ローカルウィンドウでは、更新されたデータの値が赤色で表示されます。このためステップ実行による処理の確認もすることができます。
図 59. 変数が更新されたことを確認
ステップオーバーの実行を何回か続けると、変数 I の値が do 文の実行によって増えている様子が確認できます。配列 A の内容も確認すると各要素の値が更新されている状況を確認できます。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 35 / 51
16. init サブルーチンからステップアウトして main の親関数に戻ります。
17. ソースコード上の変数 a にマウスカーソルを合わせてください。
ポップアップが表示され a 配列の内容が確認できます。ここでは初期化済みの各要素の値が確認できます。この機能を使うとローカルウィンドウを使用せずに、より直観的に、変数や配列のデータ内容を確認することができます。
図 60. 直感的に変数を確認
18. mysum 関数をステップオーバーして print 文まで処理を進めます。デバッグ中に、変数や配列に格納されているデータを編集してみましょう。条件分岐に使用する変数の値を一時的に書き換えたり、簡単なテストケースとして使用したりすることができます。
この print 文では、計算結果である RES の値を出力表示します。現在 RES の値は“1004000”であることが [ローカル] ウィンドウから確認できます。
図 61. 変数の要素を編集
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 36 / 51
19. RES の表示がある行を右クリックして、表示されるメニューから [値の編集] を選択します。
20. 1005000 に変更します。
図 62. 変数の要素を編集
21. ステップオーバーを実行して print 文の処理を実行し、実行結果が 1005000 に変更されていることを確認します。
図 63. 実行結果
これらの操作を活用することで、プログラムの動作を、わかりやすく把握することができます。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 37 / 51
6. 関連情報本製品を使用する上での、その他の基本情報をいくつか説明します。
6.1. 固定形式と自由形式のコードのコンパイルインテル® Fortran コンパイラーは、ファイルの拡張子によりコンパイル方法を決定しています。固定形式/自由形式フォーマットでそれぞれ以下の拡張子が使用されます。
表 1. 対応する拡張子と識別
フォーマット 拡張子固定形式フォーマット .for .f .fpp (例 prog.for prog.f prog.fpp自由形式フォーマット .f90 (例 prog.f90)
Visual Studio* では、上部メニューから ツール › オプション を選択して [オプション] ウィンドウにアクセスします。[インテル(R) コンパイラーおよびツール › Fortran › 全般] に、固定形式と自由形式で使用されるファイルの拡張子が設定されています。もし拡張子を変更/追加したい場合は、この設定内容を編集します。
図 64. 対応する拡張子の設定
また、プロジェクト・プロパティからコンパイルオプションを使用して、コンパイラーに直接指定することもできます。
図 65. プロジェクト・プロパティの設定
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 38 / 51
6.2. 64bitアプリケーションの作成インテル® コンパイラーでは、64 ビットのプログラムを簡単に作成することができます。64bit プログラムでは、2G バイト以上の大きなデータを扱うことができます。また、64 bit プログラムでは 32bit プログラムより高速になる場合もあります。なお、64bit のアプリケーションを実行する場合は、Windows* OS も 64bit である必要があります。
Visual Studio* から作成する場合は、64bit のプログラム作成用の新たなビルド構成を作成します。新しいビルド構成作成は、[構成マネージャー]を通して行います。
[構成マネージャー]のアクセスは、x86 と表示されているボックスを選択して 構成マネージャー を選択します。
図 66. 構成マネージャーへアクセス
構成マネージャーでは アクティブ ソリューション構成 と アクティブソリューション プラットフォーム の項目が表示されます。アクティブ ソリューションプラットフォームの内容に変更を加えます。
図 67. 構成マネージャー
[アクティブ ソリューションプラットフォーム] から <新規作成…> を選択して [新しいソリューション プラットフォーム] ウィンドウを開きます。
図 68. アクティブ ソリューションプラットフォームの変更
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 39 / 51
新しいプラットフォームに x64 の表記があることを確認して OK をクリックし、構成マネージャー画面で 閉じる をクリックして作業を完了します。
図 69. 64bit アプリケーション向けに設定
Visual Studio* のメイン画面に戻ると、x64 が追加されていることが確認できます。
図 70. 64bit アプリケーションのビルド
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 40 / 51
6.3. ランタイムエラーの対処プログラムの実行時にエラーが発生すると Fortran ランタイムシステムがエラーメッセージを表示します。たとえば入力ファイルが見つからなかった場合、以下のようなメッセージが表示されます。
図 71. 実行エラーの例
発生したエラー内容と、ルーチンの呼び出しの流れをさかのぼって表示しますが、メッセージ内容はUnknownと表示された内容が多く、エラー発生箇所を特定することは困難ですが /traceback オプションを使用することで、詳細なメッセージを表示させることができます。
プロジェクト・プロパティから [Fortran › ランタイム › トレースバック情報の生成] より設定します。
図 72. トレースバック情報の生成
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 41 / 51
/traceback オプションを設定してビルド後、プログラムを実行します。/traceback オプションを付加することで問題発生箇所のルーチン名とソースファイル名、またソースコード上の行番号が明記されるため、問題が発生しているコードをすぐに把握することができます
図 73. 実行エラーの例
Visual Studio* 上でこのオプションの設定時に下記の警告が表示されます。 [フレームポインターなし]を いいえ (/Oy-) に設定し、また [インクリメンタル・リンクを有効にする] を いいえ (/INCREMENTAL:NO) に設定してください。この操作を行っていない場合、/traceback オプションは動作しません。
図 74. 警告
Fortran ランタイムシステムが通常検出するエラーに加えて、さらにプログラムの実行時にエラーとしてチェックする項目を追加することができます。プロジェクト・プロパティの [Fortran › ランタイム] には複数のチェック項目が用意されています。
図 75. エラーチェックの設定
[配列と文字列範囲のチェック] を はい にすると、実行中に設定した配列や文字列の大きさを超えてアクセスした場合エラーメッセージが表示されます。[初期化されていない変数のチェック] を はい にすると、未初期化変数に対して書き込みをする前に読み込みを行った時にエラーメッセージが表示されます。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 42 / 51
6.4. ランタイムライブラリーの不足と再配布可能ファイル開発したプログラムを他の PC 上で動作させる場合、下記のエラーが発生する場合があります。これはプログラムが実行するために必要なランタイムライブラリーが不足しているために発生しています。
図 76. ランタイムライブラリーの不足によるエラー画面
この場合、プログラムの実行に必要なランタイムライブラリーを調査する必要があります。画像ではLIBIOMP5MD.DLL が不足していることがわかります。
LIBIOMP5MD.DLL はインテル® Fortran コンパイラーが提供する OpenMP のランタイムライブラリーです。自動並列化機能を使用した場合、そのプログラムの実行に必要となるファイルです。 プログラムを実行するためには、実行に必要な全てのランタイムライブラリーを実行する PC に配置します。
インテル® Fortran コンパイラーでは fredist.txt に再配布可能ファイルの一覧が記載されています。
C:\Program Files(x86)\IntelSWTools\compilers_and_libraries_2018.1.156\licensing\compiler\en
本製品をデフォルトの設定でインストールした場合、インテル® Fortran コンパイラーのランタイムライブラリーを含む再配布可能ファイルは以下のフォルダーに存在します。
32bit プログラム用
C:¥Program Files (x86)¥Common Files¥Intel¥SharedLibraries¥redist¥ia32_win¥compiler
64bit プログラム用
C:¥Program Files (x86)¥Common Files¥Intel¥SharedLibraries¥redist¥intel64_win¥compiler
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 43 / 51
実行 PC 上にランライムライブラリーを配置する場合、実行プログラムと同じフォルダー内かシステム環境変数(PATH)に設定されたフォルダーに配置する必要があります。一般的には実行プログラムと同じフォルダー内に置く方が簡単です。または、インテル®・レジストレーション・センターから、本製品のダウンロードページに表示される「再配布可能ファイルパッケージ」から利用することもできます。
図 77. 再配布パッケージのダウンロード画面
再配布可能ファイルパッケージには下記の2つのファイルが含まれています。
• ww_ifort_redist_ia32_2018.1.156.msi(32bit プログラム実行用)
• ww_ifort_redist_intel64_2018.1.156.msi (64bit プログラム実行用)
再配布可能ファイルパッケージをインストールすると、再配布可能な全てのランタイムライブラリーが以下のフォルダーに格納され、システム環境変数(PATH)にパスが設定されます。
ランタイムライブラリーの配置先
C:¥Program Files (x86)¥Common Files¥Intel¥Shared Libraries¥redist
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 44 / 51
6.5. スタック・オーバーフローここでは、スタック・オーバーフローが発生した場合の解決策を説明します。以下のサンプルコードでは、スタック・オーバーフローが発生します。
リスト 3. スタック・オーバーフローを引き起こすサンプルプログラム
program mainimplicit none
call calc(1000000)
contains subroutine calc(n)integer, intent(in) :: ninteger, dimension(n) :: a, b
a = 4b = 4a = a + b
print *, "sum=", sum(a)end subroutine calc
end program main
このサンプルコードをビルドして実行すると、以下のメッセージが表示されます。
図 78. スタック・オーバーフローの発生
MAIN ルーチンの 3 行目の calc サブルーチンをコールしている箇所でスタック・オーバーフローが発生しています。calc の配列a と配列 b がデフォルトのスタックサイズを超過していることに起因しています。
デフォルトのスタックサイズは通常 1M バイトですが、このサンプルコードは整数型(4 バイト)の配列(a とb)がそれぞれ 1,000,000 要素のデータサイズを宣言しているので合計 8M バイトの容量が必要です。
実行するためには使用可能なスタックサイズを変更する必要があります。Visual Studio* からスタックサイズを変更する場合は、プロジェクト・ プロパティから [リンカー › システム › スタックのサイズの設定] にサイズを設定します。下記の画像では 10M を設定しています。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 45 / 51
図 79. スタックサイズの指定
再度ビルドして実行すると、今度は正常にプログラムが実行されます。
図 80. 実行結果
コマンドプロンプトから指定する場合は、 /F オプションを使用します。
ifort /F10000000 stack_overflow.f90
また、/heap-arrays オプションを使用することで、配列データをスタック領域ではなく動的領域(ヒープ領域)に配置することができます。Visual Studio* 上から設定する場合、プロジェクト・プロパティから [Fortran ›最適化 › ヒープ配列] の値を 0 に設定します。
図 81. プロジェクト・プロパティの設定
もしくは以下のようにコードを修正することでスタック・オーバーフローを回避することができます。 配列 a とb を allocate 文で動的割り当てを行っています。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 46 / 51
リスト 4. スタック・オーバーフローの回避例
program mainimplicit none
call calc(1000000)
contains subroutine calc(n)integer, intent(in) :: ninteger, dimension(:), allocatable :: a, b
allocate(a(n), b(n)a = 4b = 4a = a + b
print *, "sum=", sum(a)end subroutine calc
end program main
6.6. 2GB以上のデータを扱うアプリケーション2G バイトを超す大きなデータを使用する場合は、64 bit のプログラムを作成する必要があります。32bit のプログラムでは使用することはできません。ただし、64 bit のプログラムでも配列の宣言方法によって 2G バイトの制限となるケースがあります。下記のサンプルコードでは整数型(4 バイト)の配列 a を 500,000,000要素宣言しており、合計で約 2G バイトのデータを使用しています。
リスト 5. 実行できないコード例
program bigdata implicit none integer,dimension(500000000) :: a
a(1) = 1
print *, "a(1)=", a(1)end program bigdata
このサンプルを“x64”構成でビルドして実行しても、以下のようなエラーメッセージが表示されます。
これは 32bit、64bit システムに関わらず、静的領域は 2G バイトの制限が Windows* の仕様になっているためです。インテル® Fortran コンパイラーでは配列は静的領域に割り当てるため、2Gバイト以上のデータを使用する場合、配列を動的領域(ヒープ領域)に割り当てる必要があります。サンプルコードでは以下のように配列 a を allocate 文を使用して動的割り当てを行います。
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 47 / 51
リスト 6. 配列の割り当てを変更して修正したコード
program bigdata implicit none integer,allocatable,dimension(:) :: a
allocate(a(500000000)) a(1) = 1
print *, "a(1)=", a(1)
end program bigdata
この変更によりプログラムを実行させることができます。(※ 64 ビットのプログラムを動作させるには、64ビット Windows* OS が必要です)
図 82. 実行結果
なお、動的領域に割り当てられるサイズはシステムに搭載される「実装メモリー」と「仮想メモリー」の大きさに依存します。動的領域に割り当て可能なサイズは、システムの状況により変動する場合がありますが、おおよそ実装メモリーと仮想メモリーの合計となります。実装メモリーと仮想メモリーの合計以上のサイズを使用した場合、実行時にエラーが表示されます。
図 83. 使用可能なメモリーの超過
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 48 / 51
6.7. Compaq Fortran との違いインテル® Fortran コンパイラーは、Compaq* Fortran(CVF)コンパイラーの後継製品であるため CVF コンパイラーに対して非常に高い互換性があります。一般的に CVF のコードはそのままインテル® Fortran コンパイラーでコンパイルすることができますが、場合によって変更や調整が必要になります。CVF コンパイラーから移行する際の注意点は、以下の Intel® 社の記事(英語)に細かく纏められています。
http://software.intel.com/en-us/articles/migrating-from-compaq-visual-fortran
ここでは、その中でも特にコンパイラー動作の違いについて 3 点説明します。
6.7.1. 引数チェック範囲CVF では同一ソースファイル内に限定して引数チェックを行いますが、IVF ではソースファイル間の引数チェックも行うため、CVF ではなかったエラーが IVF で発生するケースがあります。プロジェクト・プロパティから[Fortran › 診断 › ルーチン・インターフェイスのチェック] を いいえ に設定します。
図 84. 引数チェック範囲の設定
6.7.2. ローカル変数の扱いCVF ではローカル変数は静的に扱います。そのため、一度ある関数を抜けた後、再度その関数がコールされた場合、その関数のローカル変数は前回の値を保持しています。また静的扱いの変数は初期値に 0 が自動で設定されます。
この動作を前提に作成されたプログラムは IVF では異なる結果を出力する可能性があります。プロジェクト・プロパティから [Fortran › データ › ローカル変数の格納場所] に /Qsave を設定します。
図 85. ローカル変数の扱いを設定
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 49 / 51
6.7.3. 浮動小数点数演算CVF でコンパイルした場合、浮動小数点数演算に x87 命令を使用しますが、IVF では SSE 命令を使用するため、出力結果や挙動に違いが発生する可能性があります。プロジェクト・プロパティから [Fortran › 浮動小数点 › 浮動小数点モデル] を /fp:source に設定し、また [Fortan › コード生成 › 拡張命令セットを有効にする] を /arch:IA32 に設定します。
6.8. 本製品付属ドキュメントの参照製品付属のドキュメントを参照するには、スタートメニューからアクセスしてください。Getting Started は、リリースノートやサンプルプログラムの紹介、また各種情報サイトへのリンクが貼られています。その他、本製品にバンドルされる数値演算ライブラリー(MKL)へのマニュアルや各種チュートリアルも参照可能です。
コマンドラインからは、/help コマンドにてコンパイラーオプションに関するヘルプが表示できます
図 86. ヘルプの表示
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 50 / 51
7. お問い合わせご質問、ご意見ございましたら以下のお問合せフォームからお問合せください。
お問い合わせ窓口
URL: https://www.xlsoft.com/jp/services/xlsoft_form.html
8. 参考資料インテル® Parallel Studio XE 製品ページ
関連書籍の紹介
インテル® Fortran コンパイラー OpenMP* 活用ガイド
インテル® コンパイラー自動並列化ガイド
日本語環境でのご注意
iSUS - IA Software User Society -(インテル® ソフトウェア開発製品に関する技術情報)
Compaq* Fortran からの移行について
Windows* プログラムのメモリー使用制限について
インテル® Parallel Studio XE 2019 Composer Edition for Windows - インテル® Fortran コンパイラー 入門ガイド
Copyright © 2015-2019 XLsoft Corporation. All Rights Reserved. 51 / 51