主な機能 命令セット名
1999 70
命令、単精度ベクトル、ストリーミング操作 SSE
2000 144
命令、倍精度ベクトル、
8/16/32/64/128ビット整数
ベクトル SSE2
2004 13
命令、複素数データ SSE3
2006 32
命令、デコード SSSE3
2007 47
命令、ビデオ・アクセラレータ、グラフィック操作、
高度なベクトル命令 SSE4.1
2009 7
命令、パックド比較とポピュレーション・カウント命令 SSE4.2
2011 12
命令、浮動小数点数オペランドを
256ビット幅に拡張
いくつかの命令は3オペランドを持つ AVX
第
4世代
Coreプロセッサーファミリー(開発コード名
Haswell)
AVX2, FMA
(
Fused Multiply-Add)
2013
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
39
インテル ® AVX の利点
AVX 命令 256 ビット( YMM レジスタ)
8x float(32-bit) 4x double (64-bit)
4x float(32-bit)
SSE 命令
128 ビット( XMM レジスタ)
2x double(64-bit)
4x float(32-bit) 2x double(64-bit)
l SIMD
演算用のレジスタ幅が
256bitになり、浮動小数点数の演算効率が倍に
インテル
®コンパイラーでは、ベクトル化可能なコードであれば、コンパイル
オプションを変更して再コンパイルするのみで AVX を利用可能
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
40
自動ベクトル化(オプション一覧)
n
インテル
®プロセッサー専用コード+汎用コードの生成オプション
Windows: /Qax<Code> 例) /QaxSSSE3
/QaxSSE3,AVX※
専用コードの生成が有益であると判断された場合、専用コードのパスと
自動ディスパッチャーが追加され、実行されるコードがランタイムで決定される
※ 汎用コードのデフォルトは /arch:SSE2 (Windows) と等価※ 汎用コードは /arch または /Qx (Windows) で指定したコードとなる
-O2
以上の最適化 オプションが必須
n
インテルおよびインテル互換プロセッサー用オプション
Windows: /arch:<Code> 例) /arch:SSE2
※ 実行時に CPU をチェックしない
n
インテル
®プロセッサー専用オプション
Windows
:
/Qx<Code>例)
/QxAVX※ インテル® プロセッサーに固有の最適化が有効になる
※
実行時に
CPUをチェックし、サポート外
CPU上では動作しない
<Code> : SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX CORE-AVX-I CORE-AVX2
Ø /QxHost
コンパイルを実行しているマシン
に適したコードを生成
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
41
自動ベクトル化(コンパイル例−その1)
デフォルトオプション:
/arch:SSE2(
Windows)
・
O2以上の最適化オプションが使用された場合は暗黙的にオンとなる。
(
Windows)
> ifort main.f90(
Windows)
> ifort /QxSSE4.2 main.f90(
Windows)
> ifort /QaxSSE4.2 main.f90/O2 オプションがデフォルトなので、/arch:SSE2
のコードが生成される。
SSE4.2 命令に特化された、インテル® プロセッサー専用コードが生成される。
SSE4.2
命令が搭載されていないプロセッサーでは動作しない。
コンパイラーが SSE4.2 コードの生成を有益と見なした場合、SSE4.2 コード
と汎用コードとして /arch:SSE2 コードが生成される。そうでない場合は、汎
用コードのみを生成。
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
42
自動ベクトル化(コンパイル例−その2)
(
Windows)
> ifort /QaxAVX /QxSSE4.1 main.f90(
Windows)
> ifort /QaxAVX /arch:SSE3 main.f90(
Windows)
> ifort /QaxAVX,SSE4.1 /arch:SSE3 main.f90コンパイラーが AVX コードの生成を有益と見なした場合、AVX コードと汎用 コードとして /QxSSE4.1 コードが生成される。そうでない場合は、汎用コー ドのみを生成。
コンパイラーが AVX コードの生成を有益と見なした場合、AVX コードと汎用 コードとして /arch:SSE3 コードが生成される。そうでない場合は、汎用コー ドのみを生成。
コンパイラーが AVX や SSE4.1 コードの生成を有益と見なした場合、AVX や
SSE4.1
コードと汎用コードとして
/arch:SSE3コードが生成される。そうでな
い場合は、汎用コードのみを生成。
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
43
自動ベクトル化(結果レポート)
オプション:
/Qvec-report[n] n : 0 〜 6
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
44
自動ベクトル化(プロパティ ページ)
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
45
自動並列化
l コンパイラーがループ文に対して、マルチスレッドへの変換を 試みます。
l マルチスレッドを安全に実装でき、また効率的だと判断された 場合に適用される。
l 実装は、 OpenMP* の並列化モデルが使用される。
オプション: /Qparallel レポートオプション:
/Qpar-report[n] n : 0 〜 3
※ n
は表示レベル、
3が最も詳細なレポートを表示。
しきい値設定オプション:(効率性の診断レベル)
/Qpar-threshold[n] n : 0 〜 100
※ n
の数字を小さくすれば並列化の可能性が高くなるが、逆にパフォーマンスが 落ちる可能性もある。
※
デフォルトのしきい値は最高レベルの
100に設定され高い効率性を要求される。
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
46
自動並列化(プロパティ ページ)
47
〜 内容 〜
1. 製品概要
2. インストールについて 3. ビルドと開発環境
4. コマンドラインからのビルド手順
5. Visual Studio からのビルドおよび実行手順
6. Visual Studio からのデバッグ方法 7. 最適化オプションと使用方法
8. Compaq Visual Fortran からの移行に関して
9. Visual Studio ソースエディター拡張機能
10. 関連情報と参考資料のご紹介
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
48
Compaq* Visual Fortran との違い(その1)
Compaq : 単一ソースファイル内における、サブルーチン
および関数の引数チェック
Intel :複数のソースファイル間における、サブルーチン
および関数の引数チェック
Compaq* Visual Fortran
コンパイラーの動作に合わせる場合は、以下のインテル
®Fortran
コンパイラーのオプションを 無効 にする。
オプション:
/warn:interfaces© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
49
Compaq* Visual Fortran との違い(その2)
Compaq :ローカル変数は静的変数扱い、ゼロ初期化
Intel :ローカル変数は自動変数扱い、初期値未定
Compaq* Visual Fortran
コンパイラーの動作に合わせる場合は、以下のインテル
®Fortran
コンパイラーのオプションを 有効 にする。
オプション:
/Qsave /Qzero© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
50
Compaq* Visual Fortran との違い(その3)
Compaq :浮動小数点演算は、 ”X87” 命令を使用
Intel :浮動小数点演算は、 ”SSE” 命令を使用
Compaq* Visual Fortran
コンパイラーの動作に合わせる場合は、以下のインテル
®Fortran
コンパイラーのオプションを 試して みる。
浮動小数点モデル オプション:
/fp:source X87命令の使用 オプション:
/arch:IA32© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
51
Compaq* Visual Fortran のプロジェクト変換
Compaq Visual Fortran 6.x プロジェクトから
インテル ® Visual Fortran プロジェクトへの変換
※
ただし、この変換機能は
Microsoft* Visual Studio* 2010 Shellでは使用できない。
その場合は、新規にプロジェクトを作成する必要がある。
52
〜 内容 〜
1. 製品概要
2. インストールについて 3. ビルドと開発環境
4. コマンドラインからのビルド手順
5. Visual Studio からのビルドおよび実行手順
6. Visual Studio からのデバッグ方法 7. 最適化オプションと使用方法
8. Compaq Visual Fortran からの移行に関して
9. Visual Studio ソースエディター拡張機能
10. 関連情報と参考資料のご紹介
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
53
ソースコードの行番号表示
Visual Studio
メニューから
[ツール
] > [オプション
]ソースコードの行番号表示
はこれをチェック
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
54
Visual Studio ソースエディタ拡張機能の有効化
Visual Studio
メニューから
[ツール
] > [オプション
]True
に設定する。
(
※データベースの無効化以外)
ここは
False© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
55
「定義へ移動」と「すべての参照の検索」
対象を右クリック
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
56
ブロック構文記述子のマッチング
IF … THEN … END IF
や
DO … END DOの ブロック構文の記述子をクリックする とそれに対応した記述子がハイライト される。
Ctrl + ]
を押下すると、カーソルが
対応する記述子にジャンプする。
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
57
オブジェクト ブラウザー
Visual Studio
メニューから
[表示
] > [オブジェクト ブラウザー
]プロジェクト内のすべてのプロシージャ をツリー表示する。
ダブルクリックしてそのプロシージャに
ジャンプする。
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
58
構文ひな型の挿入
コード内を右クリックして「スニペットの挿入」
挿入したい構文を選択
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
59
組み込み関数情報の表示
組み込み関数に続いて
”(”を入力すると、
引数情報をポップアップ表示する。
組み込み関数の上にマウスを合わせると
関数情報をポップアップ表示する。
© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です
60